野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17162|回复: 3

[emWin] 提高Graph控件曲线显示速度的方法

[复制链接]
发表于 2020-4-9 00:17:53 | 显示全部楼层 |阅读模式
本帖最后由 ZZZ_XXJ 于 2020-4-12 11:17 编辑

教程里Graph控件的用法是添加一个点的数据就刷新一次,像这样:
  1. GRAPH_DATA_YT_AddValue(Graphdata, ADC_ConvertedValue/11);
  2. GUI_Delay(30);
复制代码


这样显示出来的曲线刷新速度看起来比较缓慢
(但是官方例程同样的写法就很快)如果我们换一种方式,把整个Graph控件宽度的数据全部添加进去之后再显示出来,其实是可以提高曲线速度的。
比如Graph控件的宽度有600,那就一次性添加600个点的数据进去再执行显示,就像这样:
  1. for (int i = 0; i < 600; i++)
  2. {
  3.         GRAPH_DATA_YT_AddValue(Graphdata, Value[i]);
  4. }
  5. GUI_Delay(10);
复制代码
这种方式可以在一定程度上提高曲线的刷新速度,为什么只能一定程度上呢?因为在这种实现方式下,曲线刷新速度取决于MCU的性能,对于F407来说有一些提升,不过看起来不算太明显,而对于H743,这种方式可以获取非常大的提升。


下面是我分别在F407、F429和H743上测试的情况,全部都用的添加完再显示的方式,采集的是杂波:
(动图较大,可能加载慢)

F407:
F407-zabo.gif


F429
F429_zabo.gif


H743
H743-zabo.gif


这个是接示波器1KHz方波的情况:
H743-1khz.gif

可以看到,MCU性能不同,提升的幅度也不同。

对了,最后再插一句,如果大家有人在F103或F407上用Graph控件的时候闪的厉害,就是连刻度线都闪的那种,可以在GUI_Init函数前加上这一句:WM_SetCreateFlags(WM_CF_MEMDEV),就能解决Graph控件闪烁的问题。


回复

使用道具 举报

发表于 2020-4-10 19:43:20 | 显示全部楼层
回复

使用道具 举报

发表于 2020-10-29 13:55:17 | 显示全部楼层
实时数据采集时X轴是事件这时刷新慢会导致刻度和实际对不起来,怎么办啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-6 08:59:14 | 显示全部楼层
lw1214 发表于 2020-10-29 13:55
实时数据采集时X轴是事件这时刷新慢会导致刻度和实际对不起来,怎么办啊

文字描述提供的信息太少,看不出你具体是怎么实现的,能详细说说嘛?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 04:24 , Processed in 0.038699 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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