跳转至

协议标准 AT 短信及其他业务命令

短信业务AT命令

须知: 使用短信业务,需要确保短信业务打开。在关机状态下执行AT命令“AT+NCONFIG=SUPPORT_SMS,TRUE”。

发送短信: +CMGS

命令描述

发送一条短信,目的地址号码建议携带国家码(比如中国是+86)。

命令语法

命令

返回结果

示例

文本模式 (+CMGF=1):

+CMGS=<da>[,<toda>]

<text> <ctrl-Z/ESC>

+CMGS: <mr>

错误场景:

+CMS ERROR: <err>

  • 文本短信发送

    AT+CMGS="+8613902100077"

    >第一行<CR>

    >...

    >最后一行\x1A

    +CMGS: 252

    OK

  • 文本短信发送时取消操作

    AT+CMGS="+8613902100077"

    >第一行\x1B

    +CMS ERROR: 305

PDU模式 (+CMGF=0):

+CMGS=<length>

给定的<pdu>ctrl-Z/ESC>

+CMGS: <mr>

错误场景:

+CMS ERROR: <err>

  • PDU短信发送

    AT+CMGS=17

    >0891683108608805F001000B818100009071F800000431D98C06\x1A

    +CMGS: 229

    OK

  • 发送PDU短信时取消操作

    AT+CMGS=17

    >0891683108608805F001000B818100009071F800000431D98C06\x1B

    +CMS ERROR: 304

+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>

      参见CSMP命令实现说明中<fo>参数说明中的表1表2

      范围是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短信。

按照索引读取短信:+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>

  • 文本模式读第一条写存短信:

    AT+CMGR=10

    +CMGR: "STO_SENT","1800009178",0,

    123456

    OK

  • PDU模式读第一条接收短信:

    AT+CMGR=0

    +CMGR: 0,1,21

    0891683108608805F0040D91688100009093F30010523022812064000141

    OK

+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>

  • 文本短信写存

    AT+CMGW="13902100096"

    >1651\x1A

    +CMGW: 10

    OK

  • 文本短信写存时取消操作

    AT+CMGW="13902100096"

    >1651\x1B

    +CMS ERROR: 305

PDU模式 (+CMGF=0):

+CMGW=<length>[,<stat>]<CR>

给定的<pdu> <ctrl-Z/ESC>

+CMGW: <index>

错误情况:

+CMS ERROR: <err>

  • PDU短信写存

    AT+CMGW=14

    >0001000B918100009093F300100141\x1A

    +CMGW: 13

    OK

  • PDU短信写存时取消操作

    AT+CMGW=14

    >0001000B918100009093F300100141\x1B

    +CMS ERROR: 304

+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>

  • 文本模式读所有短信:

    AT+CMGL="ALL"

    +CMGL: 0,"REC_READ","+8618000009383",1,"25/03/22,18:02:46+00"

    A

    +CMGL: 10,"STO_SENT","1800009178",0,

    123456

    +CMGL: 11,"STO_UNSENT","18000009120",0,

    love & money

    OK

  • PDU模式读所有短信:

    AT+CMGL=4

    +CMGL: 0,1,1,21

    0891683108608805F0040D91688100009093F30010523022812064000141

    +CMGL: 10,3,0,18

    0001000A81810000198700100631D98C56B301

    +CMGL: 11,2,0,24

    0001000B818100009021F000100CECB7BD0C3281DA6F77390F

    OK

+CMGL=?

+CMGL: (支持的<stat>列表)

  • 文本模式:

AT+CMGL=?

+CMGL: ("REC_UNREAD","REC_READ","STO_UNSENT","STO_SENT","ALL")

OK

  • PDU模式:

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>

  • 设置字符集为UNICODE:

    AT+CSCS="UCS2"

    OK

    /*设置短信中心号码是1234*/

    AT+CSCA="0031003200330034"

    OK

    /*文本模式发送中文UNICODE短信,号码是123456,内容是“ABC”*/

    AT+CMGS="003100320033003400350036"

    >004100420043<ctr-z>

  • 设置字符集为IRA:

    AT+CSCS="IRA"

    OK

    /*设置短信中心号码是1234*/

    AT+CSCA="1234"

    OK

    /*文本模式发送英文短信,号码是123456,内容是“ABC”*/

    AT+CMGS="123456"

    >ABC<ctr-z>

+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:关闭自动应答。