class SerialReaderThread : public QThread
{
Q_OBJECT
public:
explicit SerialReaderThread(QSerialPort* serialPort, QObject* parent = nullptr)
: QThread(parent), serialPort(serialPort)
{
}
protected:
void run() override
{
if (serialPort->isOpen() && serialPort->isReadable())
{
qDebug()<<"open!";
while (!isInterruptionRequested())
{
if (serialPort->waitForReadyRead(100)) // 等待数据到达,最长等待100毫秒
{
QByteArray receiveData = serialPort->readAll();
emit dataReceived(receiveData);
}
}
}
}
signals:
void dataReceived(const QByteArray& data);
private:
QSerialPort* serialPort;
};