【发布时间】:2016-08-16 23:19:08
【问题描述】:
我正在使用 Putty 模拟通过串口连接的手机调制解调器。当我的手机接到电话时,它会将“RING”输出到腻子中,但是当呼叫者取消呼叫时,腻子不会输出任何响应或结果。
调制解调器如何知道呼叫者断开/取消呼叫,但不将其输出到腻子中?
谢谢
【问题讨论】:
标签: serial-port putty at-command modem
我正在使用 Putty 模拟通过串口连接的手机调制解调器。当我的手机接到电话时,它会将“RING”输出到腻子中,但是当呼叫者取消呼叫时,腻子不会输出任何响应或结果。
调制解调器如何知道呼叫者断开/取消呼叫,但不将其输出到腻子中?
谢谢
【问题讨论】:
标签: serial-port putty at-command modem
要检测未接来电,您可以尝试三件事。
检查是否有合适的AT+CIND 指示器可以打开。我不认为call 会这样做,因为我认为它只会在接听电话时转到1。如果您的手机支持callsetup 或您需要的类似功能(您必须实现逻辑来检测呼叫何时未进入活动状态)。
关于启用AT+CIND指标的示例,请参见27.007中的“8.57信息示例”章节以获得更多解释,并密切关注The subparameter order in the command is defined by the query command order,例如
如果 AT+CIND=?返回
+CIND: ("abc",(0-1)),("xyz",(0,1)),("call",(0,1))
那么 call 是索引 3,对于
+CIND: ("abc",(0-1)),("call",(0,1)),("xyz",(0,1))
调用是索引 2。不要在此处不硬编码任何假设,这应该在运行时进行解析和检查(一开始检查就足够了)。
或者,您可以在RING 开始使用AT+CLCC 轮询呼叫状态,直到不再列出该呼叫。
或者您可以轮询MC 电话簿存储并检测更改。
【讨论】:
AT+CLCC 并查看它是否返回除了OK 之外的其他内容。感谢您的帮助。
大多数调制解调器在接到电话时会显示来电号码和RING,在取消电话时会显示END。要查看未接来电,您可以使用以下AT 命令。
AT+CPBS="MC"
AT+CPBR=1,99
第一个命令告诉调制解调器查看未接来电电话簿,第二个命令加载从 1 到 99 的条目。请注意,此行为不是标准的。我能够在 GSM 模块上复制它,但不能在我的 3G 调制解调器上复制。在您的调制解调器上试一试,并检查它是否有效。一切顺利。
【讨论】:
MC - 未接来电 - 电话簿存储在各方面都是可能的标准。但是,条目的数量,例如99,完全是特定于制造商的(严格来说,MC只是AT+CPBR的defined存储值,并不是特别强制的。但实际上所有手机制造商都支持这一点,但也许不是由公司制造的硬件加密狗也使手机支持的标准 AT 命令的子集不太明智?尽管今天不支持MC 的充分理由为零(在 90 年代初期几乎没有)。
END 结果代码,这根本不是标准的,在 V.250 和 27.007 中都没有引用它。最接近的是 NO CARRIER double final result code 用于使用 ATD 发起的语音呼叫,但这不适用于来电。