串口通信,CEdit控件显示数据,延迟严重!

mikilin123 2015-11-02 06:26:54
本人想实习一个串口助手的功能,用的是CSerialPort类做的串口助手,,现在有个问题:
一个com口使用现成的串口软件,波特率在115200时,10ms重复发送,
另一个用自制的串口接收并把数据现在Cedit控件上,感觉延迟很明显啊!
请问如何能近似的保证显示数据和接收数据的同步?有什么好的思路吗?
谢谢!分比较少,请多包涵
...全文
239 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2015-11-05
  • 打赏
  • 举报
回复
// 串口通讯另开一个线程 // 收到数据通知UI更新
worldy 2015-11-05
  • 打赏
  • 举报
回复
115200这个速度下,串口传输失败的几率很大,
Tracy_bu 2015-11-05
  • 打赏
  • 举报
回复
不用edit,打印就可以
mikilin123 2015-11-04
  • 打赏
  • 举报
回复
引用 4 楼 cvbtvbwu 的回复:
http://blog.csdn.net/cvbtvbwu/article/details/24694739 试试这个
你好,你的软件是用VS编的吗? 版本是多少的?
辅_ 2015-11-04
  • 打赏
  • 举报
回复
楼主的接收数组多大? 将数组大小设置为512,接收后就开始显示,然后后台继续接收, 将一次性大的数据分次接收再显示
mfmfmmf1 2015-11-03
  • 打赏
  • 举报
回复
SetTimer当然不是另开一个线程 甚至程序任何一个地方停了,比如弹个模态提示框,计时器就不工作了
mikilin123 2015-11-03
  • 打赏
  • 举报
回复
引用 5 楼 mfmfmmf1 的回复:
我怀疑你是显示的问题 你先测试一下你的显示刷新率是多少 static x=0 每刷新一次x++ 每10ms刷新一次 并显示x的值 看看10秒内x的值到达1000没有 如果没有,就是你的计时器不行 因为MFC自带的setTimer计时器是阻塞的 所以我估计10秒x的值顶多也就300~400吧!
我把CEdit改成CRichEdit感觉数据显示快多了,数据个数基本上差不多,但是一帧数据中有丢失, SetTimer是不是也开了个线程哦,这CSerialPort本身的不是互斥的?有这可能吧
mikilin123 2015-11-03
  • 打赏
  • 举报
回复
引用 9 楼 wxhxj0268 的回复:
显示永远落后于数据采集,这个问题勿用置疑!
表示理解。
笨笨仔 2015-11-03
  • 打赏
  • 举报
回复
显示永远落后于数据采集,这个问题勿用置疑!
mikilin123 2015-11-03
  • 打赏
  • 举报
回复
引用 4 楼 cvbtvbwu 的回复:
http://blog.csdn.net/cvbtvbwu/article/details/24694739 试试这个
可以,正好测下,现在下载不了。。郁闷 等晚上的看下
mikilin123 2015-11-03
  • 打赏
  • 举报
回复
引用 5 楼 mfmfmmf1 的回复:
我怀疑你是显示的问题 你先测试一下你的显示刷新率是多少 static x=0 每刷新一次x++ 每10ms刷新一次 并显示x的值 看看10秒内x的值到达1000没有 如果没有,就是你的计时器不行 因为MFC自带的setTimer计时器是阻塞的 所以我估计10秒x的值顶多也就300~400吧!
谢啦,等会我再研究下!
mfmfmmf1 2015-11-03
  • 打赏
  • 举报
回复
另外,处理数据接收要另开一个工作线程 用某个全局变量来接收 而不要放在窗口类的成员函数里处理 窗口类是阻塞的,延迟的,非线程安全的
mfmfmmf1 2015-11-03
  • 打赏
  • 举报
回复
我怀疑你是显示的问题 你先测试一下你的显示刷新率是多少 static x=0 每刷新一次x++ 每10ms刷新一次 并显示x的值 看看10秒内x的值到达1000没有 如果没有,就是你的计时器不行 因为MFC自带的setTimer计时器是阻塞的 所以我估计10秒x的值顶多也就300~400吧!
叶恭介叶恭介 2015-11-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/cvbtvbwu/article/details/24694739 试试这个
mikilin123 2015-11-03
  • 打赏
  • 举报
回复
引用 1 楼 u011001084 的回复:
肯定是数据处理导致速度慢 循环会造成延迟 注意不要有太多的数据的处理代码
数据处理我也没做什么,就是用Cedit显示很费时间,我看了网上也一些别的说法, 我就是想Cedit控件能不能满足这种大量数据快速的显示要求,目前还没有好的办法; 还有你说的多线程我也想了,我想显示单开一个线程,但是感觉只要用了CEdit控件,显示感觉 怎么都快不起来。。? 不知道你是怎么处理的?多谢
编程小小鸟 2015-11-03
  • 打赏
  • 举报
回复
计算数据很大时,用线程最好了,计算量一大,向Cedit控件写数据,一定延时,
ArthurKingYs 2015-11-03
  • 打赏
  • 举报
回复
换个思路 115200的波特率 10ms 的数据量又大 速度又快 可以直接先把数据存到数据库中 再做显示什么的
ArthurKingYs 2015-11-02
  • 打赏
  • 举报
回复
还有多线程的使用 可能好一点
ArthurKingYs 2015-11-02
  • 打赏
  • 举报
回复
肯定是数据处理导致速度慢 循环会造成延迟 注意不要有太多的数据的处理代码

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