如何使用 boost 从 com 端口读取未定义的字节数

How can I read undefined number of bytes from com port, using boost?

本文关键字:读取 未定义 字节数 何使用 boost com      更新时间:2023-10-16

我正在尝试从com端口写入和读取数据。我' 使用

    write(*ioboard.port, buffer(cpayload, cpayload.size()));

对于写作,我在收到答案方面遇到了一些麻烦。我尝试了不同的变体

int m = read(*ioboard.port, buffer(answer, 1));
int m = read(*ioboard.port, buffer(answer, 1024));
int m = ioboard.port->read_some(buffer(answer));

在第一种情况下,我在第一次调用写读对后收到答案,第二次后没有答案:幻想读取故障。在第二种情况下,我在第一次通话后没有收到答案:再次由于读取功能。第三个的工作方式与第一个相同。所以现在我需要重新启动我的设备来发送两个命令!

我应该怎么读,如果我知道最大数据大小,但不知道有多少字节,我会以特别的方式得到。

发生这种情况是因为该端口中没有任何东西。我对发生的事情没有深刻的理解,但是我现在通过创建指向/dev/ttyACM0 的符号链接并连接到它来解决这个问题。不明白为什么会这样 - 似乎只更改了描述符。– 沃龙威

如果您

可以使用Qt工具包,请尝试 doc.qt.io/qt-5/qserialport.html