• 1221阅读
  • 2回复

[提问]请教如何处理采集数据和显示线程关系?谢谢 [复制链接]

上一主题 下一主题
离线lovecomputer
 

只看楼主 倒序阅读 楼主  发表于: 2022-02-15
请教如何处理线程关系,我的需求是:
1、通过串口采集数据
2、尽量实时在主界面显示出来
我目前是用的QtSerialPort做串行通信 在主程序里建立串口(my_serial)和读串口函数(readLineData)槽函数连接,connect(my_serial, SIGNAL(readyRead()), this,SLOT(readLineData()));   读数据后直接显示,但对于长时间显示会造成程序无法及时读取串口数据,所以我想用2个线程,但我查资料说UI显示相关的操作必须在主线程,
我现在的问题是:
1、如果用多线程,那么读串口的槽函数readLineData是放在子线程里吗?
2、读串口数据后如何发通知给主线程,以便主线程更新界面?
3、这样的需求(也就是大量采集数据、同时显示)是否有更科学的解决方案?
谢谢

离线沉默小ai

只看该作者 1楼 发表于: 2022-02-16
1:将串口功能跑在一个子线程内:2:信号槽可以实现;3:小数据量的可以,大数据量的话  存储可以采用内存数据库做缓存,UI显示可以抽样显示,毕竟速率太快人眼也看不到太多。
离线tanyue.esec

只看该作者 2楼 发表于: 2022-02-16
1、我们一般是一个设备一个线程,打开串口并接收数据;
2、收到数据之后,进行协议解析,发送信号给主线程(UI)显示
3、数据量大的话可以实际测试下,通过筛选设备等方式减少量
快速回复
限100 字节
 
上一个 下一个