我正在开发一个关于数据采样和实时显示的项目,如示波器。数据以高传输速率通过虚拟 COM 端口传输到 PC。我在WindowsXP上使用QT4.8.4 + Qextserialport来完成串口通信。
我已经使用 AccessPort 测试了该设备。它可以从端口接收数据,但没有响应写入它。如果我想让设备停止上传数据,我必须停止设备并向其写入停止命令,重新启动设备,然后设备停止上传。使用一个线程处理读写的应用程序也是如此。我不想完全关闭端口。我只是想输入一些命令来改变一些东西,采样率,数据格式等。
所以,我尝试了多线程。我从以下链接下载了参考代码。 http://www.qtcentre.org/threads/21063-QextSerialPort-with-QTimer-approch-for-reading?p=103325&highlight=#post103325 (对不起,我真的不知道如何在这个网站上正确粘贴代码)
在这段代码中,作者派生了QThread的两个子类。一个是读端口,一个是写端口。他还在这两个子类中重新实现了 run()。我尝试了这段代码,但发现在接收代码时,我的 GUI 冻结了。
似乎以下线程中的作者与我遇到了同样的问题。 Qt:使用线程和信号/插槽时,GUI 有时会冻结
但我对这个线程有疑问。
- 作者提到“在 GUI 线程中运行代码时,没有问题”。
当GUI线程中的所有代码时,作者的意思是一切正常吗?那么,他为什么使用工作线程和进程线程呢?
- 作者提到了“进程线程”
我是否需要另一个进程线程与负责显示的 GUI 线程一起工作?(我不仅需要显示数据,还需要显示波形,都必须实时)
请给我一些关于如何克服这个问题的提示。非常感谢。