Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-82573

serial.waitForReadyRead(1000)一直返回fals

    XMLWordPrintable

Details

    • Bug
    • Resolution: Incomplete
    • Not Evaluated
    • None
    • 5.14.0 RC2
    • Serial Port
    • None
    • Win10
    • Windows

    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"; } }} 

      Attachments

        1. main.cpp
          0.2 kB
        2. masterthread.cpp
          1 kB
        3. masterthread.h
          0.4 kB
        4. test3.pro
          1.0 kB
        5. test3.pro.user
          22 kB

        Activity

          People

            kuzulis Denis Shienkov
            jirauser55773 user-0cd8e (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: