在子執行緒Qthread中
run()函式中,呼叫serial.waitForReadyRead(5000)一直超時回傳false,但是確當串口是有資料發送過來的。呼叫serial->bytesAvailable()也會一直回傳0
我就是按照QT的幫助檔案撰寫的
幫助檔案地址:https://doc.qt.io/qt-5/qtserialport-blockingslave-example.html
主要代碼:
#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"; } }}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/61264.html
標籤:Qt
