gpt4 book ai didi

c - Linux rs232 读取 - 选择调用似乎会阻塞,直到不再发送数据

转载 作者:行者123 更新时间:2023-11-30 19:45:23 27 4
gpt4 key购买 nike

我正在努力调试我在应用程序中的选择调用中遇到的一些延迟问题。我正在使用以下标志打开我的 rs232 文件句柄:

rs232_fd = open("/dev/ttys3", O_RDWR | O_NOCTTY | O_NDELAY | O_EXCL);

并尝试按如下方式进行选择调用:

struct timeval tv;
fd_set set;

FD_ZERO(&set);
FD_SET(rs232_fd, &set);

tv.tv_sec = 1;
tv.tv_usec = 500000;

select(rs232_fd+1, &set, NULL, NULL, &tv)

我有一个嵌入式设备写入串行端口,以 115200 波特发送约 10kB 的 block 。我想在数据传入时开始处理数据,但我看到的是 select 调用阻塞了近一秒,这大约是设备完成发送所有数据所需的时间。不确定时间是否巧合。

我的理解是,一旦文件描述符上有数据要读取,select 就应该解除阻塞,是这样吗?我是否在空位中丢失了一些标志?我还需要一些其他设置来确保我已配置吗?在向文件描述符写入数据时读取文件描述符是否存在任何问题?

最佳答案

已知 Select 存在问题。而其效率仍然是一个问题。你可以尝试一下inotify。

关于c - Linux rs232 读取 - 选择调用似乎会阻塞,直到不再发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521366/

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