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



我使用qserialport从计算机的串行端口接收数据。它运行良好。但是,当我的设备发送00AABBCC时,即使仅收到00或00AA,readReadReady((信号也会被调用。

只有在收到所有00AABBCC时,我才能获得信号?

这是我的代码:

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

我在Textedit logarea中看到的是:

00
aabb 
cc 
00aabb 
cc

我需要的是

00aabbcc
00aabbcc

readReady()在缓冲区中得到一些东西,就会发射。如果要读取固定数量的字节,则需要自己检查数据包大小。

此解决方案应该对您有用。

最新更新