赞
踩
一、短信AT命令
1、AT+CPMS
作用:设置短信存储位置
- AT+CPMS=?
- +CPMS: ("ME","MT","SM","SR"),("ME","MT","SM","SR"),("ME","MT","SM","SR")
-
- +CPMS: (list of supported <mem1>s),(list of supported<mem2>s),(list of supported<mem3>s)
参数说明:
“SM”(U)SIM信息存储
“ME”移动设备信息存储
“MT”与“ME”存储相同
"SR"在EC20 AT手册也没找到相应说明,暂时置之不理。
mem1:要从该内存存储中读取和删除的消息
mem2:消息将被写入并发送到该内存存储
mem3:接收到的消息将被放置在这个内存存储中(前提没有使用AT+CNMI进行设置)
AT+CPMS=“SM”,“SM”,"SM"设置短信存储在sim卡中。
2、AT+CNMI
作用:SMS事件报告配置
- AT+CNMI=?
- +CNMI: (0-2),(0-3),(0,2),(0-2),(0,1)
-
- OK
详细说明,参考:AT+CNMI指令详解_chenwr2018的博客-CSDN博客
GSM Modem一般都支持一条“AT+CNMI”指令,用于设定当有某类短消息到达时,如何处理它——只储存在制定的内存(易失的/非易失的)中;先储存后通知TE;直接转发到TE,等等。
-
-
- AT+CNMI指令语法为:
- AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>
- <mode>控制通知TE的方式。
- 0——先将通知缓存起来,再按照<mt>的值进行发送。
- 1——在数据线空闲的情况下,通知TE,否则,不通知TE。
- 2——数据线空闲时,直接通知TE;否则先将通知缓存起来,待数据线空闲时再行发送。
- 3——直接通知TE。在数据线被占用的情况下,通知TE的消息将混合在数据中一起传输。
-
- <mt>设置短消息存储和通知TE的内容。
- 0——接受的短消息存储到默认的内存位置(包括class 3),不通知TE。
- 1——接收的短消息储存到默认的内存位置,并且向TE发出通知(包括class 3)。通知的形式为:
- +CMTI:”SM”,<index>
- 2——对于class 2短消息,储存到SIM卡,并且向TE发出通知;对于其他class,直接将短消息转发到TE:
- +CMT:[<alpha>],<length><CR><LF><pdu>(PDU模式)
- 或者+CMT:<oa>,[<alpha>,]<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>(text模式)
- 3——对于class 3短消息,直接转发到TE,同<mt>=2;对于其他class,同<mt>=1。
-
- <bm>设置小区广播
- 0——小区广播不通知
- 2——新的小区广播通知,返回
- +CBM:;length;;CR;;LF;;pdu;
- 3——Class3格式的小区广播通知,使用bm=2格式
-
- <ds>状态报告
- 0——状态报告不通知
- 1——新的状态报告通知,返回:
- +CDS:;length;;CR;;LF;;pdu;
- 2——如果新的状态报告存储到ME,则返回:
- +CDSI:;mem;,;index;
-
- <brf>
- 1——始终为1
-
- 由于SIM卡只有1万到10万次的读写次数和10-15条短消息的存储空间,而且SIM卡上短消息读写需要一定的时间才能完成,因此最好使短信息不经过SIM卡读写,直接发送至TE终端,可以设置:
- AT+CNMI=2,2,0,1,1
-
- PS.
-
- 短消息类(class)的概念:根据指定存储的位置,短消息分为class0-3四个类,也可以不指定类别(no class),由移动设备按默认设置进行处理,存储到内存或者SIM卡中。在TPDU的TP-DCS字节中,当bit7-bit4为00x1、1111时,bit1-bit0指示消息所属类。
-
- 00——class 0,可直接显示。
- 01——class 1,默认储存在ME内存中。
- 02——class 2,储存在SIM卡中。
- 03——class 3,可直接传输到终端设备TE。
- 默认的短消息存在SIM卡中,无类别的短消息通常也存在SIM卡中。
-
- example:
- Serial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled

