深入浅出AT命令(5)-短信命令

在短消息相关的命令中,所涉及到的参数比较集中,所以先列表给出,在后面的命令详解中就不再重复说明.常用参数定义:
注:在下文中所给出的参数类型定义如下:

  • 字符型:表示该参数要以字符串的形式给出,并且要带引号,如:"name";
  • 整型:表示该参数是以数字的形式给出;
  • 其它的类型一般是枚举类型,依据不同适用范围而不同,详情可依据表中给出的提示从协议中查找.

<alpha> 字符型 电话本中与地址对应的字符信息,格式参照+CSCS。
<da> 字符型 GSM03.40 TP-Destination-Address,格式参照+CSCS。
<dcs> GSM 03.38 SMS 数据编码方案 (default 0),或小区广播数据编码方案.
<fo> 整型 GSM 03.40 SMS-SUBMIT( 默认值17),SMS-DELIVER, SMS-STATUS-REPORT,SMS-COMMAND(默认值2)的首字节.
<dt> GSM 03.40 TP-Discharge-Time,格式为: “yy/MM/dd,hh:mm:ss±zz”(年/月/日,小时:分钟:秒: ±时 区+
<index> 整型 信息在存储器中的位置值.
<length> 整型 TEXT 模式(+CMGF=1)时指示信息体<data>的长度,PDU 模式(+CMGF=0)时指示TPDU 的 字节数。
<mid> 整型 GSM 03.41 CBM Message Identifier.
<mr> 整型 GSM 03.40 TP-Message-Reference.
<oa> 字符型 GSM 03.40 TP-Originating-Address,字符格式参照+CSCS.
<page> 整型 GSM 03.41 CBM Page Parameter 4-7bit.
<pages> 整型 GSM 03.41 CBM Page Parameter 0-3bit.
<pdu> GSM 03.40 中六种PDU 类型:SMS-DELIVER,SMS-DELIVER-REPORT,SMS-SUBMIT,SMS-SUBMIT-REPORT,SMS-STATUS-REPORT,SMS-COMMAND.
<pid> 整型 GSM 03.40 TP-Protocol-Identifier (默认值 0).
<ra> 字符型 GSM 03.40 TP-Recipient-Address,字符格式参照+CSCS.
<sca> 字符型 GSM 04.11 RP SC address,短消息中心地址,字符格式参照+CSCS.
<scts> GSM 03.40 TP-Service-Centre-Time-Stamp,格式参见<dt>.
<sn> 整型 GSM 03.41 CBM Serial Number.
<st> 整型 GSM 03.40 TP-Status.
<toda> 整型 GSM 04.11 TP- Destination-Address Type-of-Address,<da>首字符为”+”时145,其它为129。
<tooa> 整型 GSM 04.11 TP-Originating-Address Type-of-Address,参见<toda>.
<tora> 整型 GSM 04.11 TP-Recipient-Address Type-of-Address,参见<toda>.
<tosca> 整型 GSM 04.11 RP SC address Type-of-Address,参见<toda>.
<vp> GSM 03.40 TP-Validity-Period。格式取决于SMS-SUBMIT 的<fo>值:可为整型(默认值167) ,可 为时间串格式(参见 <dt>).

<data> 短消息:GSM 03.40 TP-User-Data,格式定义如下:
1. 若<dcs>指定GSM 03.38 default alphabet 且<fo>未设定UDHI:
1) +CSCS 设置的TE 字符集不是”HEX”时,ME 将GSM alphabet 转换为当前TE 字符;
2) +CSCS 设置的TE 字符集是”HEX”时,ME 将GSM alphabet 的每个7bit 字符转换为用两个IRA 字符表示的十六进制数。 
2. 若<dcs>指定8bit 或UCS2 编码方案,或<fo>设定有UDHI 时,ME 将GSM alphabet 的每个8bit 字符转换为用两个IRA 字符表示的十六进制数。

