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

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

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

你怎么“听”远程挂机?

测试NO CARRIER作为文本是不够的。 该文本经常出现在网络上的网站上,甚至在问答网站上也是如此。

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

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

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