gpt4 book ai didi

c - fopen() 不适合串口吗?

转载 作者:行者123 更新时间:2023-12-05 01:29:21 28 4
gpt4 key购买 nike

我尝试通过fopen("serial port path", "+w")打开串口

并通过fileno()获取文件描述符。

之后,我调用了 tcsetattr() 但它生成了一个错误,显示 Inappropriate ioctl for device (perror() 打印错误消息)

我知道我可以只使用 open()fopen() 并且它使用相同的代码。

但我很好奇什么是问题。

FILE* file = fopen("serialDevice", "w+");

fd = fileno(file);
if(fd < 0){
perror("fileno error");
}
struct termios conf;

//setting conf.....

if(tcsetattr(fd, TCSANOW, &conf) != 0){
perror("tcsetattr() failed");
exit(1);
}

最佳答案

与您的问题相关的 open 和 fopen 之间的唯一区别是 fopen 默认情况下会进行缓冲。这可能是您的问题。

您可以尝试禁用缓冲区并查看是否有帮助,在打开文件后添加:setbuf(f, NULL); 并查看是否有帮助。

关于c - fopen() 不适合串口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29347622/

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