2.小区广播:GSM 03.41 CBM 消息内容,格式定义如下:
1. 若<dcs>指定GSM 03.38 default alphabet:
1) 若 TE 字符集(由+CSCS 设定)不使用”HEX”,ME 将GSM alphabet 转换为当前字符集.
2) 若 TE 字符集(由+CSCS 设定)使用”HEX”, ME 将GSM alphabet 每个7bit 字符转换为十六 进制的两个IRA 字符.
2. 若<dcs>指定8bit 或UCS2 编码方案,ME 将GSM alphabet 的每个8bit 字符转换为十六进制的两个 IRA 字符.

1 AT+CSMS

Select Message Service 选择短消息服务.
AT+CSMS? 返回当前的服务类型及 ME 支持的信息: 如正确,返回: +CSMS:<space><service>,<mt>,<mo>,<bm>:如错误,返回: ERROR.比如:+CSMS: 0,1,1,1
AT+CSMS= <service>:选择 SMS 类型:如正确,返回: +CSMS:<SPACE><mt>,<mo>,<bm>;如错误,返回:ERROR.
参数说明: 
<service>
0 Phase 2
128 厂商自定义 
<mt> 
0 ME 不能接收短消息
1 ME 可以接收短消息
<mo> 
0 ME 不能发送短消息
1 ME 可以发送短消息
<bm> 
0 ME 不能接收小区广播
1 ME 可以接收小区广播

2 AT+CPMS

Preferred Message Storage 选择消息存储器.
AT+CPMS=? 返回所有支持的读,写,存短消息的存储器: 如正确,返回:+CPMS:<SPACE>(list of supported <mem1>s),(list of supported <mem2>s),(list of supported <mem3>s) ,如错误,返回: ERROR.比如:+CPMS: ("SM"),("SM"),("SM")
AT+CPMS? 返回当前读,写,存短消息的存储器: 如正确,返回: +CPMS:<SPACE><mem1>,<used1>,<total1>,<mem2>,< used2>,<total2>,<mem3>,<used3>,<total3> 如错误,返回: ERROR:<err>.比如:+CPMS: "SM",0,30,"SM",0,30,"SM",0,30
AT+CPMS= <mem1>[,<mem2>[,<mem3>]] 选择读、写、存短消息时对应的存储器:如正确,返回:+CPMS:<SPACE><used1>,<total1>,<used2>,<total2>,< used3>,<total3> 如错误返回:ERROR.
参数说明:
<mem1> 字符型,读,删短消息的存储器
“SM” SIM 卡
<mem2> 字符型,写,发送短消息的存储器
“SM” SIM 卡
<mem3> 字符型,新消息到达后需保存时对应的存储器
“SM” SIM 卡
<used1> 整型,<mem1>中的消息条数
<used2> 整型,<mem2>中的消息条数
<used3> 整型,<mem3>中的消息条数
<total1> 整型,<mem1>的容量
<total2> 整型,<mem2>的容量
<total3> 整型,<mem3>的容量
注:
<mem1>指定+CMGL,+CMGR,+CMGD 操作对应的存储器,
<mem2>指定+CMSS,+CMGW 操作对应的存储器,
<mem3>指定新消息到达后需存储时对应的存储器.

3 AT+CMGF

Message Format 选择短消息格式.
AT+CMGF=? 返回所有支持的消息格式: 如正确,返回:+CMGF:<SPACE>(list of supported <mode>s) ;如错误,返回: ERROR.比如:+CMGF: (0,1)
AT+CMGF? 返回当前的消息格式: 如正确,返回:+CMGF:<SPACE><mode> 如错误返回: ERROR,比如:+CMGF: 0
注:
<mode>

0 PDU模式

1 TEXT 模式

4 AT+CSCA

Service Center Address 设置短消息服务中心地址.
AT+CSCA=? 返回OK
AT+CSCA? 返回当前的服务中心地址: +CSCA:<SPACE><sca>,<tosca> 如错误,返回: ERROR,比如:+CSCA: "+8613800755500",145
AT+CSCA= <sca>[,<tosca>]:选择 SM 服务中心地址:如正确,返回:OK;如错误,返回:ERROR.

