0

我正在使用 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();
}

有人有解决方案吗?

4

1 回答 1

2

串行端口,如 TCP 链接,是字节流。您不能传输消息、字符串、结构或任何大于一个字节的内容。

您必须有一个协议,可以从字节流中解析出消息/任何内容。没有其他办法。

于 2012-11-21T10:12:34.493 回答