【问题标题】:Making a serial port notify on change of handshaking lines使串行端口通知握手线的变化
【发布时间】:2014-01-11 23:37:31
【问题描述】:

是否可以打开串口设备(如/dev/ttyS0)并通过select/poll/etc... 或握手线时的信号(如CTS/@987654326 @ 或 DSR/DTR) 改变?我知道在硬件级别有一个来自 UART 的中断来告诉内核它已经改变了,但是我可以在用户区得到通知吗?


编辑:我知道TIOCMIWAIT,但ioctl 调用会阻塞,直到状态行发生变化。相反,我希望继续进行一般处理,并通知poll 或类似的更改以及其他事件。

【问题讨论】:

  • 不是直接的——那篇文章只谈论TIOCMIWAIT,它会阻塞直到状态位改变。我希望通过选择/轮询唤醒或信号异步获得通知。
  • 好的,好点。现在我该如何取消标记?我想我可以投票来补偿 ;-)
  • 你可以通过将ioctl TIOCMIWAIT 放在单独的线程中来做你想做的事吗?

标签: linux serial-port


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2012-02-22
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多