SMS相关命令
AT+CMGF 配置短消息模式
Command | Possible response(s) |
+CMGF=? | +CMGF:(<mode>取值列表) OK |
+CMGF? | +CMGF:<mode> OK |
+CMGF=<mode> | OK ERROR +CME ERROR:<err> |
该命令用于指定短消息的发送和接收的模式。
参数
<mode>
- 0 PDU 模式
- 1 文本模式
举例
发→◇AT+CMGF=? 收←◆+CMGF: (0,1) 收←◆OK
发→◇AT+CMGF=1 收←◆OK
发→◇AT+CMGF? 收←◆+CMGF: 1 收←◆OK
AT+CSCA 配置短消息服务中心地址
Command | Possible response(s) |
+CSCA=<sca>[,<tosca>] | OK ERROR +CME ERROR:<err> |
+CSCA? | +CMGF:<sca>[,<tosca>] OK |
+CSCA=? | +CSCA:(list of supported<mode>) OK |
该命令用于设置SMSC(Short Message Service Center,短消息服务中心)地址。通过该地址,可以发送SMS。文本模式下,发送和设置命令都可以使用该项设置。PDU模式下,发送和设置命令也可以使用该项设置,但条件是编码后的SMSC地址长度等于0,编码后的SMSC地址用参数<pdu>表示。
参数
<sca> GSM 04.11 RP SC 使用字符型的地址取值字段; BCD 数字(或 GSM 缺省字母字符)需转换为字符;<tosca>指定的地址类型
<tosca> 服务中心地址格式; GSM 04.11 RP SC 使用整数型的 8 位地址类型(缺省值请参考<toda>)
备注
-
输入 SMS 服务中心地址时应该使用服务供应商规定的格式
-
强烈建议使用过程中不要改写 SIM 卡的 SMS 服务中心地址,在发送短消息之前首先必须搞清楚 SIM 卡所属的短消息服务中心地址,否则短消息发送不出去。
举例
发→◇AT+CSCA=? 收←◆+CSCA: <sca>,<tosca> 收←◆OK
发→◇AT+CSCA="+8613800230500",145 //配置短消息服务中心号码(重庆移动) 收←◆OK
发→◇AT+CSCA? //配置后查询短消息服务中心号码 收←◆+CSCA: "+8613800230500",145 收←◆OK
AT+CMGW 写短消息
Command | Possible response(s) |
1)文本模式(+CMGF=1): +CMGW= <CR> 文本输入<ctrl-Z/ESC> <ESC>退出发送 2)PDU 模式 (+CMGF=0): +CMGW=<length>[,<stat>]<CR> PDU is given <ctrl-Z/ESC> |
1)写短消息成功,返回: +CMGW: <index> OK 2)功能相关报错 +CME ERROR:<err> |
该命令可将SMS(SMS-DELIVER或SMS-SUBMIT)从TE发送到存储器<mem2>,并返回已存储短消息的存储位置<index>参数。除非<stat>指定其他参数,否则该短消息的状态将被设置为―存储未发送。
参数
<oa> 字符型的 GSM 03.40 中的 TP-Destination-Address 地址——取值字段;将 BCD 数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符;<toda>给定的地址类型
<da> 字符型的 GSM 03.04 中的 TP-Destination-Address 地址——取值字段;将 BCD 数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符;<toda>给定的地址类型
<tooa> 整数型的 GSM 04.11 TP-Originating-Address 中的 8 位―类型“地址”字段(参考<toda>)
<toda> 整数型的 GSM 04.11 TP-Destination-Address 中的 8 位:“类型—地址”字段(当<da>的首字符为+(IRA 43)时,缺省值为 145,否则缺省值为 129)
-
129 未知类型(IDSN 格式号码)
-
145 国际号码类型(IDSN 格式号码)
<length> 整数型;文本模式(AT+CMGF=1)下,用字符表示<data>(或<cdata>)消息正文的长度;PDU 模式(AT+CMGF=0)下,8 位真实 TP 数据单位的长度(即RP 层的 SMSC 地址中的 8 位字符将不计算在该长度内)
<pdu> ISDMS 情况下: GSM 03.40 TPDU。十六进制,遵循 GSM 04.11SC 地址; ME/TA把 TP 数据单元中每个 8 位字符转换为包含 2 个 IRA 字符的十六进制数字如:整数取值为 42 的 8 位字符作为 2 位数字(2A,即 IRA 50 和 65)发送给TE)广播消息情况下:使用十六进制的 GSM 03.41 TPDU
<index> 整数类型;关联存储器支持的地址编号范围内取值
<stat> PDU模式/文本模式 说明
-
0 "REC UNREAD" 已收到但未读的短消息
-
1 "REC READ" 已收到且已读的短消息
-
2 "STO UNSENT" 已存储但未发送的短消息
-
3 "STO SENT" 已存储且已发送的短消息
-
4 "ALL" 所有短消息
备注
-
使用+CMGW存储前要先执行+CFUN(读SIM)开机、 +CMGF指定模式。 若为TEXT模式,则使用+CSMP设置模式参数(不设,则为缺省参数)。
-
长短信暂未支持,即7bit下可最多存储160字符,8bit下最多存储140字符,16bit下最多存储70字符。
举例
1)文本模式(+CMGF=1) 发→◇AT+CMGW="15723244049" 收←◆> 发→◇This is a test from ucchip //输入短消息内容,<CTRL+Z>写入,<ESC>退出 收←◆+CMGW: 0 收←◆OK
2)PDU模式(+CMGF=0) 发→◇AT+CMGW=20 收←◆> //给号码15723244049发送内容为“123456”的PDU数据 发→◇049168000001000D91685127234440F900000631D98C56B301 收←◆+CMGW: 1 收←◆OK
AT+CMSS 从存储器发送短消息
Command | Possible response(s) |
+CMSS=<index>[,<da>[,<toda>]] | 1)文本模式(+CMGF=1)且执行成功: +CMSS: <mr> OK 2)PDU 模式(+CMGF=0)且执行成功: +CMSS: <mr> OK 3)功能相关报错 +CME ERROR:<err> |
该命令可将短消息存储器 <mem2> 中 ,位置取值参数为 <index> 的消息发送到网络侧(SMS-SUBMIT或SMS-COMMAND)。若给定SMS-SUBMIT短消息的新接收地址参数<da>,应使用该参数,而不能使用已存储短消息的参数。发送成功后,参考值<mr>将返回给TE。在接收到非请求发送状态报告结果码时,可使用该命令的取值进行短消息识别。
参数
<index> 整数类型;关联存储器支持的地址编号范围内取值
<da> 字符型的 GSM 03.04 中的 TP-Destination-Address 地址——取值字段;将 BCD数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符;<toda>给定的地址类型
<toda> 整数型的 GSM 04.11 TP-Destination-Address 中的 8 位:“类型—地址”字段(当<da>的首字符为+(IRA 43)时,缺省值为 145,否则缺省值为 129)
-
129 未知类型(IDSN 格式号码)
-
145 国际号码类型(IDSN 格式号码)
<mr> 整数型的 GSM 03.40 TP-Message-Reference
举例
发→◇AT+CMSS=3 收←◆+CMSS: 2 收←◆OK
AT+CMGD 删除短消息
Command | Possible response(s) |
+CMGD=<index>[,<delflag>] | OK ERROR +CME ERROR:<err> |
+CMGD=? | +CMGD:(list of supported<index>) OK |
举例
发→◇AT+CMGD=? 收←◆+CMGD: <index> 收←◆OK
发→◇AT+CMGD=3 //删除下标为3存储区的短信 收←◆OK
AT+CMGL 列出优选短消息存储器中的短消息
Command | Possible response(s) |
+CMGL=<stat> | 1)文本模式(AT+CMGF=1)且该命令执行成功对于 SMS-SUBMIT 和/或 SMS-DELIVER: +CMGL: <index>,<stat>,<oa/da>,[<scts>],[<tooa/toda>],<length><CR><LF><data>[<CR><LF> +CMGL: <index>,<stat>,<da/oa>[,<scts>][,<tooa/toda>],<length><CR><LF><data>[...]] 2)PDU 模式(AT+CMGF=0)且该命令执行成功 +CMGL: <index>,<stat>,<length><CR><LF><pdu><CR><LF> +CMGL: <index>,<stat>,<length><CR><LF><pdu> [...]] OK 3)功能相关错误,返回 +CMS ERROR: <err> |
+CMGL=? | +CMGL: (list of supported<stat>) OK |
该命令可查询优选短消息存储器<mem1>中,状态值为<stat>的消息显示在TE中。
参数
<stat>
为了使用方便,PDU/TEXT表示共用
-
0 已接收但未读的短消息
-
1 已接收且已读的短消息
-
2 已存储但未发送的短消息
-
3 已存储且已发送的短消息
-
4 所有短消息
<da> 字符型的 GSM 03.04 中的 TP-Destination-Address 地址——取值字段;将 BCD数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符; <toda>给定的地址类型。
<data> 短消息情况下:GSM 03.40 TP-User-Data 在文本模式下返回,格式定义如下:
− 若<dcs>指定用 GSM 03.38 缺省字母格式字符,且<fo>指定 GSM 03.40,则没有设置 TPUser-Data-Header-Indication。
− 若 TE 字符集不为十六进制数据(参考 TS 07.07 中的 AT+CSCS 命令选择的TE 字符集);则根据 Annex A 规则,ME/TA 将 GSM 字母格式字转换为当前TE 的字符集。
− 若 TE 字符集为十六进制数据,则 ME/TA 将 GSM 字母格式字符的每个7位字符转换为两个 IRA 字符表示的十六进制书(如字符 P(GSM 32)作为17(IRA 49 和 55))
− 若<dcs>指定用 8 位或 UCS2 编码方案,或<fo>指定 GSM03.40;则设置TPUser-Data-Header-Indication:ME/TA 将 GSM 字母格式字符的每个 8 位字符转换为用两个 IRA 表示的十六进制数(如:8 位字符代表的整数42 传给 TE 时用两个字符来表示 2A(IRA 50 和 65))小区广播情况下:GSM 03.41CBM 消息内容,在文本模式下返回,格式定义如下:
− 若<dcs>指定用 GSM 03.38 缺省字母格式字符,则 ME/TA 将 GSM 转换成当前 TE 支持的字符。
− 若 TE 字符集不为十六进制数(参考 TS 07.07 中的 AT+CSCS 命令选择的符集);则根据 Annex A 规则,ME/TA 将 GSM 字母格式字符转换为当前TE的字符集。
− 若 TE 字符集为十六进制数,则 ME/TA 将 GSM 字母格式字符的每个 7位总字符自己转换为两个 IRA 字符表示的十六进制数。
− 若<dcs>指定用 8 位或 UCS2 编码方案,或<fo>指定 GSM 03.40;则设置TPUser-Data-Header-Indication:ME/TA 将 GSM 字母格式字符的每个 8 位字符转换为用两个 IRA 表示的 16 进制数。
<length> 整数类型;文本模式(AT+CMGF=1)下,用字符表示<data>(或<cdata>)消息正文的长度; PDU 模式(AT+CMGF=0)下, 8 位真实 TP 数据单位的长度(即 RP 层的 SMSC 地址中的 8 位字符将不计算在该长度内)
<index> 整数类型;在相应存储器支持的短消息容量内的值<oa> 字符型的 GSM 03.40 中的 TP-Destination-Address 地址——取值字段;将 BCD数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符;<toda>给定的地址类型
<pdu> ISDMS 情况下: GSM 03.40 TPDU。十六进制,遵循 GSM 04.11SC 地址;ME/TA把 TP 数据单元中每个 8 位字符转换为包含 2 个 IRA 字符的十六进制数字(如:整数取值为 42 的 8 位字符作为 2 位数字(2A,即 IRA50 和 65)发送给 TE)广播消息情况下:使用十六进制的 GSM 03.41 TPDU
<scts> 使用“时间—字符串”格式的 GSM 03.40 TP-Service-Center-Time-Stamp(参考<dt>)
<toda> 整数型的 GSM 04.11 TP-Destination-Address 中的 8 位:“类型—地址”字段,当<da>的首字符为+(IRA 43)时,缺省值为 145,否则缺省值为 129)
<tooa> 整数型的 GSM 04.11 TP-Originating-Address 中的 8 位“类型—地址”字段(参考<toda>)
举例
发→◇AT+CMGL=? 收←◆+CMGL: (0-4) 收←◆OK
//读命令 1)文本模式(+CMGF=1) 发→◇AT+CMGL=4 收←◆+CMGL: 1,2,"862856044778640",52 收←◆049168000011000F9168826540748746F00000AA0531D98C5603 收←◆+CMGL: 2,2,"862856044778640",5 收←◆12345 收←◆OK
2)PDU模式(+CMGF=0) 发→◇AT+CMGL=4 收←◆+CMGL: 2,2,22,0491680000110C0F9168826540748746F00000AA0531D98C5603 收←◆+CMGL: 4,2,22,0491680000110E0F9168826540748746F00000AA0531D98C5603 收←◆+CMGL:3,2,63,0491680000110F0F9168826540748746F000000034305A2E66C3C1 6030582C0683C18CB9980D8793D96A34D88D86BBD16C46180C06830583B0DA2C46CCE1863 51B6C06 收←◆OK
AT+CMGR 读取短消息
Command | Possible response(s) |
+CMGR=<index> | 1)文本模式(AT+CMGF=1)且该命令执行成功: 对于 SMS-DELIVER: +CMGR: <stat>,<oa>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>],<length><CR><LF><data> 对于 SMS-SUBMIT: +CMGR: <stat>,<da>[,<toda>,<fo>,<pid>,<dcs>,[<vp>],<sca>,<tosca>],<length><CR><LF> 2)PDU 模式(AT+CMGF=0)且该命令执行成功: +CMGR: <stat>,<length><CR><LF><pdu> OK 3)功能相关错误,返回 +CMS ERROR: <err> |
+CMGR=? | +CMGR: (list of supported<stat>) OK |
该命令可将短消息存储器<mem1>中,索引号为<index>的短消息返回到TE。
参数
<index> 整数类型;关联存储器支持的地址编号范围内取值
<da> 字符型的 GSM 03.04 中的 TP-Destination-Address 地址——取值字段;将 BCD数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符;<toda>给定的地址类型
<data> 短消息情况下:GSM 03.40 TP-User-Data 在文本模式下返回,格式定义如下:
− 若<dcs>指定用 GSM 03.38 缺省字母格式字符,且<fo>指定 GSM 03.40,则 没有设置 TPUser-Data-Header-Indication
− 若 TE 字符集不为十六进制数据(参考 TS 07.07 中的 AT+CSCS 命令选择的TE 字符集);则根据 Annex A 规则,ME/TA 将 GSM 字母格式字符转换为
当前 TE 的字符集
− 若 TE 字符集为十六进制数据,则 ME/TA 将 GSM 字母格式字符的每个 7位字符转换为两个 IRA 字符表示的十六进制书(如字符 P(GSM 32)作为17(IRA 49 和 55))
− 若<dcs>指定用 8 位或 UCS2 编码方案,或<fo>指定 GSM03.40;则设置TPUser-Data-Header-Indication:ME/TA 将 GSM 字母格式字符的每个 8 位
字符转换为用两个 IRA 表示的十六进制数(如:8 位字符代表的整数 42 传给 TE 时用两个字符来表示 2A(IRA 50 和 65)小区广播情况下:GSM 03.41 CBM 消息内容,在文本模式下返回,格式定义如下:
− 若<dcs>指定用 GSM 03.38 缺省字母格式字符,则 ME/TA 将 GSM 转换成 当前 TE 支持的字符
− 若 TE 字符集不为十六进制数(参考 TS 07.07 中的 AT+CSCS 命令选择的TE 字符集);则根据 Annex A 规则,ME/TA 将 GSM 字母格式字符转换为 当前 TE 的字符集
− 若 TE 字符集为十六进制数,则 ME/TA 将 GSM 字母格式字符的每个 7 位 总字符自己转换为两个 IRA 字符表示的十六进制数
− 若<dcs>指定用 8 位或 UCS2 编码方案,或<fo>指定 GSM 03.40;则设置TPUser-Data-Header-Indication:ME/TA 将 GSM 字母格式字符的每个 8 位字 符转换为用两个 IRA 表示的 16 进制数
<dcs> 取决于该命令或该命令结果码 GSM 03.38 中的 SMS 数据编码方案。(缺省值 0) 或者小区广播数据编码方案
<fo> 取决于该命令结果码 GSM 03.40 SMS-DELIVER, SMS-SUBMIT (缺省值 17),SMS-STATUS-REPORT 或采用整数型 SMS-COMMAND(缺省值 2)
<length> 整数型;文本模式(AT+CMGF=1)下,用字符表示<data>(或<cdata>)消息正文的长度;PDU 模式(AT+CMGF=0)下,8 位真实 TP 数据单位的长度(即RP 层的 SMSC 地址中的 8 位字符将不计算在该长度内)
<mid> 整数型的 GSM 03.41 CBM 消息标识
<oa> 字符型的 GSM 03.40 中的 TP-Destination-Address 地址——取值字段;将 BCD 数值(或缺省 GSM 字母格式的字符)转换为当前选择的 TE 字符集中的字符(参考 TA 07.07 中的 AT+CSCS 命令);<toda>给定的地址类型
<pdu> ISDMS 情况下: GSM 03.40 TPDU。十六进制,遵循 GSM 04.11SC 地址; ME/TA把 TP 数据单元中每个 8 位字符转换为包含 2 个 IRA 字符的十六进制数字(如:整数取值为 42 的 8 位字符作为 2 位数字(2A,即 IRA 50 和 65)发送 给TE)广播消息情况下:使用十六进制的 GSM 03.41 TPDU
<pid> 参考 GSM03.40;TP-协议-标识(缺省值 0)
<sca> GSM 04.11 中的 RP SC 地址是字符串型参数;将 BCD 数值(或缺省 GSM 默认字母的字符)转换成 TE 当前选择字符集中的字符;<tosca>用来指定地址类型。
<scts> 使用“时间—字符串”格式的 GSM03.40 TP-Service-Center-Time-Stamp (参考<dt>)
<stat> PDU模式/TEXT模式
-
0 已收到但未读的短消息
-
1 已收到且已读的短消息
-
2 已存储但未发送的短消息
-
3 已存储且已发送的短消息
-
4 所有短消息
<toda> 整数型的 GSM 04.11 TP-Destination-Address 中的 8 位:“类型—地址”字段(当<da>的首字符为+(IRA 43)时,缺省值为 145,否则缺省值为 129)
<tooa> 整数型的 GSM 04.11 TP-Originating-Address 中的 8 位“类型—地址”字段(参考<toda>)
<tosca> 服务中心地址格式; GSM 04.11 RP SC 使用整数型的 8 位地址类型(缺省值请参考<toda>)
<vp> 取决于 SMS-SUBMIT 的<fo>的设置;采用整数型(缺省值 167),或时间—字符型(参考<dt>)的 GSM 03.40 TP-有效期
备注
如果当前存储器中没有短信,操作 AT+CMGR 读取短消息动作,仍返回 OK
举例
发→◇AT+CMGR=? 收←◆+CMGR:收←◆OK
//读命令 1)文本模式(+CMGF=1) 发→◇AT+CMGR=4 收←◆+CMGR: 2,"862856044778640",145,17,0,0,170,"860000",145,5 收←◆12345 收←◆OK
2)PDU模式(+CMGF=0) 发→◇AT+CMGR=4 收←◆+CMGR: 2,22,0491680000110E0F9168826540748746F00000AA0531D98C5603 收←◆OK
AT+CMGS 发送短消息
Command | Possible response(s) |
1)文本模式(+CMGF=1): +CMGS=<da>[,<toda>]<CR>text is entered <Ctrl-Z/ESC> ESC退出发送 2)PDU模式(+CMGF=0):+CMGS=<length><CR> PDU is given <ctrl-Z/ESC> |
1)文本模式(+CMGF=1)且执行成功: +CMGS: <mr> OK 2)PDU 模式(+CMGF=0)且执行成功: +CMGS: <mr> OK 3)功能相关报错 +CME ERROR:<err> |
举例
1)文本模式(+CMGF=1) 发→◇AT+CMGS="15723244049" 收←◆> //输完短信内容后,按组合键CTRL+Z>发送 或者 发送十六进制0x1A发送,按键ESC>退出 或者 发送十六进制0X1B退出 发→◇hello world 收←◆+CMGS: 10 收←◆OK
1)PDU模式(+CMGF=0) 发→◇AT+CMGS=20 收←◆> //输完短信内容后,按组合键CTRL+Z>发送 或者 发送十六进制0x1A发送,按键ESC>退出 或者 发送十六进制0X1B退出 收←◆049168000001000D91685127234440F900000631D98C56B301 收←◆+CMGS: 11 收←◆OK
AT+CAMS 配置下行短信确认方式
Command | Possible response(s) |
+CAMS=<mode> | OK ERROR +CME ERROR:<err> |
+CAMS? | +CAMS:<mode> OK |
+CAMS=? | +CAMS:(list of supported<mode>) OK |
该命令用于指定接收短信后的确认方式。
参数
<mode>
0 自动确认模式(默认)
1 手动确认模式
举例
发→◇AT+CAMS=? 收←◆+CAMS: (0,1) 收←◆OK
发→◇AT+CAMS=1 收←◆OK
发→◇AT+CAMS? 收←◆+CAMS: 1 收←◆OK
AT+CNMI 新短消息指示
Command | Possible response(s) |
+CNMI=<mt> | OK ERROR +CME ERROR:<err> |
+CNMI? | +CNMI:<mt> OK |
+CNMI=? | +CNMI:(list of supported<mt>) OK |
相关 URC 上报: 1)新短消息到达,上报提示:+CMTI: <mem>,<index> 2)新短消息到达,直接显示短消息内容: +CMT: <length><CR><LF><pdu> |
参数
<mt> 存储接收短消息的规则取决于数据编码方案(请参考 GSM 03.38[2]);优选短消息存储器命令(AT+CPMS)的设置和本取值
-
0 没有 SMS-DELIVER 的指示发给 TE。
-
1 若 SMS-DELIVER 存储在 ME/TA,存储位置靠非请求结果码+CMTI: <mem>,<index>来提示给 TE。
-
2 SMS-DELIVERs(除 Class2 短消息)直接发送给 TE,使用如下非请求结果码:+CMT: <length><CR><LF><pdu> (启用 PDU 模式)或者+CMT: <oa>,<scts> [,<tooa>,<fo>,<pid>,<dcs>,<sca>, <tosca>,<length>]<CR><LF><data> (启用文本模式);以上斜体部分参数定义参见命令AT+CSDH.Class2 短消息指示方式同<mt>=1
举例
发→◇AT+CNMI=? 收←◆+CNMI: (0-2) 收←◆OK
发→◇AT+CNMI=2 收←◆OK
发→◇AT+CNMI? 收←◆+CNMI: 2 收←◆OK
举例
发→◇AT+CMGF=1 // 设置文本短信模式 收←◆OK
发→◇AT+CNMI=1 // 设置将短信存储到ME或SIM卡后,再给出新短信指示 收←◆OK
收←◆+CMTI: "ME",5 // 新短信指示
发→◇AT+CNMI=2 // 设置收到新短信,直接打印短信内容 收←◆OK
收←◆+CMT: "8615723244049","22/10/19,11:18:19+032",161,4,0,0,"0000",161,11 收←◆"hello world" // 收到新短信,直接打印短信内容
AT+CNMA 新短消息确认
Command | Possible response(s) |
+CNMA=<n> | OK ERROR +CME ERROR:<err> |
使用执行命令,可确认是否正确接收新消息(SMS-DELIVER),该新消息是由 MT 直接发送到 TE 而不缓存。 在同时满足如下条件的情况下,需要通过AT+CNMA给出短信确认:
→通过 AT+CAMS=1,将<mode>设为 1;
参数
<n> 0 该指令与文本模式定义的指令执行类似
1 发送 RP-ACK(或正确接收到的缓冲结果码)
2 发送 RP-ERROR
举例
发→◇AT+CNMA=1 //下行短信进行确认 收←◆OK
AT+CSDH 显示文本格式参数
Command | Possible response(s) |
+CSDH=<show> | OK ERROR +CME ERROR:<err> |
+CSDH? | +CSDH:<show> OK |
+CSDH=? | +CSDH:(list of supported<show>) OK |
该命令可用于控制是否在文本模式下的结果码中显示详细的头信息。
参数
<show>
-
0 不在+CMT, +CMGL, +CMGR 命令中显示<sca>、 <tosca>、 <fo>、 <vp>、<pid>和<dcs> (+CSCA 和+CSMP 命令中设置的取值),也不显示用于SMS-DELIVER和 SMS-SUBMIT 消息的结果码中的<length>、<toda>或<tooa>;
-
1 在结果码中显示这些取值
举例
发→◇AT+CSDH=? 收←◆+CSDH: (0,1) 收←◆OK
发→◇AT+CSDH=1 收←◆OK
发→◇AT+CSDH? 收←◆+CSDH: 1 收←◆OK
举例
发→◇AT+CSDH=0 收←◆OK
发→◇AT+CMGR=3 收←◆+CMGR: 1,"862856044778640",11 收←◆hello world 收←◆OK
发→◇AT+CSDH=1 收←◆OK
发→◇AT+CMGR=3 收←◆+CMGR: 1,"862856044778640",161,4,0,0,"0000",161,11 收←◆hello world 收←◆OK
AT+CSMP 设置文本格式参数
Command | Possible response(s) |
+CSMP=[<fo>[<vp>[,<pid>[,<dcs>]]]] | OK ERROR +CME ERROR:<err> |
+CSMP? | +CSMP:<fo>,<vp>,<pid>,<dcs> OK |
+CSMP=? | +CSMP:(list of supported<fo>),(list of supported<vp>),(list of supported<pid>),(list of supported<dcs>) OK |
文本模式下,当向网络侧发送短消息或将短消息存放在存储器中时,使用设置命令可选择需要附加参数取值。除此之外,还可以用于设置从 SMSC 接收到该短消息时算起的有效期(<vp>的取值范围:0~255)或定义有效期终止的绝对时间(<vp>为字符串时)。<vp>的格式由<fo>指定。若TA 支持增强型有效期格式(($(EVPF)$,请参考 GSM 03.40),应该把 16 进制的编码字符串放于双引号中(请参考<pdu>)。
参数
<fo> 取决于该命令或结果码; GSM 03.40 SMS-DELIVER, SMS-SUBMIT (缺省值:17), SMS-STATUS-REPORT 的前 8 位;或采用整数型 SMS-COMMAND(缺 省值:2);在文本模式下若<fo>值设为 49,则支持消息状态报告。
(1)应答路径—TP-RP(TP-Reply-Path):
-
0—不设置
-
1—设置
(2)用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):
-
0—不含任何头信息
-
1—含头信息
(3)状态报告要求—TP-SPR(TP-Status-Report-Request):
-
0—需要报告
-
1—不需要报告
(4)有效期格式—TP-VPF(TP-Validity-Period-Format):
-
00—不提供(Not present);
-
10—整型(标准);
-
01—预留;
-
11—提供 8 位字节的一半(Semi-Octet Represented)
(5)拒绝复制—TP-RD(TP-Reject-Duplicates):
-
0—接受复制
-
1—拒绝复制
(6)信息类型提示—TP-MTI(TP-Message-Type-Indicator):
-
00—读出(Deliver)
-
01—提交(Submit)
<vp> 取决于 SMS-SUBMIT 的<fo>的设置;采用整数型(缺省值:167),或时间—字符型(参考<dt>)的 GSM 03.40 TP-有效期
<pid> 整数型;参考 GSM 03.40 TP-协议-标识(缺省值:0)
<dcs> 整数型;取决于该命令或该命令结果码 GSM 03.38 中的 SMS 数据编码方案。
-
0—默认的字母表(7bit 编码)
-
4—8bit
-
8—USC2(16bit)编码
举例
发→◇AT+CSMP=? 收←◆+CSMP: <fo>,<vp>,<pid>,<dcs> 收←◆OK
发→◇AT+CSMP=17,0,0,0 收←◆OK
发→◇AT+CSMP? 收←◆+CSMP: 17,0,0,0 收←◆OK
+CMTI/+CMT指示新的短消息
Command | Possible response(s) |
+CMTI:<mem>,<index> OK |
|
+CMT: <length><CR><LF><pdu> (启用PDU模式 ) +CMT:<oa>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>, <length>]<CR><LF><data>(启用文本模式) OK |
参数
<mem> 字符串类型存储器存储新消息
<index> 整数类型价值定位数范围由关联的内存支持
<length> 整数类型;值指示在文本模式(+ CMGF = 1)的消息体<数据>长度(或<cdata>)字符;或在PDU模式(+ CMGF = 0),在字节实际TP数据单元的长度(即RP层SMSC地址字节不计入长度)
<fo> 根据命令或结果代码:3G TS 23.040 [ 3 ] SMS-DELIVER第一个八位组,SMS-SUBMIT(默认为17),sms-status-report,或sms-command(默认为2)在整数格式
<VP> 取决于sms-submit支持,增强的格式(十六进制编码的字符串用双引号)
< pid > 3G TS 23.040 [ 3 ] TP协议整型格式标识符(默认为0)
< dcs > 根据命令或结果代码:3G TS 23.038 [ 2 ]短信数据编码方案(default0),或小区广播数据在整数格式的编码方案
< sca > 3G TS 24.011 [ 6 ] RP SC地址字符串格式的地址值字段;
<tosca> 3G TS 24.011 [ 6 ] RP SC地址格式地址字节整数类型
< scts> 3G TS 23.040 [ 3 ] TP服务中心的时间戳字符串格式的时间(参阅<dt>)对应的条目机器翻译电话簿找到;实此功能是具体制造商的;使用的字符集应该是一个选择命令选择的技术特点。
举例
发→◇AT+CNMI=1 收←◆OK
发→◇AT+CMGF=0 //设置短信为PDU模式 收←◆OK
发→◇AT+CNMI=0,2,0,0,0 收←◆OK
收←◆+CMT: 31,03A10000040FA168826540748746F00000220191113261020BE8329BFD06DDDF723619
发→◇AT+CMGF=1 //设置短信为文本模式 收←◆OK
发→◇AT+CSDH=1 收←◆OK
发→◇AT+CNMI=2 收←◆OK
收←◆+CMT: "862856044778640","22/10/19,11:18:19+032",161,4,0,0,"0000",161,11,hello world
短信测试示例
短信直发(+CMGS)
TEXT模式 收发短信
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇at+qcna? //查询CS域网络附着状态 收←◆+QCNA: 1 //1--表示网络处于附着状态 0--表示未处于附着状态,此时可等待一段时间后再查询 收←◆OK 发→◇at+cmgf=1 //设置为TEXT模式 收←◆OK 发→◇at+csmp= 17,0,0,0 //设置TEXT模式参数 收←◆OK 发→◇at+cmgs="+8615723244049" //发送短信 收←◆> 发→◇hello world 收←◆+CMGS: 10 OK 发→◇at+cnmi=2 //设置TE显示 收←◆OK +CMT: "8615723244049",11,hello world//接收到短信内容
PDU模式 收发短信
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇at+qcna? //查询CS域网络附着状态 收←◆+QCNA: 1 //1--表示网络处于附着状态 0--表示未处于附着状态,此时可等待一段时间后再查询 收←◆OK 发→◇at+cmgf=0//设置为PDU模式 收←◆OK 发→◇at+cmgs=24 //PDU模式下发送 收←◆> 发→◇049168000001000D91685127234440F900000BE8329BFD06DDDF723619 收←◆+CMGS: 13 OK 发→◇at+cnmi=2 //设置TE显示 收←◆OK //收到短信内容 +CMT: 26,03A10000040FA168826540748746F000002201911184850205F072785C06
短信存储发送(+CMGW +CMSS)
TEXT模式 存储+发送
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇at+qcna? //查询CS域网络附着状态 收←◆+QCNA: 1 //1--表示网络处于附着状态 0--表示未处于附着状态,此时可等待一段时间后再查询 收←◆OK 发→◇at+cmgf=1 //设置为TEXT模式 收←◆OK 发→◇at+csmp= 17,0,0,0 //设置TEXT模式参数 收←◆OK 发→◇at+cmgw="+862856044778640" //存储短信 收←◆> 发→◇hello world 收←◆+CMGW: 4 OK 发→◇at+cmss=4 //从存储区发送 收←◆+CMSS: 14 OK
PDU模式 存储+发送
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇at+qcna? //查询CS域网络附着状态 收←◆+QCNA: 1 //1--表示网络处于附着状态 0--表示未处于附着状态,此时可等待一段时间后再查询 收←◆OK 发→◇at+cmgf=0 //设置为PDU模式 收←◆OK 发→◇at+cmgw=24 //存储短信 收←◆> 发→◇049168000001000D91685127234440F900000BE8329BFD06DDDF723619 收←◆+CMGW: 5 OK 发→◇at+cmss=5 //从存储区发送 收←◆+CMSS: 15 OK
短信的查看删除(+CMGR +CMGL +CMGD)
*注:*TEXT模式下,使用+CMGW进行短信存储,一定要先执行2个AT
AT+CFUN=1(从SIM卡读取存储所需要的短消息中心地址,或者+CSCA指定)
AT+CMGF=1 (指定为TEXT模式)(模式参数,在设置TEXT模式后得到缺省值)
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇at+qcna? //查询CS域网络附着状态 收←◆+QCNA: 1 //1--表示网络处于附着状态 0--表示未处于附着状态,此时可等待一段时间后再查询 收←◆OK 发→◇at+cmgf=0 //设置为PDU模式 收←◆OK 发→◇at+cmgw=24 //存储短信 收←◆> 发→◇049168000001000D91685127234440F900000BE8329BFD06DDDF723619 收←◆+CMGW: 4 OK 发→◇at+cmgl=4 //PDU模式下,查看存储的所有短信 +CMGL: 0,2,22,0491680000110A0F9168826540748746F000000005E8329BFD06 +CMGL: 1,2,23,0491680000110B0F9168826540748746F00000000631D98C56B301 +CMGL: 2,2,21,0491680000110C0F9168826540748746F000000004375C0E06 +CMGL: 3,2,27,0491680000110D0F9168826540748746F00000000BE8329BFD06DDDF723619 OK 发→◇at+cmgr=1 //查看index为1短信内容 收←◆+CMGR: 2,23,0491680000110B0F9168826540748746F00000000631D98C56B301 OK 发→◇at+cmgf=1 //设置为TEXT模式 收←◆OK 发→◇at+csmp=17,0,0,0 //设置TEXT模式参数 收←◆OK 发→◇at+cmgr=3 //查看index为4短信内容 收←◆+CMGR: 2,"862856044778640",11 hello world OK 发→◇at+cmgw="862856044778640" //存储短信 收←◆> 发→◇hello hywang 收←◆+CMGW: 4 OK 发→◇at+cmgl=4 //TEXT模式下,查看存储的所有短信 收←◆+CMGL: 0,2,"862856044778640",5 hello +CMGL: 1,2,"862856044778640",6 123456 +CMGL: 2,2,"862856044778640",4 7890 +CMGL: 3,2,"862856044778640",11 hello world OK 发→◇at+cmgd=2 //删除index为2的短信 收←◆OK 发→◇at+cmgl=4 //TEXT模式下,查看存储的所有短信 收←◆+CMGL: 0,2,"862856044778640",5,hello +CMGL: 1,2,"862856044778640",6,123456 +CMGL: 3,2,"862856044778640",11,hello world +CMGL: 4,2,"862856044778640",12,hello hywang OK
长短信发送
注:当前支持TEXT模式下的长短信发送,不支持PDU模式下长短信发送。
发→◇at+cfun=1 //上电 收←◆OK 发→◇at+cgclass=CC //CS域附着 收←◆OK 发→◇AT+CREG? //查询CS域网络附着状态 收←◆+CREG: 0,1,13173,16043 收←◆OK 发→◇at+cmgf=1 //设置为TEXT模式 收←◆OK 发→◇at+csmp= 81,0,0,0 //设置TEXT模式参数,81表示长短信 7bit编码 可发送数据大于160字符 收←◆OK 发→◇at+cmgs="15723244049" //存储短信 收←◆> 发→◇012345678901234567890123456789012345678901234567890123456789012345 6789012345678901234567890123456789012345678901234567890123456789012345 67890123456789012345678901234567890123456789 收←◆+CMGS: 14 OK