【问题标题】:How to know if you missed an incoming call in AT commands如何知道您是否错过了 AT 命令中的来电
【发布时间】:2016-08-16 23:19:08
【问题描述】:

我正在使用 Putty 模拟通过串口连接的手机调制解调器。当我的手机接到电话时,它会将“RING”输出到腻子中,但是当呼叫者取消呼叫时,腻子不会输出任何响应或结果。

调制解调器如何知道呼叫者断开/取消呼叫,但不将其输出到腻子中?

谢谢

【问题讨论】:

    标签: serial-port putty at-command modem


    【解决方案1】:

    要检测未接来电,您可以尝试三件事。

    检查是否有合适的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 之外的其他内容。感谢您的帮助。
    【解决方案2】:

    大多数调制解调器在接到电话时会显示来电号码和RING,在取消电话时会显示END。要查看未接来电,您可以使用以下AT 命令。

    AT+CPBS="MC"
    AT+CPBR=1,99
    

    第一个命令告诉调制解调器查看未接来电电话簿,第二个命令加载从 1 到 99 的条目。请注意,此行为不是标准的。我能够在 GSM 模块上复制它,但不能在我的 3G 调制解调器上复制。在您的调制解调器上试一试,并检查它是否有效。一切顺利。

    【讨论】:

    • 澄清一下,MC - 未接来电 - 电话簿存储在各方面都是可能的标准。但是,条目的数量,例如99,完全是特定于制造商的(严格来说,MC只是AT+CPBR的defined存储值,并不是特别强制的。但实际上所有手机制造商都支持这一点,但也许不是由公司制造的硬件加密狗也使手机支持的标准 AT 命令的子集不太明智?尽管今天不支持MC 的充分理由为零(在 90 年代初期几乎没有)。
    • 要了解支持哪些电话簿存储以及它们支持多少条目,请参见27.007 standard 中“8.57 信息性示例”一章中的最后一个示例,该示例给出了命令并对其进行了解释。
    • 关于 END 结果代码,这根本不是标准的,在 V.250 和 27.007 中都没有引用它。最接近的是 NO CARRIER double final result code 用于使用 ATD 发起的语音呼叫,但这不适用于来电。
    • 感谢您的回复。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多