一、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)
复制代码
参数说明:bash
“SM”(U)SIM信息存储 “ME”移动设备信息存储 “MT”与“ME”存储相同 "SR"在EC20 AT手册也没找到相应说明,暂时置之不理。网络
mem1:要从该内存存储中读取和删除的消息 mem2:消息将被写入并发送到该内存存储 mem3:接收到的消息将被放置在这个内存存储中(前提没有使用AT+CNMI进行设置)并发
AT+CPMS="SM","SM","SM"设置短信存储在sim卡中。ui
二、AT+CNMIspa
做用:SMS事件报告配置.net
AT+CNMI=?
+CNMI: (0-2),(0-3),(0,2),(0-2),(0,1)
OK
复制代码
详细说明,参考:https://blog.csdn.net/chenwr2018/article/details/88313436翻译
三、AT+CMGFcode
做用:设置短信格式blog
AT+CMGF=?
+CMGF: (0,1)
OK
复制代码
参数说明:
0为PDU模式 1为Text模式
注意:在CDMA网络下,只支持Test模式。
四、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发送。
五、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
复制代码
六、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
复制代码
罗列出全部短信内容。
七、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
复制代码
八、AT+CSCA
做用:查询短信中心号码。
AT+CSCA?
+CSCA: "+8613010300000",145
OK
复制代码
一、短信做用
(1)短信主要做用用来参数设置与控制设备。 特殊使用场景,发送复位短信。设备每次开机会去读取短信内容。所以必须保证已读的短信删除,不然设备会不断复位。 (2)因为SIM卡只有1万到10万次的读写次数和40-50短消息的存储空间。使用寿命与空间的问题,致使前期设置接收到短信不存储直接通知TE(Terminal Equipment 终端设备)。
问题: 离线发送控制短信,设备从新上电后没法正常接收,应用层无法读取到离线短信的控制命令。
疑问: 离线短信的具体原理是否事先存放在基站中,等手机终端广播告知基站已经驻网而后下发到手机终端上? 若是是这样那么整个短信收发流程跟正常设备在线是一致的?那为什么接收不到呢?
二、简单短信原理阐述
(1)手机收发短信流程
源手机-》基站-》短信中心-》基站-》目的手机
(2)基站
基站会不断广播信息 方便手机搜寻到基站 不一样基站的广播频率不一致 GSM系统 扫描整个频段,信号最强为合适基站【类比收音机收听广播的原理】 CDMA系统 基站固定使用频率。【控制载频 调谐】
(3)基站如何找到手机
基站不断广播,手机连上时当前基站会发送个位置区。当手机发现本身当前位置区发生变化,会发送本身当前位置,无线网络会记录在数据库里(位置寄存器) 手机周期性告诉无线网络本身当前的位置。
(4)流程说明
三、目前的作法
为了保证离线短信可以被应用层正常获取。
主要的问题依然在sim卡读写寿命问题,不过还好短信控制命令使用频率不是很高!
参考资料:移远EC20 AT指令手册、《大话无线数据通讯》