如何以编程方式检测通话中的远程调制解调器何时挂断?我正在编写一个C程序,它与Ubuntu linux中的SoftModem设备/dev/ttySL0
连接。我可以使用Hayes AT命令配置调制解调器并与远程调制解调器通信。但是,我无法确定我应该如何检测到另一端是否挂断了线路。
我配置了调制解调器,以便当另一端挂断时,设备会打印NO CARRIER
并切换到命令模式。但是,我无法使用NO CARRIER
字符串,因为我不能保证调制解调器在数据模式下不会收到该字符串。
你如何“倾听”远程挂机?
答案 0 :(得分:3)
这是调制解调器上的硬件信号,即载波检测(CD)线。您需要监视它才能知道连接丢失了。在this how-to中描述了linux中的基础知识,使用TIOCM_CAR命令通过ioctl()获取信号状态。
答案 1 :(得分:0)
将NO CARRIER
作为文字进行测试是不够的。该文本经常出现在网络上的网站上,甚至在Q& A网站上也是如此。
来自调制解调器,它应该包含在换行符中。
此外,在检测到该文本后,您可以尝试使用+++
切换到命令模式。如果可行,您的连接仍然存在,您可以重新连接并继续使用它。如果没有(因为你已经在那里并且+++
是无效的命令),则连接已经消失。