使串口通知握手线路的变化

Leo*_*erd 6 linux serial-port

是否可以打开串行设备(例如/dev/ttyS0)并在握手线路(例如/或/ )更改时通过select/ poll/etc... 或信号通知?我知道在硬件级别有一个来自 UART 的中断来告诉内核它已经改变了,但是我可以在用户态被告知吗?CTSRTSDSRDTR


编辑:我知道TIOCMIWAIT,但是ioctl在状态行更改之前该调用会阻塞。相反,我希望继续进行一般处理,并poll在更改和其他事件时通知一个或类似的消息。

rm5*_*248 2

无法等待用户空间中的 DTR/RTS 线路发生变化。在 Linux 上执行此操作的唯一方法是不断轮询设备,检查 RTS/DTR 线路的状态是否已更改。我通常从 gtkerm 窃取我的串行端口代码,并进行轮询

您可以尝试使用TIOCMIWAIT,但如果我没记错的话,这将与 Linux 正在使用的串行端口的驱动程序紧密相关,因此可能无法在不同的驱动程序之间工作。