Hayes AT命令:检测远程挂断?

时间:2012-04-20 21:44:09

标签: c modem at-command

如何以编程方式检测通话中的远程调制解调器何时挂断?我正在编写一个C程序,它与Ubuntu linux中的SoftModem设备/dev/ttySL0连接。我可以使用Hayes AT命令配置调制解调器并与远程调制解调器通信。但是,我无法确定我应该如何检测到另一端是否挂断了线路。

我配置了调制解调器,以便当另一端挂断时,设备会打印NO CARRIER并切换到命令模式。但是,我无法使用NO CARRIER字符串,因为我不能保证调制解调器在数据模式下不会收到该字符串。

你如何“倾听”远程挂机?

2 个答案:

答案 0 :(得分:3)

这是调制解调器上的硬件信号,即载波检测(CD)线。您需要监视它才能知道连接丢失了。在this how-to中描述了linux中的基础知识,使用TIOCM_CAR命令通过ioctl()获取信号状态。

答案 1 :(得分:0)

NO CARRIER作为文字进行测试是不够的。该文本经常出现在网络上的网站上,甚至在Q& A网站上也是如此。

来自调制解调器,它应该包含在换行符中。

此外,在检测到该文本后,您可以尝试使用+++切换到命令模式。如果可行,您的连接仍然存在,您可以重新连接并继续使用它。如果没有(因为你已经在那里并且+++是无效的命令),则连接已经消失。