gpt4 book ai didi

无法从串口读取超过八个字节

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:32 24 4
gpt4 key购买 nike

我在 Linux 下使用 c 编程语言,尝试创建一个带有串口的通信应用程序。该程序正在将数据发送到串行端口并从微 Controller 读取接收到的数据。接收到的数据可以达到 10 到 64 之间的任意字节数,但不多也不少。我使用以下代码读写数据:

unsigned char send_bytes[] = { 0x1, 0x6, 0x2, 0xAA, 0x2, 0x3, 0xB8, 0x4 };

int w = write(fd, send_bytes, sizeof(send_bytes)); // send

char buffer[64];

int r = read(fd, buffer, sizeof(buffer)); //read data

我的问题是 r 永远不会获得超过 8 个字节的数据。有谁知道为什么会这样?

提前致谢。

最佳答案

也许您的操作系统仅提供 8 字节的串行端口缓冲,因此它“倾向于”以 8 字节的 block 形式传送传入数据。

只要有可用数据,就重复读取。您可以在可用的系统上使用 select()

此外,由于另一端是一个微 Controller ,它可能比您的工作站慢很多,当您执行 read() 时,数据可能还不可用。当然,这是再试一次的另一个原因。

关于无法从串口读取超过八个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22065528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com