我希望能够在 Linux 的串行端口上检测到 BREAK 条件。这是怎么做到的?
我想检测 BREAK 条件何时开始以及何时停止。
我希望如果我这样做:
int serial_status;
ioctl(serial_fd, TIOCMGET, &serial_status);
然后会有一个显示 BREAK 条件的位值 - 但似乎没有这样的事情。
我找到tcsendbreak()
了termios.h
发送休息时间。我还找到了描述如何发送中断的tty_ioctl
手册页。但是休息一下呢?
注意: BRKINT
已建议(SIGINT
在发生中断时生成信号)。但是获取 aSIGINT
并不是一个有用的 API,原因如下:
- 在多串口场景中,我无法分辨它来自哪个串口。
SIGINT
在终端上运行程序时,我也可以从按 Ctrl-C 的用户那里获得。- 如果我将我的程序作为守护进程运行,那么“如果终端是前台进程组的控制终端”的附带条件就不会是真的,不是吗?
- 无法知道 BREAK 条件持续多长时间以及何时停止。