【发布时间】:2012-05-02 11:53:49
【问题描述】:
您应该如何以编程方式检测您通话中的远程调制解调器何时挂断?我正在编写一个与 Ubuntu linux 中的 SoftModem 设备 /dev/ttySL0 接口的 C 程序。我能够使用 Hayes AT 命令配置调制解调器并与远程调制解调器通信。但是,我无法确定我应该如何检测到另一端已挂断电话。
我已配置调制解调器,以便当另一端挂断时,设备会打印NO CARRIER 并切换到命令模式。但是,我不能使用NO CARRIER 字符串,因为我不能保证调制解调器在数据模式下不会接收到该字符串。
你如何“监听”远程挂断?
【问题讨论】:
-
P.S.我没有代表创建 56k-modem 或 softmodem 标签。调制解调器标签似乎与 Internet 访问调制解调器有关,而不是 56k 调制解调器到调制解调器链接。
-
我添加了一个 [at-command] 标签;这应该足够了。 [listen] 并不是真正的标签。
-
有趣的一个。在 RS232 硬件世界中,有用于此的 CD(载波检测)线。如果您使用的是 API/库,是否有相关的虚拟化?
-
就我而言,我打开
/dev/ttySL0进行读/写。调制解调器显然能够检测到远程挂断(因为它在那个事件中给了我NO CARRIER)但我不知道如何在用户空间中区分远程挂断和远程端应用程序发送@987654326 @. -
如果您正在阅读此问题,调制解调器将多次收到大写文本
NO CARRIER。但是从调制解调器,它应该包含在换行符中。检测到该文本后,您可以尝试使用+++切换到命令模式。如果可行,则您的连接仍然存在;如果没有(因为您已经在那里并且+++是无效命令),则连接已断开。如果它仍然存在,则重新连接它并继续。
标签: c modem at-command