短消息¶
>作者:汪远
更新时间:2020年8月15日
关键字:SMS 短信
# AT指令
## 选择短消息服务 : AT+CSMS
语法
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CSMS=<service> |
+CSMS: <mt>, <mo>, <bm> OK |
命令 |
AT+CSMS? |
+CSMS:<service>,<mt>,<mo>,<bm> OK |
测试命令 |
AT+CSMS=? |
+CSMS:(<service>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<service> |
短消 息服务级别 |
0 |
GSM03.40和03 .41(SMS的AT指令语法与GSM07.05 Phase 2中的4.7.0版本兼容 ;支持不需要新指令语法的Phase 2+特性(比如:使用Phase 2+新编码方案的消息路由)) |
1 |
GSM03.40 和 03.41(SMS 的 AT 指令语法与 GSM07.05 Phase 2+版本兼容) |
||
128 |
pdu模 式操作向前兼容于与phase2不一 致的版本。此时会认为短信pdu里 不包含短信中心号(暂不支持) |
||
<mt> |
SMS-MO (发短信) |
0 |
不支持 |
1 |
支持 |
||
<mo> |
SMS-MT (收短信) |
0 |
不支持 |
1 |
支持 |
||
<bm> |
小 区广播消息 |
0 |
不支持 |
1 |
支持 |
## 短消息优先存储区选择:AT+CPMS 本命令可设置用于读取、存储等操作的存储器,包括, 和。 * 语法
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CPMS=<mem1>[ ,<mem2>[,<mem3>]] |
+CPM S:<used1>,<to tal1>,<used2> ,<total2>,<us ed3>,<total3> OK |
命令 |
AT+CPMS? |
+CPMS:<mem1>, <used1>,<tota l1>,<mem2>,< used2>,<total 2>,<mem3>,<us ed3>,<total3> OK |
测试命令 |
AT+CPMS=? |
+CPM S:(<mem1>取值 列表),(<mem2> 取值列表),(<m em3>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mem2> |
读取和删除消息时 使用的存储器,涉及以 下3个AT指令:AT+CMGL AT+CMGR AT+CMGD |
“SM” |
SM即SIM 卡 |
“ME” |
ME为模块 |
||
<mem2> |
写、存储和发送消息时 使用的存储器,涉及以 下2个AT指令:AT+CMSS 和AT+CMGW |
“SM” |
SM即SIM 卡 |
“ME” |
ME为模块 |
||
<mem2> |
若没有建立到 TE的路由,则将接收 的消息存储在该存储器 |
“SM” |
SM即SIM 卡 |
“ME” |
ME为模块 |
||
< used1><used2><used3> |
<mem1,2,3> 中当前存储消息的数量 |
整数型 |
|
<tot al1><total2><total3> |
<mem1,2,3> 中可存储的消息的总量 |
整数型 |
例子
命 令(→)/ 返 回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CPMS=? |
|
← |
+CPMS: (“SM”,“ME”),(“SM ”,“ME”),(“SM”,“ME”) OK |
|
→ |
AT+CPMS? |
查询当前优选存储区类型 |
← |
+CPMS: “SM”,8,50, “SM”,8,50,“SM”,8,50 OK |
注 :目前仅支持”SM”存储类型。请使用: AT+CPMS=”SM”,”SM”,”SM” 设置短信存储类型。 |
短消息中心地址:AT+CSCA¶
该指令适用于PDU格式和TEXT格式,使用设置指令,可更新级SMSC(Short Message Service Center)地址。通过该地址,可以发送移动终端SMS,TEXT模式下,发送命令和写命令都可使用该项设置;PDU模式下,发送和设置指令也可使用该项设置,但条件是PDU编码后的SMSC地址长度等于0。这里必须说明的是虽然用户可以自行设置短消息的服务中心地址,但不能随心所欲,否则短消息发送不出去,因此在发送短消息之前首先必须搞清楚SIM卡所属的短消息服务中心地址。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CSCA=<sca>[,<tosca>] |
OK |
查询命令 |
AT+CSCA? |
+CSCA:<sca>,<tosca> OK |
测试命令 |
AT+CSCA=? |
OK |
参数
参 | 定义 数 | |
取 | 对取值的说明 值 | |
||
---|---|---|---|
短 信中心地 址(Short Message Center Address) |
字符型;B CD数字(或GSM缺省字母字符)需要转换为字符;格式由指定 |
||
短信中 心地址格 式(Type of sca) |
8 位整数型(缺省值请参考) 129 ISDN/电话编号方式设计,国家的/国际的未知。 145 ISDN/电话编号方式设计,国际号码。 161 ISDN/电话编号方式设计,国家的号码。 128~255 其他值查阅 GSM 04.08 章节 10.5.4.7 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CSCA= “+8613010314500”,145 |
对一个联通的S IM卡设置短信中心号码 |
← |
OK |
|
→ |
AT+CSCA? |
查询 下短信中心号码的设置 |
← |
+CSCA: “+8613010314500”,145 OK |
已经设置成功 |
## 短消息格式:AT+CMGF 设置指令用于指定短消息的输入和发送的格式,即告诉TA输入输出的消息格式是PDU格式还是TEXT格式。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMGF=[<mode>] |
OK |
查询命令 |
AT+CMGF? |
+CMGF: <mode> OK |
测试命令 |
AT+CMGF=? |
+CMGF: (<mode>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mode> |
显示消息发送、列表、读 和写指令以及接收到消息 时的主动汇报使用的格式 |
0 |
PDU模式,默认值 |
1 |
TEXT模式 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
对取值的说明 |
---|---|---|---|
→ |
AT+CMGF? |
查询当前模式 |
PDU模式,默认值 |
← |
+CMGF: 0 OK |
当前模式是PDU模式 |
TEXT模式 |
## 设置短信TEXT模式参数:AT+CSMP 文本模式下(即AT+CMGF=1),当向网络侧发送短消息或将短消息存放在存储器中时,使用该设置命令可选择需要的附加参数取值。除此之外,设置命令还可用于设置从SMSC 接收到该短消息时算起的有效期(的取值范围为0… 255)或定义有效期终止的绝对时间(为字符串时)。
语法
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CSMP=[<f o>[,<vp>[,<pid>[,<dcs>]]]] |
OK |
查询命令 |
AT+CSMP? |
CSMP:<fo>,<vp>,<pid>,<dcs> OK |
测试命令 |
AT+CSMP=? |
+CSMP: (<fo >取值列表),(<vp>取值列表), (<pid>取值列表), (<dcs>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<fo> |
短 信首字节(First Octet) |
17 ,21,33,37,49,53 |
对 <fo>字节的具体 描述如下(以SMS -SUBMIT为例): b7 b6 b5 b4 b3 b2 b1 b0 RP UDHI SRR VPF RD MTI MTI:消息类型 b1=0&b0=0 表示SMS-DELIVER b1=0&b0=1 表示SMS-SUBMIT 其他消息类型 请参考GSM03.40 VPF:定义短信 有效时间的格式 b4=1 &b3=0:Relative for mat,此时<vp>是 1个字节的整数型 b4=1 &b3=1:Absolute for mat,此时<vp>是 7个字节的整数型 SRR:Status Report Requ est,设置是否需 要短信状态报告 UDHI:User Data Header Indi cator,指示User Data单元是 否有一个header RP:Reply Path,回复路径 RD:Reject Duplicat e,拒绝重复短信 |
<vp> |
短 信有效期(Valid Period) |
取值由 字段的VPF决定: 如果V PF=10(Binary), 则为相对模式, 与短信有效时间 的对应关系如下: 0-143(00 to 8F): ( vp + 1) x5分钟 144-167(90 to A7): 12小时 + ( (vp – 143 )×30分钟 168-196(A8 to C4): ( vp – 166 ) x 1 天 197-255(C5 to FF): ( vp – 192 ) x 1 星期 如果VPF=1 1(Binary),则为 绝对模式,是7个 字节的字符型, 表示短信有效期 到期的时间点。 |
|
<pid> |
TP-协议-标识 |
0 |
整数型,具体 请参考GSM03.40 |
<dcs> |
短 信内容编码方案 |
整数型, 具体请参考GSM03 .38。一般情况下 0-7bit GSM Default 4-8bit Data 8-UCS2 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CSMP=17,11,0,0 |
设置TEXT模 式短信发送的各参数: <fo>=17( 缺省),表示MTI=01( binary)=SMS-SUBMIT, 并且VPF=10(binary)= Relative format <vp> =11,表示有效时间为( 11+1)x5分钟=1个小时 <dcs>= 0,表示编码格式是7bit GSM Default |
← |
OK |
## 控制TEXT模式下短信头信息显示:AT+CSDH 设置命令可控制是否在文本模式下的结果码中显示详细的头信息.
语法
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CSDH=[<show>] |
OK |
查询命令 |
AT+CSDH? |
+CSDH:<show> OK |
测试命令 |
AT+CSDH=? |
+CSDH:<show> OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<show> |
是否显示头信息 |
0 |
对于SMS-DELIVER 和 SMS-SUBMIT 短信,不在+CMT, +CMGL, +C MGR结果码中显示 +CSCA和+CSMP指 令设置的参数(< sca>、<tosca>、 <fo>、<vp> 、<pid>、<dcs>) ,也不显示<leng th>、<toda>或<t ooa>;对于+CMGR 指令结果码中的 SM S-COMMAND,不显 示<pid>、<mn>、 < da>、<toda>、<l ength>、<cdata> |
1 |
在结果码 中显示这些取值 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
对取值的说明 |
---|---|---|---|
→ |
AT+CSDH? |
查询 是否显示头信息 |
对于SMS-DELIVER 和 SMS-SUBMIT 短信,不在+CMT, +CMGL, +C MGR结果码中显示 +CSCA和+CSMP指 令设置的参数(< sca>、<tosca>、 <fo>、<vp> 、<pid>、<dcs>) ,也不显示<leng th>、<toda>或<t ooa>;对于+CMGR 指令结果码中的 SM S-COMMAND,不显 示<pid>、<mn>、 < da>、<toda>、<l ength>、<cdata> |
← |
+CSDH: 0 OK |
查询结果为:不 显示相关头信息 |
在结果码 中显示这些取值 |
→ |
AT+CMGR=8 |
查 询位置为8的短信 ,内容为“good!” |
|
← |
+CMGR: “REC R EAD”,“+86131*** ***56”,,“12/08/ 08,10:43:04+32” Good! OK |
查询结果不显示< tooa>,<fo>,<pid >,<dcs>,<sca>,< tosca>,<length> |
|
→ |
AT +CNMI=2,2,0,0,0 |
设 置短信自动内容 直接上报给TE, 不缓存(将+CNM I的第二个参数<m t>设置为2即可) |
|
← |
OK |
||
←(URC) |
发送一个 内容为Report的 短信给模块,上 报内容不显示<f o>、<vp>、<pid> 和<dcs>、 <sca>、<tosca> |
||
→ |
AT+CSDH=1 |
设置<show>= 1,即显示头信息 |
|
← |
OK |
||
→ |
AT+CMGR=8 |
仍旧 查询位置8的短信 |
|
← |
+CMGR: “REC UNREAD” ,“+86131******5 6”,,“12/08/08,1 0:43:04+32”,145 ,17,0,0,“+86138 00210500”,145,5 Good! OK |
查询结果显示< tooa>,<fo>,<pid >,<dcs>,<sca>,< tosca>,<length> |
|
←(URC) |
+CMT: “+86131******5 6”,,“12/08/08,1 1:05:45+32”,145 ,17,0,0,“+86138 00210500”,145,7 weather |
发送一 个内容为weathe r的短信给模块, 上报内容显示<f o>、<vp>、<pid> 和<dcs>、 <sca>、<tosca> |
## 新消息指示:AT+CNMI 该指令用于PDU格式和TEXT格式,当TE处于在用状态时(如:DTR信号处于“ON”状态),使用设置指令,可设置新消息如何从网络侧发送到TE。若 TE 处于待用状态(如:DTR信号处于“OFF”状态),消息接收流程应该按照GSM 03.38 的规定。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+ CNMI=[<mode>[,<mt>[,< bm>[,<ds>[,<bfr>]]]]] |
OK |
查询命令 |
AT+CNMI? |
+CNMI:<mode> ,<mt>,<bm>,<ds>,<bfr> OK |
测试命令 |
AT+CNMI=? |
+CNMI: (<mode>取值列表),( <mt>取值列表),(<bm>取 值列表),(<ds>取值 列表),(<bfr>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mode> |
TA给T E传送短信的模式 |
0 |
缓冲TA中的非 请求结果码;若 TA结果码缓冲器 已满,结果码指 示可以缓冲存储 在其他存储空间 或者把最旧的非 请求结果码指示 丢弃,替换为新 接收到的指示。 |
1 |
当TA-TE间的链 路被占用(比如: 在线数据模式下 ),丢弃结果码指 示,并拒绝新接 收消息的非请求 结果码。否则, 直接转发给TE。 |
||
2 |
当TA-TE间的 链路被占用(比如 :在线数据模式 下),缓冲TA中的 非请求结果码; 当链路释放后, 把所有结果码发 送给TE。否则, 直接转发给TE。 |
||
3 |
在TA 处于数据 模式的情况下, 使用特定的TA-TE 连接技 术将结果码和数 据同时传给TE。 |
||
<mt> |
新 短信上报的方式 |
0 |
没有SMS-DELIVE R的指示发送给TE |
1 |
若SMS-DELIV ER存储在ME/TA, 存储位置靠非请 求结果码+CMTI: <mem>,<index> 来提示给TE。 |
||
2 |
SMS-DELI VER消息(类别2的 消息和位于消息 等待指示组中的 消息(存储消息) )直接发送到TE。 使用如下指令的 非请求结果码: +CMT:[ <alpha>],<lengt h><CR><LF><pdu> (启用PDU模式)或 者+CMT:<oa>,[ <alpha>],<scts> ,<tooa>[, <fo>,<pid>,<dcs >,<sca>,<tosca> ,<length>]<CR>< LF><data>(启用T EXT模式。斜体部 分是否显示由+CS DH设置命令决定) 说明 :若AT指令接口 作为唯一的显示 设备,ME必须支 持类别0消息和位 于消息等待指示 组中的消息的存 储(丢弃消息)。 |
||
3 |
通过使用< mt>=2定义的非请 求结果码,类别3 的SMS-DELIVER消 息直可接发送到 TE。其他数据编 码方案下的消息 显示结果均遵循 <mt>=1的定义。 |
||
<bm> |
小区广播短 消息的上报方式 |
0 |
无 CBM 指示发送到 TE |
2 |
收到的 CBM使用如下格式 直接发送到TE: +CBM: <length><CR><L F><pdu>(启用PDU 模式)或者 +CBM: <sn>,<mid>,<dc s>,<page>,<page s><CR><LF><data >(启用TEXT模式) |
||
<ds> |
短信状 态报告上报方式 |
0 |
无SMS-STATUS-RE PORTS发送到TE。 |
| | | 1 | SMS-STATUS-REPORT消息使用如下格式直接发送到TE: +CDS:<length><CR><LF><pdu>(启用PDU模式)或者 +CDS:<fo>,<mr>,[<ra>],[<tora>],<scts>,
,<st>(启用TEXT模式) 注:
,<st>请参考+CMGR | | <bfr> | | 0 | 当<mode>为1~3时,这条指令所定义的TA缓存中的结果码被发送到TE(在发送之前,OK应该被接收到) | | | | 1 | 当<mode>为1~3时,将清除该指令中定义的TA对非请求结果码的缓冲 |
例子
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CNMI=? |
查询参数范围 |
← |
+CNMI: (0-3),(0 -3),(0-3),(0-1),(0-1) OK |
1802模块查询结果 |
→ |
AT+CNMI=2,1 |
查询当前各参数设置 |
← |
+CNMI: 2,1,0,0,0 OK |
|
←(URC) |
+CMTI: “SM”,1 |
此时收到一个短 信,缓存在中,只用+C MTI上报新短信位置索引 |
→ |
AT+CNMI=2,2 或AT+CNMI=2,2,0,0,0 |
设置=2,即新 短信不缓存,直接上报 |
← |
OK |
|
→ |
AT+CSMS=1 |
必须把 +CSMS的第一个参数设置 为1,才支持+CNMA命令 |
← |
OK |
|
→ |
AT+CMGF? |
查询当前短信模式 |
← |
+CMGF: 0 OK |
是PDU模式 |
←(URC) |
+CMT: ,24 089168310 8200105F0040D91683129 634152F60 0002180804184422304F7 349B0D |
此时收到一个PD U短信,具体分析如下: +CMT: ,24 24-PUD长度,短 信中心号码不算在PDU内 08- Length of SCA,短信 中心地址长度(按字节 数计算,包括91在内) 91- 短信中心地址的TON/NPI 683108200105F0- 短信中心地 址,需要两两反转,反 转后是8613800210500。 04- First Octet,PDU的首字节 0D-源 地址长度(号码长度) 91683129634152F6- 源 地址。需要两两反转, 反转后是8613923614256 00-PID(Protocol Identifier) 00-DCS(Data Coding Scheme),0表示7BIT GSM DEFAULT 21808041844223- SCTS(SM Center Time Stamp),短 信中心时间戳,表示SC 收到短信的时间为:12年 8月8日14:48:24,+8GMT 04- 用户数据的长度 F7349B0D- 7BIT GSM DEFAULT编码的will |
→ |
AT+CNMA |
此时需要+CNMA确认 |
← |
OK |
|
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
←(URC) |
+CMT: “+86131***** *56”,,“12/08/08,11:05 :45+32”,145 ,17,0,0,“+86138002105 00”,145,7 Will-go |
收到一 个新短信,是TEXT模式 |
→ |
AT+CNMA |
此时需要+CNMA确认 |
← |
OK |
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
执行命令 |
TE XT模式(AT+CMGF=1): AT+CNMA |
OK |
P DU模式(AT+CMGF=0): AT+CNMA[=<n >[,<length>[<CR>PDUis given<ctrl-Z/ESC>]]] |
OK |
|
测试命令 |
AT+CNMA=? |
OK |
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<n> |
PDU模式下 确认短信的方式 |
0 |
该指令 与文本模式定义 的指令执行类似 |
1 |
发送 RP -ACK(或正确接收 到的缓冲结果码) |
||
2 |
发送 RP-ERROR(若 PDU 未给定,ME/TA 将发送 GSM 03.40 TP-FCS 取值设定为 “FF”的 SMS -DELIVER-REPORT 消息(非 请求错误原因)) |
## 发送短信:AT+CMGS 使用设置指令,可将 SMS(SMS-SUBMIT)从TE发送到网络侧。发送成功后,消息参考值将返回给TE。 * 语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
文本模式 (AT+CMGF=1)情况下: AT+CMGS= <da>[,<toda>]<CR>text to send<CTRL-Z/ESC> |
发送成功则返回: +CMGS:<mr> OK 说明:<CT RL-Z>即0x1A是发送,<E SC>即0x1B是终止发送。 |
发送失败则返回: +CMS ERROR:<err> |
||
PDU模式 (AT+CMGF=0)情况下: AT +CMGS=<length><CR>PDU to send<CTRL-Z/ESC> |
发送成功,返回: +CMGS:<mr> OK |
|
发送失败则返回: +CMS ERROR: <err> |
||
测试命令 |
AT+CMGS=? |
OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<da> |
目的地 址(Destination Address) |
GSM 03.40 TP-Dest ination-Address 中 “地址-取值”字 段,字符型;将 BCD 数值(或缺省 GSM 字母格式的字符) 转 换为当前选择的 TE 字符集 中的字符(请参考 TS 07.07 中的+CSCS 指令);地址类 型由<toda>定义 |
|
<toda> |
目的 地址类型(Type of <da>) |
整数型的 GSM 04.11 TP-Dest ination-Address 中的 8 位“类型-地 址”字段(当<da> 的首字符为+(IRA 43)时, 缺省值为 14 5;否则缺省值为 129) |
|
<length> |
PDU短信长度 |
整 数型。该长度不 将短信中心号码 的长度计算在内 |
|
<mr> |
消息参考(Mes sageReference) |
0~255 |
整数型的 GSM 03.40 TP-Me ssage-Reference |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
发 送TEXT模式英文短信: |
||
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSMP? |
查询当 前的TEXT模式短信参数 |
← |
+CSMP: 17,11,0,0 OK |
当前的<dcs>=0 (GSM) |
AT+CSCS? |
||
+CSCS: “IRA” OK |
||
→ |
AT+CMGS=”139****6785” >HI! |
发 英文短信给测试手机。< ctrl-Z>是十六进制的1A 注:139****678 5是发送目的号码,请按 照实际填写,不要照抄 |
← |
+CMGS: 108 OK |
发送成功,<mr>=108 |
发 送TEXT模式中文短信: |
||
→ |
AT+CMGF=1 |
|
← |
OK |
|
→ |
AT+CSMP? |
|
← |
+CSMP: 17,167,0,0 OK |
|
→ |
AT+CSMP=17,167,0,8 |
修改最后一个参数=8 |
← |
OK |
|
→ |
AT+CMGS=”139****6785” >611F8C22 |
注:139****678 5是发送目的号码,请按 照实际填写,不要照抄 611 F8C22,是16进制格式。 即:0x610x1F0x8C0x22 是十六进制的1A |
← |
+CMGS: 73 OK |
发送成功 |
发 送PDU格式的中文短信: |
||
→ |
AT+CMGF=0 |
设置成PDU模式 |
← |
OK |
|
→ |
AT+CMGS=19 >0011100D91683161450 179F900080004611F8C22 [CTRL+Z] |
19 -是PDU字符串的长度(短 信中心单元不包括在内) 00-表示短信中心的长度 为0,即PUD字符串中将 SCA删去,发送短信的时 候直接从SIM卡中取SCA 。该00不计入PDU长度中 11- PDU短信首字节 10- TP-MR,benchmark 0D- 目标地址(DA)长度 91683161450179F9- 目 标地址(收信方号码) 00-Protocol Identifier (PID) 08- Data coding scheme (DCS),8表示UCS2 00-Valid Period (VP) 04- User Data的长度 611F8C22- User Data,发送的短信内容 (本例为中文“感谢”) |
← |
+CMGS: 110 OK |
发送成功 |
## 把消息写入存储器:AT+CMGW 使用设置指令,可将SMS(SMS-DELIVER 或 SMS-SUBMIT)从TE发送到存储器<mem2>,并返回已存储消息的存储位置参数。除非指定其他参数,否则,该消息的状态将被设置为“存储未发送”。
语法
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
命令类型 |
语法 |
返回和说明 |
设置命令 |
TEXT 模式下(AT+CMGF=1): AT+CMGW [=<oa/da>[,<tooa/toda >[,<<stat>]]]<CR>text is entered<ctrl-Z/ESC> |
成功,返回: +CMGW: <index> OK |
失败则返回: +CMS ERROR: <err> |
||
PDU 模式下(AT+CMGF=0): AT+CMGW= <length>[,<stat>]<CR> PDU is given<ctrl-Z/ESC> |
成功,返回: +CMGW: <index> OK |
|
失败则返回: +CMS ERROR: <err> |
||
测试命令 |
AT+CMGW=? |
返回: OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<da> |
目的地 址(Destination Address) |
GSM 03.40 TP-Dest ination-Address 中 “地址-取值”字 段,字符型;将 BCD 数值(或缺省 GSM 字母格式的字符) 转 换为当前选择的 TE 字符集 中的字符(请参考 TS 07.07 中的+CSCS 指令);地址类 型由<toda>定义 |
|
<toda> |
目的 地址类型(Type of <da>) |
整数型的 GSM 04.11 TP-Dest ination-Address 中的 8 位“类型-地 址”字段(当<da> 的首字符为+(IRA 43)时, 缺省值为 14 5;否则缺省值为 129) |
|
<oa> |
源地址(Origi natingAddress) |
GSM 03.40 TP-Orig inating-Address 中 “地址-取值”字 段,字符型;将 BCD 数值(或缺省 GSM 字母格式的字符) 转 换为当前选择的 TE 字符集 中的字符(请参考 TS 07.07 中的+CSCS 指令);地址类 型由<tooa>定义 |
|
<tooa> |
源 地址类型(Type of <oa>) |
整数型的 GSM 04.11 TP-Orig inating-Address 中的 8 位“类型-地 址”字段(当<oa> 的首字符为+(IRA 43)时, 缺省值为 14 5;否则缺省值为 129) |
|
<length> |
PDU短信长度 |
整 数型。该长度不 将短信中心号码 的长度计算在内 |
|
<stat> |
短信状态 |
REC NREAD |
已接收的未 读消息(TEXT模式 下,即+CMGF=1) |
REC READ |
已接收的已 读消息(TEXT模式 下,即+CMGF=1) |
||
STO UNSENT |
存储未发 送消息(TEXT模式 下,即+CMGF=1) |
||
STO SENT |
存储已发 送消息(TEXT模式 下,即+CMGF=1) |
||
0 |
已接收的未 读消息(PDU模式 下,即+CMGF=0) |
||
1 |
已接收的已 读消息(PDU模式 下,即+CMGF=0) |
||
2 |
存储未发 送消息(PDU模式 下,即+CMGF=0) |
||
3 |
存储已发 送消息(PDU模式 下,即+CMGF=0) |
例子
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
存储 一个TEXT短信(英文): |
||
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSCS=”GSM” |
或AT+CSCS=”IRA” |
← |
OK |
|
→ |
AT+CSMP=17,167,0,0 |
|
← |
OK |
|
→ |
AT+CMGW=”139****6785” >HI!<ctrl-Z> |
|
← |
+CMGW: 6 OK |
返回 的index=6,表示该短信 在存储区的位置是第6个 |
存储 一个TEXT短信(中文): |
||
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSCS=”UCS2” |
设置AT命令中 字符的编码格式为UCS2 |
← |
OK |
|
→ |
AT+CSMP=17,167,0,8 |
Dcs=8,表示短信 存放的格式为UCS2编码 |
← |
OK |
|
→ |
AT+CMGW=”003 00310030003000380036” >611F8C22<ctrl-Z> |
D A=10086(UCS2编码格式) 内容为 “感谢”(UCS2编码格式) |
← |
+CMGW: 7 OK |
该 短信存在index=7的位置 |
存储一个PDU短信: |
||
→ |
AT+CMGF=0 |
设置为PDU格式 |
← |
OK |
|
→ |
AT+CMGW=19 >0011100D91683161450 179F900080004611F8C22 [CTRL+Z] |
短信内容为“感谢” |
← |
+CMGW: 8 OK |
该 短信存在index=8的位置 |
## 从存储器发送短信:AT+CMSS 使用设置指令,可将消息存储器中,位置取值参数为的消息发送到网络侧(SMS-SUBMIT 或 SMS-COMMAND)。若给定 SMS-SUBMIT 消息的新接收地址参数,应使用该参数,而不能使用已存储消息的参数。发送成功后,参考值 将返回给 TE。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMSS=<index>[,<da>[,<toda>]] |
+CMSS:<mr> OK |
测试命令 |
AT+CMSS=? |
OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<index> |
待发送短信 在存储器的地址 |
整 数型;关联存储 器支持的地址编 号范围内的取值 |
|
<da> |
目的地 址(Destination Address) |
GSM 03.40 TP-Dest ination-Address 中 “地址-取值”字 段,字符型;将 BCD 数值(或缺省 GSM 字母格式的字符) 转 换为当前选择的 TE 字符集 中的字符(请参考 TS 07.07 中的+CSCS 指令);地址类 型由<toda>定义 |
|
<toda> |
目的 地址类型(Type of <da>) |
整数型的 GSM 04.11 TP-Dest ination-Address 中的 8 位“类型-地 址”字段(当<da> 的首字符为+(IRA 43)时, 缺省值为 14 5;否则缺省值为 129) |
|
<mr> |
消息参考(Mes sageReference) |
0~255 |
整数型的 GSM 03.40 TP-Me ssage-Reference |
例子
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSCS=”GSM” |
或AT+CSCS=”IRA” |
← |
OK |
|
→ |
AT+CMSS=6 |
发送+CMGW实例中 被+CMGW存储起来的编号 为6的短信,接收方的号 码仍为+CMGW存入的号码 |
← |
+CMSS: 11 OK |
发送成功,<mr>=11 |
→ |
AT +CMSS=7,“13192310560” |
发送+CMGW实例中被+CM GW存储起来的编号为7的 中文短信,并且改变接 收方号码为13192310560 |
← |
+CMSS: 12 OK |
发送成功 |
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMMS= [<n>] |
OK |
查询命令 |
AT+CMMS? |
+CMMS: <n> OK |
测试命令 |
AT+CMMS=? |
+CMMS: (<n>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<n> |
状态 |
0 |
禁能 |
1 |
使能一 次。当前一条发 送短信的返回和 后一条发送短信 的间隔小于1-5秒 (具体的取值取 决于MS的实现) ,RP链接保持不 断。当超过了1- 5秒时,RP链接中 断,并且<n>值将 自动设置回0,即 不再继续使能。 |
||
2 |
一直使能 。当前一条发送 短信的返回和后 一条发送短信的 间隔小于1-5秒( 具体的取值取决 于MS的实现),R P链接保持不断。 当超过了1-5秒时 ,RP链接中断, 并且<n>值仍保持 为2,即继续使能 |
## 读短信:AT+CMGR 使用设置指令,可将消息存储器中,索引为的消息返回到TE。若该消息处于“已接收未读”状态,则将其状态变为“已接收已读”。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMGR=<index> |
PDU模式下 (AT+CMGF=0),返回: +C MGR:<stat>,[<alpha>], <length><CR><LF><pdu> OK |
| | | 如果是TEXT模式(AT+CMGF=1): 对于SMS-DELIVER: +CMGR:<stat>,<oa>,[<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data> OK 对于SMS-SUBMIT: +CMGR:<stat>,<da>,[<alpha>][,<toda>,<fo>,<pid>,<dcs>,[<vp>],<sca>,<tosca>,<length>]<CR><LF><data> OK 对于SMS-STATUS-REPORT: +CMGR:<stat>,<fo>,<mr>,[<ra>],[<tora>],<scts>,
,<st> OK 对于SMS-COMMAND: +CMGR:<stat>,<fo>,<ct>[,<pid>,[<mn>],[<da>],[<toda>],<length><CR><LF><cdata>] OK 注:以上斜体字是否显示由+CSDH的设置决定 | | 测试命令 | AT+CMGR=? | OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<da>,<oa> |
请 参考AT+CMGW条目 |
||
<toda>,<tooa> |
|||
<length> |
|||
<stat> |
|||
<alpha> |
MT 电话簿记录对应< da>或<oa>的显示 |
字符型 |
|
<pid> |
Protocol Identification |
请 参考AT+CSMP条目 |
|
<fo> |
PDU短信首字节 |
||
<vp> |
Valid Period |
||
<dcs> |
Data Coding System |
||
<scts> |
短信中 心时间戳(Short Message Center Time Stamp) |
时 间-字符串型GSM 03.40 TP-Service-Ce ntre-Time-Stamp |
|
<dt> |
Discharge time |
时 间-字符串型GSM 03.40 TP-D ischarge-Time, 与<st>成对出现 |
|
<st> |
Status |
整数型GSM 03.40 TP-Status 描述 上一个已经发送 的MO短信的状态 |
|
<ct> |
Command Type |
整数型GSM 03.40 TP-Comman d-Type,缺省为0 |
|
<ra> |
接收地址 |
字符串型的GSM 03.40 TP-Re cipient-Address 地址-取值字段 |
|
<cdata> |
TEXT模式下SM S-COMMAND的返回 |
TP-C ommand-Data(GSM 03.40) |
|
<mr> |
消息参考(Mes sageReference) |
TP-Messag e-Reference(GSM 03.40), 整数型 |
|
<mn> |
消息序号 |
TP-Mes sage-Number(GSM 03.40), 整数型 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
用TEXT模式读取短信: |
||
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSCS=”GSM” |
+CSCS命令决定了读取 的短信内容的编码方式 |
← |
OK |
|
→ |
AT+CMGR=6 |
读取index=6的英文短信 |
← |
+CMGR: “REC REA D”,“+86139*******9”,“ 12/03/30,20:40:31+32” HI! OK |
这个 英文短信的内容为”HI” |
→ |
AT+CSCS=”UCS2” |
读中文短 信内容需要设置为UCS2 |
← |
OK |
|
→ |
AT+CMGR=1 |
读一个中文短信 |
← |
+CMGR: “REC READ ”,“002B00380036003100 330031003600320033003 10030003200360033”,,“ 13/01/06,10:11:47+32” 8C228C22 OK |
内容为8C228C22( 中文“谢谢”的UCS2码) |
用 PDU模式读取一个短信: |
||
→ |
AT+CMGF=0 |
设置为PDU模式 |
← |
OK |
|
→ |
AT+CMGR=9 |
读取index=9的短信 |
← |
+CMGR: 0,,24 089 1683108200105F0240D91 683161450179F90008218 0904121102304611F8C22 OK |
## 列举短消息:AT+CMGL 使用设置指令,可将查询优选消息存储器中,状态值为的消息显示在 TE中。若该消息处于“已接收未读”状态,则将其状态变为“已接收已读”。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMGL=<stat> |
如果是 PDU模式(AT+CMGF=0) ,则<stat>取值如下: 0已接收的未读消息 1 已接收的已读消息 2 已存储的未发送短信 3 已存储的已发送短信 4 所有短信 且返回如下: +CMGL: <index>,<stat>,[<alph a>],<length><CR><LF>< pdu>< CR><LF>+CMGL:<index>, <stat>,[<alpha>],<len gth><CR><LF><pdu>[…]] OK |
| | | 如果是TEXT模式(AT+CMGF=1),则<stat>取值如下:“REC UNREAD”已接收的未读消息 “REC READ” 已接收的未读消息 “STO UNSENT”已存储的未发送短信 “STO SENT”已存储的已发送短信 “ALL”所有短信 注意:对于以上取值,所有字母要大写。双引号可加可不加。对于SMS-DELIVER或SMS-SUBMIT,则返回(注:斜体字是否显示由+CSDH的设置决定): +CMGL:<index>,<stat>,<oa/da>,[<alpha>],[<scts>][,<tooa/toda>,<length>]<CR><LF><data>[<CR><LF>+CMGL:<index>,<stat>,<da/oa>,[<alpha>],[<scts>][,<tooa/toda>,<length>]<CR><LF><data>[…]] OK 对于SMS-STATUS-REPORT,则返回: +CMGL:<index>,<stat>,<fo>,<mr>,[<ra>],[<tora>],<scts>,
,<st>[<CR><LF>+CMGL:<index>,<stat>,<fo>,<mr>,[<ra>],[<tora>],<scts>,
,<st>[…]] OK 对于SMS-COMMAND,则返回: +CMGL:<index>,<stat>,<fo>,<ct>[<CR><LF>+CMGL:<index>,<stat>,<fo>,<ct>[…]] OK | | 测试命令 | AT+CMGL=? | +CMGL: (<stat>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
本词条的所有参数在以前的命令中都有详细叙述,这里不再赘述 |
例子
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
用TEXT模式读取短信: |
||
→ |
AT+CMGF=1 |
设置为TEXT模式 |
← |
OK |
|
→ |
AT+CSCS=”GSM” |
+CSCS命令决定了读取 的短信内容的编码方式 |
← |
OK |
|
→ |
AT+CMGR=6 |
读取index=6的英文短信 |
← |
+CMGR: “REC READ”,“+86139”,“ 12/03/30,20:40:31+32” HI! OK |
这个 英文短信的内容为”HI” |
→ |
AT+CSCS=”UCS2” |
读中文短 信内容需要设置为UCS2 |
← |
OK |
|
→ |
AT+CMGR=1 |
读一个中文短信 |
← |
+CMGR: “REC READ ”,“002B00380036003100 330031003600320033003 10030003200360033”,,“ 13/01/06,10:11:47+32” 8C228C22 OK |
内容为8C228C22( 中文“谢谢”的UCS2码) |
用 PDU模式读取一个短信: |
||
→ |
AT+CMGF=0 |
设置为PDU模式 |
← |
OK |
|
→ |
AT+CMGR=9 |
读取index=9的短信 |
← |
+CMGR: 0,,24 089 1683108200105F0240D91 683161450179F90008218 0904121102304611F8C22 OK |
## 删除短消息:AT+CMGD 使用设置指令,可删除优选消息存储器中,位置号码参数为的消息。
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CMGD=<index> |
返回: OK 说明:这 个设置命令是删除<mem >1中索引为index的短信 |
AT+C MGD=<index>,<delflag> |
返回: OK 说明:这 个设置命令是删除所有 状态为<delflag>的短信 。当<delflag>不等于0 时,<index>参数被忽略 |
|
测试命令 |
AT+CMGD=? |
+C MGD:(<index>取值列表 ),(<delflag>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<index> |
短信位置索引 |
整 数型;关联存储 器支持的地址编 号范围内的取值 |
|
<delflag> |
删除 类型,整数型。 当<delflag>=1, 2,3,4时,<ind ex>参数将被忽略 |
0 |
删除 指定位置号码为 <index>的短消息 |
1 |
删除优选存储器 其中所有已读的 短消息,保留未 读短消息和已存 储的MO短消息( 无论是否发送) MO:Mobile Originated |
||
2 |
删 除优选存储器中 所有已读的消息 和已发送的MO短 消息,保留未读 的以及未发送的 已存储MO短消息 |
||
3 |
删除优选存储 器中所有已读的 短消息,已发送 和未发送的已存 储MO短消息,保 留未读的短消息 |
||
4 |
删除优选存储 器中包括未读在 内所有的短消息 |
例子
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CPMS=”SM” |
设置存储区为SIM |
← |
OK |
|
→ |
AT+CMGD=1 |
删除掉index=1的短信 |
← |
OK |
|
→ |
AT+CMGD=1,4 |
所有的短信都被删除掉 |
← |
OK |
## 小区广播短消息类型选择:AT+CSCB
语法
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+CSCB= [<mode>[,<mids>[,<dcss>]]] |
返回: OK |
查询命令 |
AT+CSCB? |
返回: +CSCB:<mode>,<mids>,<dcss> OK |
测试命令 |
AT+CSCB=? |
返回: +CSCB: (<mode>取值列表) OK |
参数
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mode> |
0 |
接受由<mids >和<dcss>指定的消息类型 |
|
1 |
不接受由<mids >和<dcss>指定的消息类型 |
||
<mids> |
所有可能的 CBM 消息标识的组合 |
字符型 |
|
<dcss> |
所有可能的CBM 数据编码方案的组合 |
字 符型,缺省值为空字符串 |
# LUAT开发相关接口 相关示例,请参考:raw-latex:script_LuaTask_VX.X.X:raw-latex:demo:raw-latex:`\sms`
### sms.send(num, data, cbFnc, idx) 发送短信
参数
传入值类型 |
释义 |
---|---|
string |
num, 短信接收方号码,ASCII码字符串格式 |
string |
d ata,短信内容,GB2312编码的字符串 |
function |
可选参数,默认 为nil,cbFnc,短信发送结果异步返 回时的用户回调函数,回调函数的调 用形式为:cbFnc(result,num,data) num:短 信接收方的号码,ASCII码字符串格式 d ata:短信内容,GB2312编码的字符串 |
number |
可 选参数,默认为nil,idx,插入短信 发送缓冲表的位置,默认是插入末尾 |
返回值
result,返回true, 表示调用接口成功(并不是短信发送成功,短信发送结果,通过sendcnf返回,如果有cbFnc,会通知cbFnc函数);false,表示调用接口失败
例子
sms.send("10086","test",cbFnc)
### sms.setNewSmsCb(cbFnc) 设置新短信的用户处理函数
参数
传入值类型 |
释义 |
---|---|
function |
cbFnc,新短信的用户处理函数 |
返回值
nil
例子
sms.setNewSmsCb(cbFnc)
# 相关资料以及购买链接
相关开发板购买链接
常见问题¶
https://luatdoc.papapoi.com/628/ ## 1、PDU格式发送短信问题 *** AT版本发送短信时先查看自己的SIM卡是否设置中心地址,发送短信时发送PDU包这一步不要勾选换行符和16进制