我尝试通过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);
}
答案 0 :(得分:-3)
与您的问题相关的open和fopen之间的唯一区别是fopen默认情况下会进行缓冲。这个可能是您的问题。
您可以尝试禁用缓冲区并查看是否有帮助,在您打开文件后添加:setbuf(f, NULL);
并查看它是否有帮助。