首页 > 解决方案 > 如何知道何时收到完整的数据包(QSerialPort)

问题描述

我使用 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

标签: qtserial-port

解决方案


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

解决方案应该适合您。


推荐阅读