如何知道何时接收到完整的数据包(QSerialPort)

时间:2019-06-27 00:29:00

标签: qt serial-port

我使用QSerialPort从计算机的串行端口接收数据。它运作良好。但是,当我的设备发送00aabbcc时,即使仅接收到00或00aa,也会调用readReady()信号。

仅当接收到所有00aabbcc时,如何才能获得信号?

这是我在插槽中的代码:

QByteArray data =  mySerial->readAll();
QString DataAsString = data.toHex();
ui->logArea->append(DataAsString);

我在textEdit logArea中看到的是:

00
aabb 
cc 
00aabb 
cc

我需要的是

00aabbcc
00aabbcc

1 个答案:

答案 0 :(得分:1)

readReady()会在缓冲区中出现内容时立即触发。如果要读取固定数量的字节,则需要自己检查数据包大小。

solution应该适合您。