我正在使用QExtSerialPort读出USB设备,但是我在读取通过串行端口发送的数据时遇到问题。数据以 100 到 1000Hz 的速率发送,有时数据粘在一起。例如,如果数据的大小为 18 字节,则大多数情况下读取为 18 个字节,但有时读取 36 或 54 个字节,依此类推。当我让我的计算机做其他事情时,这种情况就会发生。我使用的代码如下:
QextSerailPort port = new QextSerialPort("COM11")
QByteArray data;
connect(port, SIGNAL(readyRead()),this, SLOT(DataAvailable()));
void MainWindow::DataAvailable()
{
while(!(port->bytesAvailable()));
data = port->readAll();
qDebug() << data.toHex();
}
有人有解决方案吗?
串行端口,如TCP链路,是字节流。 您不能传输消息、字符串、结构或任何大于一个字节的内容。
你必须有一个协议来解析字节流中的消息/任何东西。 没有其他办法。