【问题标题】:SIM900 GSM Module | How to check if the outgoing-call is answeredSIM900 GSM 模块 |如何检查拨出电话是否被接听
【发布时间】:2020-11-24 04:43:18
【问题描述】:

使用 SIM900 GSM 模块使用 AT 命令发送拨出电话后,有没有办法知道接听电话的人是否已接听 是吗?

(使用串口直接与GSM模块通信)

【问题讨论】:

    标签: serial-port gsm at-command sim900 outgoing-call


    【解决方案1】:

    +CLCC 命令是执行您所要求的标准方式。这意味着该命令将在任何支持 ETSI 规范的设备中可用,无论型号或供应商如何。

    来自 SIM900 AT command guide:

    执行命令AT+CLCC返回ME当前调用列表。

    注意:如果命令成功但没有调用可用,则无信息响应被发送到 TE。

    设备发送以下响应

    [+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type >,<alphaID>]
    [<CR><LF>+CLCC: <id2>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type>,<alphaID>]
    [...]]]

    OK

    在哪里

    - (范围 1..7) - 呼叫识别号码
    此号码可用于+CHLD 命令操作

    强>
    0 - 移动发起 (MO) 呼叫
    1 - 移动终止 (MT) 通话
    - 通话状态:
    0 - 活跃
    1 - 举行
    2 - 拨号(MO 呼叫)
    3 - 警报(MO 呼叫)
    4 - 来电(MT 呼叫)
    5 - 等待(MT 呼叫)
    6 - 断开连接
    - 承载/远程服务:
    0 - 语音
    1 - 数据
    2 - 传真

    0 - 呼叫不是多方(会议)呼叫方之一
    1 - 呼叫是多方(会议)呼叫方之一
    - 字符串类型(字符串应包含在引号中)电话号码,格式由 指定。
    - 地址类型
    - 字符串类型(字符串应包含在引号中)与找到的条目对应的 的字母数字表示在电话簿中。

    因此,基本上,您需要做的是提供命令(在轮询中),搜索包含您要拨打的远程号码的答案行,包含在 中参数,并等待参数的值从2(拨号)变为0(主动)。


    另一种获取信息的方法(不涉及轮询)是启用 URCs(未经请求的结果代码)。通过设置

    AT+CLCC=1
    

    每当调用状态发生变化时,都会异步将URC发送到串口(与上面解释的执行命令respose格式相同)。


    更简单的 SIM900 专用解决方案

    涉及AT+MORING命令。来自 AT 命令指南:

    AT+MORING=<mode> 显示移动发起呼叫的状态。


    0 - 不显示移动发起呼叫的呼叫状态
    1 - 显示移动发起呼叫的呼叫状态。拨打电话号码后,如果有另一个呼叫被提醒,将发送MO RING的URC字符串,如果呼叫建立,将发送MO CONNECTED的URC字符串。

    所以,提供

    AT+MORING=1
    

    将在移动发起呼叫的情况下启用一系列 URC,格式为

    MO RING - 呼叫被提醒。
    MO CONNECTED - 呼叫已建立

    【讨论】:

    • 谢谢罗伯托,我会尽力让你知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多