Linux 使串行端口在握手线路更改时发出通知
是否可以打开串行设备(如Linux 使串行端口在握手线路更改时发出通知,linux,serial-port,Linux,Serial Port,是否可以打开串行设备(如/dev/ttyS0),并通过select/poll/等获得通知。。。或者当握手线路(例如CTS/RTS或DSR/DTR)改变时的信号?我知道在硬件层面上,UART会发出一个中断,告诉内核它已经改变了,但是在userland中我能得到通知吗 编辑:我知道TIOCMIWAIT,但是ioctl调用会阻塞,直到状态行更改。相反,我希望继续进行一般性处理,并在更改以及其他事件时通知轮询或类似情况。无法等待DTR/RTS线路在userland中更改。在Linux上执行此操作的唯一
/dev/ttyS0
),并通过select
/poll
/等获得通知。。。或者当握手线路(例如CTS
/RTS
或DSR
/DTR
)改变时的信号?我知道在硬件层面上,UART会发出一个中断,告诉内核它已经改变了,但是在userland中我能得到通知吗
编辑:我知道
TIOCMIWAIT
,但是ioctl
调用会阻塞,直到状态行更改。相反,我希望继续进行一般性处理,并在更改以及其他事件时通知轮询
或类似情况。无法等待DTR/RTS线路在userland中更改。在Linux上执行此操作的唯一方法是不断轮询设备,检查RTS/DTR线路的状态是否已更改。我通常从gtkerm窃取我的串行端口代码,然后
您可以尝试使用
TIOCMIWAIT
,但如果我没记错的话,这将与Linux正在使用的串行端口的驱动程序紧密相连,因此可能无法在驱动程序之间工作。可能的重复不直接-这篇文章只讨论了TIOCMIWAIT
,直到状态位改变为止。我希望通过select/poll wakeup或信号异步通知我。好的,说得好。现在我该如何解胶?我想我可以投票补偿;-)通过将ioctl TIOCMIWAIT
放在一个单独的线程中,可以实现您想要的功能吗?