3、AT+CMGF
作用:设置短信格式
- AT+CMGF=?
- +CMGF: (0,1)
-
- OK
参数说明:
0为PDU模式
1为Text模式
注意:在CDMA网络下,只支持Test模式。
4、AT+CMGS
作用:发送短信
(1)先设置Test模式
AT+CMGF=1
不然会出现
- AT+CMGS="139000000"
-
- +CMS ERROR: 304
(2)设置终端字符集
- AT+CSCS="GSM"
-
- OK
(3)输入号码短信内容
- AT+CMGS="13900000000"
-
- > 666
- >
- +CMGS: 46
-
- OK
AT+CMGS=“13900000000”
回车后出现>
输入完内容回车,接着ctrl + z发送。
5、AT+CMGR
作用:读取短信
AT+CMGR=< index >
参数index 手册翻译内容如下:
关联内存支持的位置号范围内的整数类型值。(后面一大连串的参数说明搞得头晕晕的,感觉暂时也不用关注那么细。)
AT+CMGR=0表示接收到的第一条短信,AT+CMGR=1表示接受到的第二条短信,以此类推。
Test模式
“REC UNREAD” Received unread messages 收到未读消息
“REC READ” Received read messages 收到已读信息
“STO UNSENT” Stored unsent messages 存储未发送的消息
“STO SENT” Stored sent messages 存储已发送的消息
“ALL” All messages
PDU模式
0 Received unread messages
1 Received read messages
2 Stored unsent messages
3 Stored sent messages
4 All messages
- AT+CMGF=1
-
- OK
- AT+CMGR=2
-
- +CMGR: "REC UNREAD","139000000000",,"19/03/07,19:29:33+32",161,36,0,0,"+8613010383500",145,4
- 2333
-
- OK
6、AT+CMGL
作用:罗列出所有短信
参数:查询对应状态的所有短信
- AT+CMGL=?
-
- +CMGL: ("REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL")
-
- OK
- AT+CMGL="ALL"
-
- +CMGL: 0,"REC READ","13900000000",,"19/03/07,19:22:15+32",161,2
- 66
- +CMGL: 1,"REC READ","13900000000",,"19/03/07,19:24:38+32",161,3
- 999
- +CMGL: 2,"REC READ","13900000000",,"19/03/07,19:29:33+32",161,4
- 2333
- +CMGL: 3,"REC READ","13900000000",,"19/03/07,19:41:36+32",161,10
- chenwr2018
-
- OK
罗列出所有短信内容。
7、AT+CMGD
作用:删除短信
- AT+CMGD=?
-
- +CMGD: (0,1,2,3),(0-4)
+CMGD: (list of supported s),(list of supported s)
参数:
index指的就是短信索引号,从0开始,3表示第四条短信。
delflag
0 删除索引号指定的短信
1 删除所有从存储器读取的短信
2 删除所有从存储器读取的短信,并发送手机短信
3 删除所有从存储中读取的短信,以及所有发送和未发送的手机短信
4 删除存储器中所有短信
- AT+CMGD=1 //删除索引为1的短信
- OK
- AT+CMGD=1,4 //删除所有短信
- OK
8、AT+CSCA
作用:查询短信中心号码。
- AT+CSCA?
- +CSCA: "+8613010300000",145
-
- OK
1、短信作用
(1)短信主要作用用来参数设置与控制设备。
特殊使用场景,发送复位短信。设备每次开机会去读取短信内容。因此必须保证已读的短信删除,否则设备会不断复位。
(2)由于SIM卡只有1万到10万次的读写次数和40-50短消息的存储空间。使用寿命与空间的问题,导致前期设置接收到短信不存储直接通知TE(Terminal Equipment 终端设备)。
问题:
离线发送控制短信,设备重新上电后无法正常接收,应用层没法读取到离线短信的控制命令。
疑问:
离线短信的具体原理是否事先存放在基站中,等手机终端广播告知基站已经驻网然后下发到手机终端上?
如果是这样那么整个短信收发流程跟正常设备在线是一致的?那为何接收不到呢?
2、简单短信原理阐述
(1)手机收发短信流程
源手机-》基站-》短信中心-》基站-》目的手机
(2)基站
基站会不断广播信息 方便手机搜寻到基站
不同基站的广播频率不一致
GSM系统 扫描整个频段,信号最强为合适基站【类比收音机收听广播的原理】
CDMA系统 基站固定使用频率。【控制载频 调谐】
(3)基站如何找到手机
基站不断广播,手机连上时当前基站会发送个位置区。当手机发现自己当前位置区发生变化,会发送自己当前位置,无线网络会记录在数据库里(位置寄存器)
手机周期性告诉无线网络自己当前的位置。
(4)流程说明
3、目前的做法
为了保证离线短信能够被应用层正常获取。
主要的问题依然在sim卡读写寿命问题,不过还好短信控制命令使用频率不是很高!
参考资料:移远EC20 AT指令手册、《大话无线数据通信》
---------------------
作者:chenwr2018
来源:CSDN
原文:https://blog.csdn.net/chenwr2018/article/details/88319642
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。