是否可以打开串行设备(例如/dev/ttyS0
)并通过select
/ poll
/等通知......或者当握手线(如CTS
/ RTS
或DSR
/ DTR
)有变化吗?我知道在硬件级别有来自UART的中断告诉内核它已经改变了,但我可以在用户区告知它吗?
编辑:我知道TIOCMIWAIT
,但ioctl
调用阻塞,直到状态行发生变化。我希望继续进行一般处理,让poll
或类似的人了解变化以及其他事件。
答案 0 :(得分:1)
无法等待DTR / RTS线路在用户空间中更改。在Linux上执行此操作的唯一方法是不断轮询设备,检查RTS / DTR线路的状态是否已更改。我通常从gtkerm和it polls窃取我的串口代码。
您可以尝试使用TIOCMIWAIT
,但如果我没记错的话,它将与Linux正在使用的串行端口的驱动程序紧密相关,因此从驱动程序到驱动程序可能无法正常工作。