Skip to content

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=[,<tooa/toda>[,<stat>]]
<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
Back to top