我正在开发一个关于数据采样和示波器等实时显示的项目。数据通过虚拟COM端口以高转换率传输到PC。我正在使用QT4.8.4 + Qextserialport在WindowsXP上完成串行端口通信。我需要多线程吗?
我已经使用AccessPort测试过该设备。它可以从端口接收数据,但没有任何回应写入。如果我想让设备停止上传数据,我必须停止设备并写入停止命令,重新启动设备,然后设备停止上传。使用一个线程来处理读写的应用程序也是一样的。我不想完全关闭端口。我只是想输入一些命令来改变某些东西,采样率,数据格式等。
所以,我尝试了多线程。我从下面的链接下载了一个参考码。 http://www.qtcentre.org/threads/21063-QextSerialPort-with-QTimer-approch-for-reading?p=103325&highlight=#post103325 (对不起,我真的不知道如何在这个网站恰好粘贴代码)
在这段代码中,笔者得出的QThread两个子类。一个是读端口,另一个是写端口。他还重新实现了这两个子类中的run()。我试过这段代码,但发现在接收代码时,我的GUI被冻结了。
看来,作者在下面的线程遇到了同样的问题与我。 Qt: GUI sometimes freezing when using threads and signals/slots
但我对此主题有疑问。
- 作者提到“当在GUI线程中运行代码时,没有问题。”
作者的意思是当GUI线程中的所有代码都一切正常吗?那么,他为什么使用工作线程和进程线程呢?
- 提到“处理线程”
是否需要另一个进程线程与GUI线程工作笔者负责显示?(我需要显示不只有数据,但波形,都必须实时)
请给我一些关于如何克服这个问题的提示。非常感谢。
GUI框架拼写为小写字母“Qt”。带大写字母T的QT通常表示Apple的QuickTime。 – Oberon 2013-03-13 15:43:38