回复: 求问QSerialPort在多线程环境下如何使用?
#6 回 realfan 的帖子 [johnyork 05-19 22:47]
realfan:QextSerialPort的CPU占用率太高了。
能用QSerialPort,还是尽量用Qt自带的吧 (2015-05-19 09:27)
我怀疑是它那个Polling模式搞的鬼
#7 [辉煌淘淘 06-03 00:28]
初学QT,也是MOXA卡,我用多线程时,在 QThread 继承类中声明,然后在线程run函数里 serialport = new QSerialPort();
#8 [jienze 06-03 16:34]
感觉还是自己用底层函数,写个串口类,保险!!!
#9 回 jienze 的帖子 [johnyork 06-04 23:04]
jienze:感觉还是自己用底层函数,写个串口类,保险!!! (2015-06-03 16:34)
我倒在前辈的代码基础上自己写过一个串口类,封装的Windows API,但是总觉得各种别扭各种不满意,现在决定使用Qt的现成类了,方便,省心^_^
#10 回 辉煌淘淘 的帖子 [johnyork 06-04 23:11]
辉煌淘淘:初学QT,也是MOXA卡,我用多线程时,在 QThread 继承类中声明,然后在线程run函数里 serialport = new QSerialPort(); (2015-06-03 00:28)
QSerialPort在多线程环境下需要注意几点:
1.同一种操作(读 or 写)一定要放在同一个线程进行,否则线程间冲突整死人
2.QSerialPort对象的打开和关闭必须在对象的创建线程中执行,否则它的事件通知功能无法正常执行,结果便是waitForReadyRead或waitForBytesWritten这样的等待函数无法正常工作