Details
-
Bug
-
Resolution: Incomplete
-
Not Evaluated
-
None
-
5.14.0 RC2
-
None
-
Win10
Description
在子线程Qthread中
run()函数中,调用serial.waitForReadyRead(5000)一直超时返回false,但是确当串口是有数据发送过来的。调用serial->bytesAvailable()也会一直返回0
主要代码:
#include "masterthread.h" MasterThread::MasterThread(QObject *parent) : QThread(parent){ } void MasterThread::run(){ QSerialPort serial; serial.setPortName("COM4"); serial.setBaudRate(QSerialPort::Baud115200); serial.setDataBits(QSerialPort::Data8); serial.setParity(QSerialPort::NoParity); serial.setFlowControl(QSerialPort::NoFlowControl); if (!serial.open(QIODevice::ReadWrite))
{ qDebug()<<"Open err"; }while (1) { serial.write("requestData..."); if (serial.waitForBytesWritten(1000))
{ qDebug()<<"waitForBytesWritten"; }else { qDebug()<<"Write ok"; } // read response if (serial.waitForReadyRead(1000)) { QByteArray responseData = serial.readAll(); while (serial.waitForReadyRead(10)) responseData += serial.readAll(); qDebug()<<responseData; } else { qDebug()<<"err\r\n"; } }}