5 AT+CSCB

Select Cell Broadcast Message Types 选择小区广播信息类型.
AT+CSCB=? 返回支持的选择类型: +CSCB:(list of supported <mode>s),如错误返回: +CMS ERROR:<err>,比如+CSCB: (0,1)
AT+CSCB? 返回当前选择的小区广播类型及支持模式: +CSCB:<mode>,<mids>,<dcss>, 如错误返回: +CMS ERROR:<err>,

比如:+CSCB: 0,"26214,229,50,3,24536,29719,1536,101,2282,97","0-255"
AT+CSCB=[ <mode>[,<mids >[,<dcss>]]]选择可接收或拒绝接收的小区广播类型。如执行正确则返回: 如错误返回: +CMS ERROR:<err>
参数说明:
<mode> 
0 接收<mids>和<dcss>指定类型的小区广播.
1 不接受<mids>和<dcss>指定类型的小区广播.后面指明<mids>和<dcss>时表示拒绝接收所有小区广播.
注:
<dcss>目前只支持”0,1”(中,英文).

6 AT+CNMI

New Message Indications to TE 新消息指示
AT+CNMI=? 返回所有支持的指示参数类型:

+CNMI:(list of supported <mode>s),(list of supported <mt>s),(list of supported <bm>s),(list of supported <ds>s),(list of supported <bfr>s) 
如错误返回: +CMS ERROR:<err>,比如:+CNMI: (0,1,2),(0,1,2,3),(0,2),(0,1),(0,1)
参数说明: 
<mode> 控制指示信息的处理
0:先将通知缓存起来,再按照<mt>的值进行发送.
1:在数据线空闲的情况下,通知TE,否则,不通知TE.
2:数据线空闲时,直接通知TE;否则先将通知缓存起来,待数据线空闲时再行发送.
3:直接通知TE.在数据线被占用的情况下,通知TE的消息将混合在数据中一起传输.
<mt> 指定新的短消息到达时的指示方式:
0:接受的短消息存储到默认的内存位置(包括class 3),不通知TE.
1:新到达的SMS-DELIVER 被正确保存后,返回其存储器及位置信息+CMTI:<mem>,<index>(注:mem是以引号标注的.)
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 不发送新消息指示
<ds> SMS-STATUS-REPORT 的指示方式:
0:状态报告不通知
1:新的状态报告通知,返回:+CDS:;length;;CR;;LF;;pdu; 
2:如果新的状态报告存储到ME,则返回:+CDSI:;mem;,;index;
<bfr> 进入<mode>=1,2,3 时存于buffer 中的消息指示的处理方式:
0 将所有缓存区中的信息全部发至 TE
AT+CNMI? 返回当前的新消息指示参数: +CNMI:<mode>,<mt>,<bm>,<ds>,<bfr> 如错误返回: ERROR,比如:+CNMI: 2,1,0,1,0,收到短信的提示为;+CMTI: "SM",1
AT+CNMI=[<m ode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]] 选择新消息到达时的各项指示参数,正确执行时返回: OK 如错误返回: +CMS ERROR:<err>

7 AT+CMGL

List Message 列出消息
AT+CMGL=? 返回所有支持的信息状态值: 如正确,返回:+CMGL:<SPACE>(list of supported <stat>s) ,如错误,返回: ERROR,比如:

  • (PDU模式下)+CMGL: (0,1,2,3,4)和
  • (TEXT 模式下)+CMGL: ("REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL")

TEXT 模式下
“REC UNREAD” 已接收未读短消息
“REC READ” 接收且已读短消息
“STO UNSENT” 已保存但未发送短消息
“STO SENT” 已保存已发送短消息
“ALL” 所有短消息
AT+CMGL[= <stat>] 列出消息,返回格式: 
TEXT 模式下(+CMGF=1)且正确执行:
SMS-SUBMIT 或SMS-DELIVER:
+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
注:返回的<data>是UCS2 编码
如错误,返回:ERROR,比如:

