LabVIEW

 找回密码
 注册

扫一扫,访问微社区

查看: 160|回复: 6

[求助贴] 串口接收数据并在textbox显示,多线程应用

[复制链接]
发表于 2020-9-2 15:43:02 | 显示全部楼层 |阅读模式
USB-6009数据采集卡首发
编写上位机程序,与单片机通信,接口位232,发现如果收到数据后在串口回调中,读取输入队列并在textbox显示不行,会死机丢数。考虑使用多线程,还是有问题,设计思路如下
1串口回调中读取数据,并写入安全队列,置为辅助线程处理标志
2辅助线程中判断标志,如果置位,说明已经完成一次接收,在此读取安全队列数据,并将数据显示到textbox
实际测试发现,数据量大时还是会产生死机,再串口回调中死,提示超过串口缓存的数组了。
求指点呀
IDAQ-USB-6009数据采集卡
发表于 2020-9-4 09:41:59 | 显示全部楼层
在线课堂
及时清除串口缓存,数组缓存试一下
 楼主| 发表于 2020-9-4 21:58:08 | 显示全部楼层
ssmjob 发表于 2020-9-4 09:41
及时清除串口缓存,数组缓存试一下

应该在哪清缓存呀?这种现象感觉是处理函数执行过久导致的,如果不执行,只是从串口读取,不用多线程都没有问题。而现在执行仅仅是写在textbox,后面还想画图啥的,更耗时间啦。要是清空缓存,可能会存在没有执行完,缓存里其实还有数没有读出来把?
发表于 2020-9-8 13:19:52 | 显示全部楼层
aprilhome 发表于 2020-9-4 21:58
应该在哪清缓存呀?这种现象感觉是处理函数执行过久导致的,如果不执行,只是从串口读取,不用多线程都没 ...

用多线程和安全队列吧
 楼主| 发表于 2020-9-8 15:23:28 | 显示全部楼层
ssmjob 发表于 2020-9-8 13:19
用多线程和安全队列吧

就是用了多线程和安全队列了。
现在就是搞不清楚,串口回调函数是不是在主线程里的呀?我在主线程打开的串口。

发表于 2020-9-10 11:24:44 | 显示全部楼层
aprilhome 发表于 2020-9-8 15:23
就是用了多线程和安全队列了。
现在就是搞不清楚,串口回调函数是不是在主线程里的呀?我在主线程打开的 ...

正常是可以的,具体不知道你怎么做的
发表于 2020-9-14 09:06:02 | 显示全部楼层
直接用串口回调函数接收数据直接放入安全队列,另外开一个线程专门读取安全队列的数据,不要中断标志
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|无图浏览|手机版|网站地图|虚拟仪器家园 ( 沪ICP备13044638号-3 )

GMT+8, 2020-10-2 06:42 , Processed in 0.025924 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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