关于串口接收数据实时显示和线程安全队列接收数据显示
本帖最后由 ssmyjiob 于 2019-1-21 17:28 编辑实现要求:
出现问题:①、发现串口读取的速度太快,,写入安全队列的速度也很快,但是另一个线程中的安全队列数据读取太慢,所以显示的解析结果有延时。
针对两种方案,我选择了第二种方案,但是对于发现的问题有没有人遇见同样的问题的,予以指导,谢谢!
方案1加一个界面处理的函数,那个函数叫什么一下不记得,好像在面板里面 方案2这种生产消费者模式应该是很合理的,只是为什么会慢这个要具体看程序 cvifan 发表于 2018-8-28 14:52
方案1加一个界面处理的函数,那个函数叫什么一下不记得,好像在面板里面
ProcessSystemEvents();
ProcessDrawEvents ();
cvifan 发表于 2018-8-28 14:53
方案2这种生产消费者模式应该是很合理的,只是为什么会慢这个要具体看程序
慢的情况我测试了一下,当下位机每50ms发送一包数据,一包19个字节的时候,不管是安全队列读写还数据处理显示都能正常运行,没有问题。当发送时间小于50ms的时候,串口可以正常及时接收到数据,然后写入安全队列,另一个线程在while(flag)循环里面一直读取安全队列的数据,发现读取完成后处理显示跟不上串口接收的脚步,初步怀疑是安全队列读写时间没有设置正确,最后设置为1ms的时候,仍然发现显示的速度慢于串口接收,不能完全达到实时显示。所以推测是cvi本身已经达到接收的极性范围。因为同样的下位机程序使用目前比较常用的串口调试助手也发现能够实现数据的接收但是在对界面控件操作的时候也出现卡顿现象。目前我用的下位机上传模式是:上位机发送一条指令,下位机一直快速传输数据。所以上位机需要能够快速及时的接收显示数据结果。不知道我分析的对与不对,如果由同样类似问的人,你是怎么解决的,谢谢指导分享,共同进步。
http://www.cpubbs.com/Bbs/forum.php?mod=viewthread&tid=503997&extra=
页:
[1]