(+CMGF=1)
+CMT: "+8613798290312","","13/12/14,10:38:44+32"
123abc
+CMGL: 1,"REC UNREAD","+8613798290312","","13/12/14,10:38:44+32"
123abc

(还是上一条短信,+CMGF=0,执行AT+CMGL=4)
+CMGL: 1,1,"",26
0891683108705505F0040D91683197280913F20000312141018344230631D92C2C1E03

8 AT+CMGR

Read Message 读取短消息
AT+CMGR=? 返回OK
AT+CMGR= <index> 读取存储器中指定位置的消息(存储器由+CPMS 指定),返回格式:TEXT 模式下(+CMGF=1)且执行正确: 
SMS-DELIVER:
+CMGR:<stat>,<oa>,[<alpha>],<scts>[,<tooa>,<fo>,<p
id>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
OK
SMS-SUBMIT:
+CMGR:<stat>,<da>,[<alpha>][,<toda>,<fo>,<pid>,<d
cs>,[<vp>],<sca>,<tosca>,<length>]<CR><LF><data>
OK
如错误,返回:ERROR,比如:

PDU模式:
+CMGR: 1,"",26
0891683108705505F0040D91683197280913F20000312141018344230631D92C2C1E03

TEXT模式:

+CMGR: "REC READ","+8613798290312","","13/12/14,10:38:44+32"
123abc

中文短信:

+CMGR: 0,"",36
0891683108705505F0040D91683197280913F2000831214101841023100031003200330061006200635468536B

+CMGR: "REC READ","+8613798290312","","13/12/14,10:48:01+32"
0031003200330061006200635468536B

9 AT+CMGS

Send Message 发送短消息
TEXT 模式下 (+CMGF=1)AT+CMGS= <da>[,<toda>] <CR> text is entered <ctrl-Z/ESC> 
ME 向网络发送短消息,成功时返回<mr>,当命令正确执行并成功发送时
返回: +CMGS:<mr>.如错误返回: +CMS ERROR:<SPACE><err>.

10 AT+CMSS

Send Message From Storage 发送已保存的短消息
AT+CMSS=?返回OK
AT+CMSS= <index>[,<da>[,<toda>]] 发送存储器中<index>指定位置的消息(SMS-SUBMIT),存储器由 +CPMS 设置的<mem2>参数选定.成功发送后网络返回<mr>值.如命令正确,返回: +CMSS:<mr>.如错误,返回:ERROR.

11 AT+CMGW

Write Message To Memory 写短消息
AT+CMGW=? 返回OK.
TEXT 模式下(+CMGF=1):AT+CMGW[=<o a/da>[,<tooa/toda>[,<stat>]]] <CR> text is entered <ctrl-Z/ESC>往存储器中写入信息(存储器由+CPMS 的<mem2>参数指定),正确存储后返回信息位置<index>.如执行正确且成功保存时返回:+CMGW:<SPACE><index>.如错误返回: +CMS ERROR:<err>.
注:
1 默认<stat>值为2(”STO UNSENT”).TEXT模式下<stat>不支持"REC UNREAD"和"REC READ".
2 ctrl-Z 表示输入消息体的结束.
3 ESC 表示放弃输入消息体,重回command 状态,此时将返回 ERROR.
4 输入的 text 是UCS2 编码.
12 AT+CMGD Delete Message 删除短消息
AT+CMGD=? OK
AT+CMGD= <index> 删除存储器中<index>指定位置的消息(存储器由+CPMS 设置的 <mem1>参数选指定).如正确,返回:OK 如错误,返回:ERROR.
注:<index>当前存储器中的位置号.

深入浅出AT命令(5)-短信命令相关推荐

  1. 使用AT命令进行短信收发、电话本查询

    使用AT命令进行短信收发.电话本查询 概述:在JB00+BT项目的SMS Demo中使用了蓝牙的DUN服务来对手机发送AT命令,主要用AT命令实现2个方面的功能:发送短信.查询手机电话本.DUN连接成 ...

  2. 小熊派4G cat1模块体验测试报告,AT命令发送短信拨号无脑教程,cat1移动网速测试...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. (不怕大家笑话)为节省大家时间,还是用问题开场,从这些问题中理论上(我的目标)能让您 ...

  3. AT命令发短信和GPRS通信

    一.AT 指令发送短信 使用调试助手,三句话就可以发短信出去 GPRS-MODEM AT 指令发送短信详解: AT+CMGF=1 OK AT+CMGS="+86xxxxxxxxxxx&quo ...

  4. 记AT命令控制短信猫发短信(中英文)加打电话java

    写在前面:全局变量 private static char symbol1 = 13; private static char symbol4 = '\n'; 拨打电话方法: public stati ...

  5. 深入浅出VC++串口编程--短信应用开发

    前面数次连载我们以较长的篇幅讲解了串口通信的硬件原理.DOS平台控制以及基于WIN32 API.控件和第三方类的串口编程.作为本系列文章的最后一次连载,本章将给出一个典型的应用实例:西门子短信服务模块 ...

  6. php调用at命令,执行AT命令在php中发送短信

    我试图从PHP执行AT命令. 我试过exec()和shell_exec() 请不要建议第三方SMS网关,我的客户不想透露他的私人信息,并希望从他自己的服务器发送短信. 我有一个GSM调制解调器连接到一 ...

  7. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  8. CentOS6.2下使用Nokia E72i成功发送短信

    Linux下的飞信机器人好像不那么好用,监控服务器的报警无法及时通过短信的方式发送,于是就在想是否有其他方式可以替代.其实之前也考虑过这个问题,因为飞信是通过互联网去发短信的,但有时候公司的互联网会中 ...

  9. android adb 模拟来电,在Android模拟器中模拟GPS、打电话、发短信……

    首先,当然要打开模拟器 然后,连接模拟器 C:\Users\BillGates>telnet localhost 5554 Android Console: type 'help' for a ...

最新文章

  1. 大夏书系·学习共同体:走向深度学习
  2. 微生物组-宏基因组分析第8期(报名直播课免费参加线下2020.7)
  3. jenkins_使用Jenkins / Hudson远程API检查作业状态
  4. 使用hibernate自动生成数据库表
  5. Linux C :C的汇编码生成
  6. 11.考虑用排序的vector替代关联容器
  7. winform 线程监听两个目录下的文件_vb.net 利用.net自带的GZipStream压缩或者解压文件的代码,不需要任何第三方控件...
  8. row number函数 oracle,oracle函数 ROW_NUMBER()
  9. Spring-aop-TargetSource/ProxyFactory/DefaultAopProxyFactory
  10. 一文读懂特征值分解EVD与奇异值分解SVD
  11. vue 一直显示数据加载中的解决方案之一
  12. AAA和radius协议学习
  13. 数据库备份的方式有哪些
  14. ads1115与树莓派
  15. VSC 最新版本 加入实用功能Pinned
  16. 这届勒索病毒,其实很有上进心呀
  17. 2022IC秋招面经分享【海光·SOC设计工程师(上海)/紫光展锐(杭州)】
  18. CENTOS上的网络安全工具(五)CODE来打个酱油
  19. java读取qq邮箱邮件
  20. Android APP 检测和监听当前USB设备插入拔出以及读取VID/PID

热门文章

  1. 将base64指纹编码输出为指定大小的图片
  2. 环信php修改头像,环信客服 如何正确设置用户的头像和昵称?
  3. 计算机文化基础试题每日一练15,【每日一练】2018教师[资格考编]笔试备考练习(9.6)...
  4. 火影忍者宇智波鼬动态壁纸带给大家
  5. IE的Kiosk模式
  6. Hulu新剧 |《成瘾剂量》-- 揭开美国“神药”黑幕
  7. 漫威十年,好莱坞的转型焦虑
  8. 收录 几篇 关于 广义相对论 水星进动 的 文章
  9. 如何更改Google文档的默认格式设置
  10. 数据库查询 - 选课系统