我正在使用QT+QEXTSERIALPORT做一个数据采集上位机界面。下位机采用USB虚拟串口发送数据,数据传输率接近1MB/s。上位机使用QEXTSERIALPORT第三方串口类+多线程处理。参考代码:http://www.qtcentre.org/threads/21063-QextSerialPort-with-QTimer-approch-for-reading?p=103325&highlight=#post103325。
现在碰到一个十分棘手的问题,就是一旦上位机向下位机发送了采集数据命令之后,下位机开始不断的采集数据并以64字节大小的包向上位机发送,数据采集线程采用信号+槽的方式与主线程通讯,这样就是导致上位机GUI界面失去响应(有可能是GUI实时显示造成的,如果不做任何操作,GUI不会失去响应)。尝试了修改timeout无效。因为下位机是数据采集部分,需要保证较高的数据传输率,因此也不能降低数据传输率。主要困扰两个问题:
1. 究竟是什么原因导致了这种多线程情况下,GUI仍然失去响应。
2. 究竟该怎么处理这种情况。
求高手指点。