【发布时间】:2020-11-24 04:43:18
【问题描述】:
使用 SIM900 GSM 模块使用 AT 命令发送拨出电话后,有没有办法知道接听电话的人是否已接听 是吗?
(使用串口直接与GSM模块通信)
【问题讨论】:
标签: serial-port gsm at-command sim900 outgoing-call
使用 SIM900 GSM 模块使用 AT 命令发送拨出电话后,有没有办法知道接听电话的人是否已接听 是吗?
(使用串口直接与GSM模块通信)
【问题讨论】:
标签: serial-port gsm at-command sim900 outgoing-call
+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格式相同)。
涉及AT+MORING命令。来自 AT 命令指南:
AT+MORING=<mode>显示移动发起呼叫的状态。
0 - 不显示移动发起呼叫的呼叫状态
1 - 显示移动发起呼叫的呼叫状态。拨打电话号码后,如果有另一个呼叫被提醒,将发送MO RING的URC字符串,如果呼叫建立,将发送MO CONNECTED的URC字符串。
所以,提供
AT+MORING=1
将在移动发起呼叫的情况下启用一系列 URC,格式为
MO RING - 呼叫被提醒。
MO CONNECTED - 呼叫已建立
【讨论】: