使用 SIM900 GSM 模块使用AT 指令发出呼出电话后,有没有办法知道接听电话的人是否已接听电话?
(使用串口直接与GSM模块通信)
使用 SIM900 GSM 模块使用AT 指令发出呼出电话后,有没有办法知道接听电话的人是否已接听电话?
(使用串口直接与GSM模块通信)
该命令+CLCC
是执行您所要求的标准的方法。这意味着该命令将在任何支持 ETSI 规范的设备中可用,无论型号或供应商是什么。
来自 SIM900 AT 命令指南:
执行命令
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
在哪里
<idx> - (范围 1..7) - 呼叫识别号
此号码可用于+CHLD
命令操作
<dir>
0 - 移动发起 (MO) 呼叫
1 - 移动终止 (MT) 呼叫
<stat> - 呼叫状态:
0 - 激活
1 - 保持
2 - 拨号(MO 呼叫)
3 - 提醒(MO 呼叫)
4 - 来电(MT 呼叫)
5 - 等待(MT 呼叫)
6 - 断开
<模式> - 承载/远程服务:
0 - 语音
1 - 数据
2 - 传真
<mpty>
0 - 呼叫不是多方(会议)呼叫方
之一 1 - 呼叫是多方(会议)呼叫方之一
<number>- 字符串类型(字符串应包含在引号中)<type> 指定格式的电话号码。
<type> - 地址类型
<alphaId> - 字符串类型(字符串应包含在引号中) <number> 的字母数字表示,对应于电话簿中的条目。
所以,基本上,您需要做的是提供命令(轮询),搜索包含您正在拨打的远程号码的答案行,包含在<number>参数中,然后等待参数的值< stat>从2
(Dialing) 变为0
(Active)。
获取信息的另一种方法(不涉及轮询)是启用URC(未经请求的结果代码)。通过设置
AT+CLCC=1
每当调用状态发生变化时,都会向串口异步发送一个URC (与上面解释的执行命令respose格式相同)。
它涉及AT+MORING
命令。来自 AT 命令指南:
AT+MORING=<mode>
显示移动发起呼叫的状态。<mode>
0 - 不显示移动发起呼叫的
呼叫状态 1 - 显示移动发起呼叫的呼叫状态。拨打电话号码后,如果有另一个呼叫被提醒,将发送 MO RING 的 URC 字符串,如果呼叫建立,将发送MO CONNECTED的 URC 字符串。
所以,提供
AT+MORING=1
在移动发起呼叫的情况下,将启用一系列 URC,格式为
MO RING - 呼叫被提醒。
MO CONNECTED - 呼叫已建立