硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2372|回复: 6
收起左侧

[emWin] 怎么显示瞬时波形???

[复制链接]

20

主题

110

回帖

170

积分

初级会员

积分
170
发表于 2018-8-8 16:02:22 | 显示全部楼层 |阅读模式
用Graph控件试了下,目前只知道这控件的曲线是添一个新点就画一个点,旧的往左移。
而我想做的效果是多个点同时显示出来。ADC采集音频信号的多个数据,同时显示出的瞬时波形。
还能有什么方法?
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2018-8-8 16:09:09 | 显示全部楼层
使用循环,一次性把所有点都输进去,然后界面刷新的时候,就一次性显示出来了。
for(i=0;i<200;i++)  //示波器实测,此循环耗时30ms
         {
                 GRAPH_DATA_YT_AddValue(User1_Graph_hData,GraphicDataValue[i]);
               
         }

评分

参与人数 1金币 +20 收起 理由
飛饵 + 20 很给力!

查看全部评分

回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-8-8 16:59:17 | 显示全部楼层
caicaptain2 发表于 2018-8-8 16:09
使用循环,一次性把所有点都输进去,然后界面刷新的时候,就一次性显示出来了。
for(i=0;i

出了点小问题,这方法效果出来了。但切换到其他界面就死机了,清除了对象数据也不管用,不知道哪里的问题。其他界面互切没问题,只要波形切出去就死机。栈大小已经设置了2.5KB
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-8-8 19:03:15 | 显示全部楼层
caicaptain2 发表于 2018-8-8 16:09
使用循环,一次性把所有点都输进去,然后界面刷新的时候,就一次性显示出来了。
for(i=0;i

刚刚发现是重启DMA的时候就死机了。我用DMA传ADC数据
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-8-8 19:05:11 | 显示全部楼层
飛饵 发表于 2018-8-8 16:59
出了点小问题,这方法效果出来了。但切换到其他界面就死机了,清除了对象数据也不管用,不知道哪里的问题 ...

此函数在emWin自带的定时器回调函数里面调用就行,方便统一管理。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-8-8 20:09:42 | 显示全部楼层
eric2013 发表于 2018-8-8 19:05
此函数在emWin自带的定时器回调函数里面调用就行,方便统一管理。

谢谢,解决了。之前重启放在WM_PAINT里造成死机。
还有个问题,怎么加大波形每个点的距离,类似x轴缩放那种。我只有200个数据要显示。GRAPH_DATA_YT_Create()里设置最大320的话有部分波形又是重复的。 QQ截图20180808200141.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-8-9 01:17:08 | 显示全部楼层
飛饵 发表于 2018-8-8 20:09
谢谢,解决了。之前重启放在WM_PAINT里造成死机。
还有个问题,怎么加大波形每个点的距离,类似x轴缩放 ...

Graph控件不支持,你仅需修改你的采样率实现缩放即可,比较省事。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 06:28 , Processed in 0.255287 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表