协议标准 AT 短信及其他业务命令
短信业务AT命令
须知: 使用短信业务,需要确保短信业务打开。在关机状态下执行AT命令“AT+NCONFIG=SUPPORT_SMS,TRUE”。
发送短信: +CMGS
发送一条短信,目的地址号码建议携带国家码(比如中国是+86)。
命令 |
返回结果 |
示例 |
|---|---|---|
文本模式 (+CMGF=1): +CMGS=<da>[,<toda>] <text> <ctrl-Z/ESC> |
+CMGS: <mr> 错误场景: +CMS ERROR: <err> |
|
PDU模式 (+CMGF=0): +CMGS=<length> 给定的<pdu>ctrl-Z/ESC> |
+CMGS: <mr> 错误场景: +CMS ERROR: <err> |
|
+CMGS=? |
- |
AT+CMGS=? OK |
参数 |
描述 |
|---|---|
<da> |
字符串类型,发送短信的目的地址。号码由“*”、“#”、“+”、“a”、“b”、“c”、“0”~“9”组成,号码长度不超过20(不包含“+”号)个字符。 |
<toda> |
整型值,取值范围为129,145,目的地址类型。 129:当da为不带加号。 145:当da为国际号码即带加号时。 |
<length> |
整型值,取值范围7-164,TPDU长度指示。 |
<text> |
输入短信TEXT内容。 |
<pdu> |
发送的PDU 内容,16 进制数字符串。 |
<mr> |
整型值,取值范围为0~255,短信编号。 |
<ctrl-Z> |
字符“0x1A”,表示内容输入结束并发送短信命令。 |
<ESC> |
字符“0x1B”,表示取消本次发送短信命令操作。 |
- 输入的 PDU 内容只能出现在同一行内;输入的 TEXT内容支持分行。
- 若在短消息中心地址设置为默认格式的情况下,发送IMS短信失败,可以尝试将短消息中心设置为国际号码格式,再次尝试发送。
-
PDU短信结构组成为短信中心地址 + TPDU包。
-
PDU短信结构具体如表1所示:
表 1 PDU短信结构示意表
[<SCA>]
TPDU
<sc_len>
<type_addr>
<numbers>
-
TPDU包组成结构如表2所示:
表 2 TPDU包组成示意表
TPDU的第一个字节
(1-Octet)
短信引用
(1-Octet)
目的地址
(2~12Octet)
协议标志
(1-Octet)
用户数据编码方式
(1-Octet)
有效期
(1 or 7-Oct)
用户数据长度
(1-Octet)
用户数据
<FO>
<MR>
<DA>
<PID>
<DCS>
<VP>
<UDL>
<UD>
范围是0~255,作用是和短信中心确认消息状态。
DA=号码长度(号码字符个数)+号码类型(91为国际号码,81为普通号码)+号码(字节内逆序,不足按F补充)。
参见CSMP命令实现说明中<pid>参数说明中的表4。
参见CSMP命令实现说明中<dcs>参数说明中的表5。
参见CSMP命令实现说明中<vp>参数说明。
此为字节长度。
UD:消息的用户数据,被限制在140个字节之内。在PDU Mode中可以采用以下三种编码方式来对发送的内容进行编码:
GSM-7bit:用于发送普通的ASCII字符,每个字符可压缩成7个,可发送普通消息最大字符数为160字符,比如英文或数字。
GSM-8bit:用于发送数据消息,比如图片和声音,可发送普通消息最大字符数为140字符。
UCS2:用于发送Unicode字符,宽字符(占两字节),可发送普通消息最大字符数为70字符,比如中文字符。
-
设置短信中心地址: +CSCA
设置短信中心地址。
命令 |
返回结果 |
示例 |
|---|---|---|
+CSCA=<sca>[,<tosca>] |
- 错误场景: +CMS ERROR: <err> |
AT+CSCA="13800000000" OK |
+CSCA? |
+CSCA: <sca>,<tosca> |
AT+CSCA? +CSCA: "13800000000",129 OK |
+CSCA=? |
- |
AT+CSCA=? OK |
参数 |
描述 |
|---|---|
<sca> |
字符串类型,短信中心地址。号码由“*”、“#”、“+”、“a”、“b”、“c”、“0”~“9”组成,号码长度不超过16(不包含“+”号)个字符。 |
<tosca> |
整型值,取值范围为129,145,短信中心地址类型。 129:当sca为不带加号。 145:当sca为国际号码即带加号时。 |
配置会存入NV,在不同模式下此命令的功能如下:
- 文本模式下,写短信和发短信命令使用该命令设置的短信中心地址。
- PDU模式下,仅当<pdu>参数中短信中心地址长度为0时,使用该命令设置短信中心地址。
新短信通知: +CNMI
设置新短信上报方式。
命令 |
返回结果 |
示例 |
|---|---|---|
+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]] |
- 错误场景: +CMS ERROR: <err> |
+CMTI: <mem>,<index> AT+CNMI=2,1,0,0,0 OK |
+CNMI? |
+CNMI: <mode>,<mt>,<bm>,<ds>,<bfr> |
AT+CNMI? +CNMI: 2,1,0,0,0 OK |
+CNMI=? |
+CNMI: (支持的<mode>列表),(支持的<mt>列表),(支持的<bm>列表) ,(支持的<ds>列表),(支持的<bfr>列表) |
AT+CNMI=? +CNMI: (2),(1,2),(0-3),(0-2),(0,1) OK |
参数 |
描述 |
|---|---|
<mode> |
整型值,短信通知方式,取值范围为2,默认为2。 2:将短信通知直接发送给TE。 |
<mt> |
整型值,新短信上报方式,取值范围为1~2,默认为1。 1:新短信通过+CMTI: <mem>,<index>方式发给TE; 2:新短信通过+CMT: <index>,<length><CR><LF><pdu>(PDU模式)或者+CMT: <oa>,<index>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>(文本模式)方式发给TE。 |
<mem> |
字符串类型,短信存储器。 "SM":存储在SIM卡; "ME":存储在FLASH。 |
<index> |
整型值,接收短信在存储器中的索引值,取值范围为0-9。 |
<bm> |
整型值,新广播消息的上报方式,取值范围为0~3(此参数不生效)。 0:不将小区广播消息发给TE; 1: 如果消息发送成功,则发送指示; 2:新广播短信通过+CBM; 3: 将消息路由到TE。 |
<ds> |
整型值,短信状态报告的上报方式,取值范围为0~2(此参数不生效)。 0:不将状态报告发给TE; 1:状态报告通过+CDS: <length><CR><LF><pdu>(PDU模式)或者+CDS: <fo>,<mr>,[<ra>],[<tora>],<scts>,<dt>,<st>(文本模式)方式发给TE; 2:状态报告通过+CDSI: <mem>,<index>方式发给TE。 |
<bfr> |
整型值,用于设置从<mode>=0模式进入<mode>=1-2模式后缓存的处理,取值范围为0~1(此参数不生效)。 0:进入<mode>1-2模式后,将缓存的unsolicited result code一次性发送给TE; 1:进入<mode>1-2模式后,将缓存的unsolicited result code清空。 |
配置不会存入NV。
控制短信链路: +CMMS
设置控制短信中继协议(RP)层的链接的连续性。当使能了该特性,并且网络也支持时,发送连续多条短信时RP层的链接将一直存在,而无需在每两条短信之间再进行拆链和建链的过程,从而发送的速度将快很多。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMMS=<n> |
- 错误场景: +CMS ERROR: <err> |
AT+CMMS=2 OK |
+CMMS? |
+CMMS: <n> |
AT+CMMS? +CMMS: 2 OK |
+CMMS=? |
+CMMS: (支持的<n>列表) |
AT+CMMS=? +CMMS: (0-2) OK |
参数 |
描述 |
|---|---|
<n> |
整型值,禁止或使能控制短信中继协议(RP)层的链接的连续性功能,取值范围为0-2,默认值为0。 0:禁止; 1:使能一次。当前一条发送短信的返回和后一条发送短信的间隔小于1s~5s(具体的取值取决于MT的实现),RP链接保持不断。当超过了1s~5s时,RP链接中断,并且<n>值将自动设置回0,即不再继续使能。 2:一直使能。当前一条发送短信的返回和后一条发送短信的间隔小于1s~5s(具体的取值取决于MT的实现),RP链接保持不断。当超过了1s~5s时,RP链接中断,并且<n>值仍保持为2,即继续使能。 |
-
配置不会存入NV。
-
前一条发送短信的返回和后一条发送短信的间隔时间为5s。
设置短信格式:+CMGF
设置短信采用的格式。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMGF=<mode> |
- 错误场景: +CMS ERROR: <err> |
AT+CMGF=1 OK |
+CMGF? |
+CMGF: <mode> |
AT+CMGF? +CMGF: 1 OK |
+CMGF=? |
+CMGF: (支持的<mode>列表) |
AT+CMGF=? +CMGF: (0,1) OK |
参数 |
描述 |
|---|---|
<mode> |
整型值,短信格式,取值范围为1-2,默认值为0。 0:PDU模式; 1:文本模式。 |
- 配置会存入NV。
- 如果接收方是PDU模式,接收的text短信会自动转码为PDU格式;如果接收方是TEXT模式,接收的PDU短信会自动解码成TEXT格式。
设置文本模式参数:+CSMP
文本模式下设置发送和存储短信的相关参数。
命令 |
返回结果 |
示例 |
|---|---|---|
+CSMP=[<fo>[,<vp>[,<pid>[,<dcs>]]]] |
- 错误情况: +CMS ERROR: <err> |
AT+CSMP=1,167,0,0 OK |
+CSMP? |
+CSMP: <fo>,<vp>,<pid>,<dcs> |
AT+CSMP? +CSMP: 1,167,0,0 OK |
+CSMP=? |
- |
AT+CSMP=? OK |
参数 |
描述 |
|---|---|
<fo> |
整型值,TPDU的第1个字节,取值范围为0~255,默认为17;本产品CSMP设置时只支持<fo>为1(00000001)、5(00000101)、17(00010001)、21(00010101)、33(00100001)、37(00100101)、49(00110001)、53(00110101)。 具体实现含义参见实现说明。 |
<vp> |
字符串类型,短信有效期,默认为167;格式由<fo>中有效期格式决定。本产品CSMP设置时,只支持VP段无效及VP段为相对时间格式, 具体实现含义参见实现说明。 |
<pid> |
整型值,协议标识,取值范围为0~255,默认为0;本产品CSMP设置时只支持<pid>为0(00000000)。 具体实现含义参见实现说明。 |
<dcs> |
整型值,短信内容的编码方案,取值范围为0~255,默认为0(7bit编码noclass短信);本产品CSMP设置时<dcs>参数取值范围为0~11(noclass短信)、16~27(class0-class3短信)。 <dcs>可配置值受命令+CSCS影响如下: 当+CSCS配置为“GSM”时,<dcs>可配置范围0~3、16~19,即短信内容使用7bit编码; 当+CSCS配置为“IRA”时,<dcs>可配置范围4~7、20~23,即短信内容使用8bit编码; 当+CSCS配置为“UCS2”时,<dcs>可配置范围8~11、24~27,即短信内容使用UNICODE编码。 具体实现含义参见实现说明。 |
-
配置会存入NV。
-
<fo>:TPDU 的第一个字节,具体参数含义如表1所示,按照bit[7:0]具体排列如表2所示。
表 1 消息类型为SMS-SUBMIT时<fo>含义
缩写
全称
参数类型
大小
描述
TP-MTI
TP-Message-Type-Indicator
M
2b
TP层消息类型。
TP-RD
TP-Reject-Duplicates
M
b
指示SC是否需要拒收一条在短信中心有保存的短信,这条短信与保存在短信中心的短信有相同的TP-OA,TP-MR和TP-DA。
TP-VPF
TP-Validity-Period-Format
M
2b
指示TP-VP是否有效。
TP-RP
TP-Reply-Path
M
b
指示是否请求回复路径。
TP-UDHI
TP-User-Data-Header-Indicator
O
b
指示TP-UD有一个头。
TP-SRR
TP-Status-Report-Request
O
b
指示是否请求短信状态报告。
注1:M代表Mandatory(必选参数),O代表Optional(可选参数)。
注2:b代表bit。
表 2 <fo>bit[7:0]具体排列及取值含义
b7
b6
b5
b4
b3
b2
b1
b0
TP-RP
TP-UDHI
TP-SRR
TP-VPF
TP-RD
TP-MTI
回复短信路径的设置指示。
bit[7]取值如下:
0:没有设置;
1:有设置,指示回复短信与发送时具有相同的SC号码设置,返回路径相同。
用户数据头的指示。
bit[6]取值如下:
0:用户数据段只有短消息的内容;
1:用户数据段除了短消息外,还包含有一个数据头。
状态报告请求指示。
bit[5]取值如下:
0:不需要一个短信成功发送的状态报告信息;
1:需要一个短信成功发送的状态报告信息。
指示TP-VP字段的有效性,格式指示。
bit[4:3]取值如下:
00:VP段无效;
01:VP段有效,格式为enhanced;
10:VP段有效,格式为relative;
11:VP段有效,格式为absolute。
指示SC是否需要接收一个仍保存在SC中,与以前同一OA发出具有相同的MR和DA的短消息。
bit[2]取值如下:
0:接受;保持此值为默认值,测试不用验证;
1:不接受。
bit[1:0]取值如下:
00:SMS-DELIVER (SC到MS方向);
SMS-DELIVER REPORT (MS到SC方向);
10:SMS-STATUS‑REPORT (SC到MS方向);
SMS-COMMAND (MS到SC方向);
01:SMS-SUBMIT (MS到SC方向);
SMS-SUBMIT-REPORT (SC到MS方向);
11:保留值。
例如,需要设置有效期有效且为相对时间格式,类型为SMS-SUBMIT,bit[4]和bit[3]分别设置为1和0,bit[1]和bit[0]分别设置为0和1,即<fo>值应为17。
-
<vp>:短信有效期,格式由<fo>中TP-VPF有效期决定。
-
如果TP-VPF表示VP为相对时间格式,<vp>为缺省或0~255,码流中占一个字节;当<vp>缺省时会沿用之前的值。相对格式时间从短信被SC接收开始计算。
表 3 相对时间含义
VP值范围
值范围说明
0 to 143
(VP+1)×5分钟(5分钟为基数,最大不超过12小时)
144 to 167
12 小时 +((VP‑143)×30分钟)
168 to 196
(VP‑166)×1天
197 to 255
(VP‑192)×1周
-
如果TP-VPF表示VP无效,<vp>为缺省或0~255,此时码流中无<vp>。
- 如果TP-VPF表示VP为绝对时间格式,<vp>为时间字符串类型,码流中占7个字节,包括年、月、日、时、分、秒以及时差,时差是指本地时间与格林威治标准时间直接的差值。
-
-
<pid>:协议标志,占用一个字节,默认值为0x00,各个bit代表类型含义如表4所示。
表 4 <pid>各bit位含义说明
b7
b6
b5
b4
b3
b2
b1
b0
00:bit[5:0]被定义;
01:bit[5:0]被定义;
10:保留;
11:bit[5:0]被定义为短信中心规范使用的。
短信中心可以拒绝PID为保留字段或者不支持的短信。
0:no interworking, but SME to SME protocol;
1:telematic interworking(此情况下,bit[4:0]的取值有效)。
bit[4:0] telematic devices类型指示。
-
<dcs>:用户数据编码方式(Data Coding Scheme),这部分能判断出当前短信的编码格式,发送class值的选择,占一个字节,各个bit代表类型含义如表5所示。
表 5 <dcs>各bit位含义说明
bit[7:4]
bit[3:0]
00xx
bit5
0:短消息没有压缩;
1:短消息被压缩。
- bit[3:2]:短消息编码类型指示。
00:GSM 7bit缺省编码;
01:8bit数据;
10:UCS2编码方式;
11:保留值。
- bit[1:0]:短消息类型指示。
00:Class0短信,即显短信,FLASH短信;
01:Class1短信,优先存储到设备中的短信;
10:Class2短信,优先存储到SIM中的短信;
11:Class3短信,优先存储到TE中的短信。
bit4
0:指示bit[1],bit[0]保留;
1:bit[1],bit[0]为短消息类型指示。
1000~1011
保留编码组。
1100
丢弃短信内容,出现消息等待提示,用户数据采用GSM 7 bit编码。
bit[3:0]设置与bit[7:4]=1101时的设置一样。
1101
存储短消息,出现消息等待提示,用户数据采用GSM 7 bit编码。
- bit[3]:提示指示,取值如下:
0:消息等待提示功能无效;
1:激活消息等待提示功能。
- bit[2]:保留,取值为0。
- bit[1:0]:短消息类型指示。
00;有语音留言等待;
01:有传真消息等待;
10:有E-mail信息等待;
11:其它未知类型的消息等待。
1110
存储短消息,出现消息等待提示,用户数据采用无压缩的UCS2编码。
bit[3:0]设置与bit[7:4]=1101时的设置一样。
1111
数据编码/消息类型。
- bit[3]:保留位,设置为0。
- bit[2]:短消息的编码方式,取值如下:
0:GSM 7bit缺省编码;
1:8bit数据。
- bit[1:0]:短消息类型指示。
00:Class0短信;
01:Class1短信;
10:Class2短信;
11:Class3短信。
- bit[3:2]:短消息编码类型指示。
按照索引读取短信:+CMGR
按照索引从存储器中读一条短信,如果消息状态为“接收未读”,则变为“接收已读”;否则,状态不变。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMGR=<index> |
文本模式(+CMGF=1)读SMS-DELIVER: +CMGR: <stat>,<oa>,<seq>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data> 文本模式 (+CMGF=1)读SMS-SUBMIT: +CMGR: <stat>,<da>,<seq>[,<toda>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data> PDU模式(+CMGF=0)读SMS: +CMGR: <stat>,<seq>,<length><CR><LF><pdu> 错误情况: +CMS ERROR: <err> |
|
+CMGR=? |
- |
AT+CMGR=? OK |
参数 |
描述 |
|---|---|
<index> |
整型值,短信在存储器中的索引值,取值范围为0-19,其中索引0~9为接收短信索引,索引10~19为写存短信索引。 |
<stat> |
短信状态,PDU模式下是整型值,文本模式下是字符串类型。 0:“REC_UNREAD”,接收到的未读短信; 1:“REC_READ”,接收到的已读短信; 2:“STO_UNSENT”,存储的未发短信; 3:“STO_SENT”,存储的已发短信; 4:“ALL”,所有短信。 |
<oa> |
字符串类型,发送短信的源地址。 |
<seq> |
整型值,取值范围为0~65535,接收短信编号,表示收到短消息的先后顺序。 |
<scts> |
时间字符串类型,时间戳,“yy/mm/dd,hh:mm:ss±zz”。 |
<tooa> |
整型值,取值范围为0~255,源地址类型。 |
<fo> |
整型值,取值范围为0~255,TPDU的第1个字节。具体内容请参见“3GPP TS 23.040”的“9.2 Service provided by the SM‑TL”。 |
<pid> |
整型值,取值范围为 0~255,协议标识。 |
<dcs> |
整型值,取值范围为 0~255,短信内容的编码方案。 0:GSM 7bit; 4:8bit; 8:UNICODE。 该参数还可以设置消息等级等参数。具体内容请参见“3GPP TS 23.038”的“4 SMS Data Coding Scheme”。 |
<sca> |
字符串类型,短信中心地址。 |
<tosca> |
整型值,取值范围为0~255,短信中心地址类型。 |
<length> |
整型值,长度指示。 |
<data> |
短信内容,16 进制数字符串。 |
<da> |
字符串类型,发送短信的目的地址。 |
<toda> |
整型值,取值范围为0~255,目的地址类型。 |
<pdu> |
PDU 内容,16 进制数字符串。 |
- <seq>参数仅在SMS-DELIVER的查询显示中支持,写存短信查询中显示始终为0。
删除短信命令:+CMGD
从存储器中删除短信。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMGD=<index>[,<delflag>] |
- 错误情况: +CMS ERROR: <err> |
删除第一条短信: AT+CMGD=0 OK 删除所有短信: AT+CMGD=0,4 OK |
+CMGD=? |
+CMGD: ([支持的 <index>列表]),(支持的<delflag>列表) |
假设当前存储区中索引为0,1,2,10的位置存有短信: AT+CMGD=? +CMGD: (0,1,2,10),(0-4) OK |
参数 |
描述 |
|---|---|
<index> |
短信在存储器中的存储索引,取值范围0~19,其中索引0~9为接收短信索引,索引10~19为写存短信索引。 |
<delflag> |
整型值,删除方式,默认为0,可省。 0:删除<index>指定的短信; 1:删除当前存储器上所有的已读短信; 2:删除当前存储器上所有的已读和已发短信; 3:删除当前存储器上所有的已读、已发和未发短信; 4:删除当前存储器上所有短信。 |
如果<delflag>存在且不为0,则忽略<index>。
存储短信命令:+CMGW
写一条短信并存储<mem2>。如果输入<stat>,则短信设置为指定的状态,默认情况下,短信状态设置为“存储未发送”状态。
命令 |
返回结果 |
示例 |
|---|---|---|
文本模式 (+CMGF=1): +CMGW=<da>[,<toda>[,<stat>]]<CR> <text><ctrl-Z/ESC> |
+CMGW: <index> 错误情况: +CMS ERROR: <err> |
|
PDU模式 (+CMGF=0): +CMGW=<length>[,<stat>]<CR> 给定的<pdu> <ctrl-Z/ESC> |
+CMGW: <index> 错误情况: +CMS ERROR: <err> |
|
+CMGW=? |
- |
AT+CMGW=? OK |
参数 |
描述 |
|---|---|
<da> |
字符串类型,发送短信的目的地址。号码由“*”、“#”、“+”、“a”、“b”、“c”、“0”~“9”组成,号码长度不超过20(不包含“+”号)个字符。 |
<toda> |
整型值,目的地址类型。当da为国际号码即带加号时为145,不带加号时为129。 |
<index> |
整型值,短信在存储器中的索引值(索引10~19为写存短信使用)。 |
<stat> |
PDU模式下是整型值,文本模式下是字符串类型;仅支持写存“未发送短信”和“已发短信”。 0:“REC_UNREAD”,接收到的未读短信; 1:“REC_READ”,接收到的已读短信; 2:“STO_UNSENT”,存储的未发短信; 3:“STO_SENT”,存储的已发短信; 4:“ALL”,所有短信。 |
<length> |
整型值,TPDU长度指示,取值范围:7~164。 |
<pdu> |
发送的PDU 内容,16 进制数字符串。 |
<text> |
短信文本内容。 |
<ctrl-Z> |
字符“0x1A”,表示内容输入结束并发送短信命令。 |
<ESC> |
字符“0x1B”,表示取消本次发送短信命令操作。 |
- 本命令PDU码流的生成可参考CMGS命令实现说明部分。
设置短信存储器命令:+CPMS
设置短信写存、接收和读取操作分别对应的存储器。
命令 |
返回结果 |
示例 |
|---|---|---|
+CPMS=<mem1>[,<mem2>[,mem3]] |
+CPMS: <used1>,<total1>,<used2>,<total2>,<used3>,<total3> 错误情况: +CMS ERROR: <err> |
AT+CPMS="SM","SM" +CPMS: 0,10,0,10,0,0 OK |
+CPMS? |
+CPMS: <mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>,<mem3>,<used3>,<total3> |
AT+CPMS? +CPMS: "SM",0,10,"SM",0,10 ,"SM",0,0 OK |
+CPMS=? |
+CPMS: (支持的 <mem1>列表),(支持的 <mem2>列表),(支持的 <mem3>列表) |
AT+CPMS=? +CPMS: ("SM","ME"),("SM","ME"),("SM","ME") OK |
参数 |
描述 |
|---|---|
<mem1> |
字符串值,表示短信接收及其读取操作所用的介质,默认为ME。 "SM":短信存储在SIM卡; "ME":短信存储在FLASH。 |
<mem2> |
字符串值,表示短信写存及其读取操作所用的介质,默认为ME。 "SM":短信存储在SIM卡; "ME":短信存储在FLASH。 |
<mem3> |
字符串值,表示接收操作所用的介质,默认为ME(此参数不生效)。 "SM":短信存储在SIM卡; "ME":短信存储在FLASH。 |
- 配置会存入NV。
- <mem1>和<mem2>和<mem3>只支持设置为相同的存储器。
按照状态读取短信命令:+CMGL
按照状态从存储器中读取短信,如果消息状态为“接收未读”,默认会修改为“接收已读”。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMGL=<stat> |
文本模式(+CMGF=1)读SMS-SUBMIT和SMS-DELIVER: +CMGL: <index>,<stat>,<oa/da>,<seq>,[<scts>][,<tooa/toda>,<length>]<CR><LF><data> PDU模式(+CMGF=0)读SMS: +CMGL: <index>,<stat>,<seq>,<length><CR><LF><pdu> 错误情况: +CMS ERROR: <err> |
|
+CMGL=? |
+CMGL: (支持的<stat>列表) |
AT+CMGL=? +CMGL: ("REC_UNREAD","REC_READ","STO_UNSENT","STO_SENT","ALL") OK
AT+CMGL=? +CMGL: (0-4) OK |
参数 |
描述 |
|---|---|
<index> |
整型值,短信在存储器中的索引值。 |
<stat> |
短信状态,PDU模式下是整型值,文本模式下是字符串类型。 0:“REC_UNREAD”,接收到的未读短信; 1:“REC_READ”,接收到的已读短信; 2:“STO_UNSENT”,存储的未发短信; 3:“STO_SENT”,存储的已发短信; 4:“ALL”,所有短信。 |
<oa/da> |
字符串类型,源地址/目的地址。 |
<scts> |
时间字符串类型,时间戳,“yy/mm/dd,hh:mm:ss±zz”。 |
<tooa/toda> |
整型值,取值范围为0~255,源地址类型/目的地址类型。 |
<length> |
整型值,长度指示。 |
<data> |
短信内容,16 进制数字符串。 |
<pdu> |
PDU 内容,16 进制数字符串。 |
<seq> |
整型值,取值范围为0~65535,接收短信编号,表示收到短消息的先后顺序。 |
设置TE字符集:+CSCS
设置TE和MT之间的字符集,用于指定参数的编码类型(IRA、GSM、UCS2三种类型)。
命令 |
返回结果 |
示例 |
|---|---|---|
+CSCS=<chset> |
- 错误情况: +CME ERROR: <err> |
|
+CSCS? |
+CSCS: <chset> |
AT+CSCS? +CSCS: "IRA" OK |
+CSCS=? |
+CSCS: (支持的 <chset>列表) |
AT+CSCS=? +CSCS: ("IRA","UCS2","GSM") OK |
参数 |
描述 |
|---|---|
<chset> |
字符串类型,字符集,默认值为“GSM”。 “IRA”:ASCII码; “UCS2”:UNICODE码; “GSM”:GSM 7 bit default alphabet码。 |
- 配置不会存入NV。
-
默认编码类型为“GSM”。以下AT命令中用斜体字表示的参数,其编码类型为+CSCS设置的编码类型,具体说明如下:
+CMGS=<da>[,<toda>]<CR><text><ctrl-Z/ESC>
+CSCA=<sca>[,<tosca>]
+CMSS=<index>[,<da>[,<toda>]]
+CMGW[=<da>[,<toda>[,<stat>]]]<CR><text><ctrl-Z/ESC>
+CMT:<oa>,<index>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
+CMGL: <index>,<stat>,<oa/da>,<seq>,[<scts>][,<tooa/toda>,<length>]<CR><LF><data>
+CMGR: <stat>,<oa>,<seq>,<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
+CMGR: <stat>,<da>,<seq>[,<toda>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
- 若cscs配置为UCS2时,<da>、<sca>、<oa>显示为unicode编码类型。
-
<text>、<data>与CSCS配置格式的转换如下表所示:
短信编码方式
CSCS配置格式
文本显示格式
例子
7BIT
GSM
ascii
as->as
7BIT
IRA
ascii
as->as
7BIT
UCS2
unicode
as->00610073
8BIT
GSM
16进制码流
as->6173
8BIT
IRA
16进制码流
as->6173
8BIT
UCS2
16进制码流
as->6173
UCS2
GSM
ascii
00610073->as
UCS2
IRA
ascii
00610073->as
UCS2
UCS2
unicode
00310041->00310041
补充说明:当短信编码方式为UCS2时,CSCS配置为GSM或IRA且短信内容为非英文字符,转换失败,显示为空。
从存储器中发送短信:+CMSS
从存储器(mem2)中发送一条短信,若指定目的地址发送,目的地址号码建议携带国家码(比如中国是+86)。
命令 |
返回结果 |
示例 |
|---|---|---|
+CMSS=<index>[,<da>[,<toda>]] |
+CMSS: <mr> 错误情况: +CMS ERROR: <err> |
AT+CMSS=10 +CMSS: 239 OK |
+CMSS=? |
- |
AT+CMSS=? OK |
参数 |
描述 |
|---|---|
<index> |
整型值,短信在存储器中的索引值(索引10~19位置短信可用于发送)。 |
<da> |
目的地址。号码由“*”、“#”、“+”、“a”、“b”、“c”、“0”~“9”组成,号码长度不超过20(不包含“+”号)个字符。 |
<toda> |
整型值,目的地址类型,当da为国际号码即带加号时为145,不带加号时为129。。 |
<mr> |
整型值,取值范围为0~255,短信编号。 |
- 从存储器(mem2)中发送一条短信,如果输入目的地址<da>,则在短信发送时该地址会替换存储器中的短信所包含的目的地址。
- <mem2>的短信发送后原信息仍保留在<mem2>中,若短信发送成功,短信状态变为“已发送”,发送失败不会变更短信状态。
文本模式下参数显示:+CSDH
设置文本模式下信息上报格式。
命令 |
返回结果 |
示例 |
|---|---|---|
+CSDH=<show> |
- 错误情况: +CMS ERROR: <err> |
AT+CSDH=1 OK |
+CSDH? |
+CSDH: <show> |
AT+CSDH? +CSDH: 1 OK |
+CSDH=? |
<+CSDH: (支持的<show>列表) |
AT+CSDH=? +CSDH: (0,1) OK |
参数 |
描述 |
|---|---|
<show> |
整型值,默认值为0。 0:在短信命令+CMT、+CMGL、+CMGR结果码中不显示下述头信息: +CMT、+CMGL、+CMGR命令结果码中不显示<length>、<toda>、<tooa>和<sca>、<tosca>、<fo>、<vp>、<pid>、<dcs>。 1:在短信命令+CMT、+CMGL、+CMGR结果码中显示头信息。 |
配置会存入NV。
其他业务AT命令
命令回显:E
设置MT是否回送从TE接收的字符。
命令 |
返回结果 |
示例 |
|---|---|---|
E[<n>] |
- 错误情况: +CME ERROR: <err> |
ATE0 OK |
参数 |
描述↵ |
|---|---|
<n> |
整数类型,回显控制。 0:MT不回显从TE接收的字符。 1:MT回显从TE接收的字符。 |
配置不会存入NV,默认为0,即MT不回显从TE接收的字符。
PPP拨号:D
MT执行在TE和外部PDN(Packet Data Network)间建立通信所必需的操作,并使MT进入数传状态。
命令 |
返回结果 |
示例 |
|---|---|---|
D*<GPRS_SC_IP>[*<cid>]# |
CONNECTED 错误情况: +CME ERROR: <err> |
ATD*99# CONNECTED |
参数 |
描述 |
|---|---|
GPRS_SC_IP |
PPP拨号码。 |
cid |
上下文id,取值范围0~10,缺省时默认为1。 |
E5模式下,内置拨号成功后(如果是IPv6,则必须拿到网侧分配前缀),使用与内置拨号相同cid发起PPP拨号,会把内置拨号自动转为PPP E5拨号。
挂断PPP拨号:H
PPP拨号。
命令 |
返回结果 |
示例 |
|---|---|---|
H |
- 错误情况: +CME ERROR: <err> |
ATH OK |
设置自动接听:S0
设置自动应答。
命令 |
返回结果 |
示例 |
|---|---|---|
S0=<n> |
- 错误情况: +CME ERROR: <err> |
ATS0=0 OK |
参数 |
描述 |
|---|---|
<n> |
整型值。 0:关闭自动应答。 |