读取短信回执

Posted wangliangblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取短信回执相关的知识,希望对你有一定的参考价值。

一、text模式下

AT+CSMP 设置短消息文本参数

 

设置:AT+CSMP=<fo>,<vp/scts>,<pid>,<dcs>

响应:+CSMP:<fo>,<vp/scts>,<pid>,<dcs>


   AT+CSMP

1.<fo>   按照不同的位进行介绍

       bit       5    4    3    2     1     0
---------------------------------------------------------
       value 0    1    0    0     0     1             
①bit 1 0 两位表示 SMS_SUBMIT,取为0 1时方向是手机->消息中心,还有三种取值这里不介绍。
②bit 2      取值 0    表示 后续没有短信息要发送;
                  取值 1     表示      后续还有短信息。
③bit 4     3 两位可取1 0

④ bit 5    取值 0          关闭传送回报
                 取值 1          打开传送回报。

通常情况下系统默认为010001即为0X11 十进制为17(此时没有状态报告回报)

2.第二个参数 vp的设置

1)   0 - 143       对应的保留时间为:    (vp + 1)*5   分钟,最大为12小时
2)   144-167     对应的保留时间为:     12小时 + (vp - 143)*30分钟, 最大为24小时
3)   168-196     对应的保留时间为:     (vp - 166) * 1 天
4)   197 - 255   对应时间为:            (vp - 192)*1 星期

所以有的模块默认vp = 167对应的就是24小时。

3.第三个参数略。通常为0
4.第四个参数:为0则只能发送英文,8为发送中文。

 

二、PDU模式下

1)        AT+CNMI=2,1,0,1,1

设置新消息到达时的指示方式,注意红色字体1表示位代表状态报告到达时进行提示,一般的模块默认都是0,不提示状态报告。

2)        AT+CMGF=0

设置PDU模式

3)        AT+CSCS=”UCS2”

4)AT+CMGS=38
> 0031000B913158136777F70008FF18003C0030003000300031003E6D4B8BD577ED4FE156DE9988
+CMGS: 8
OK
注意:红色字体部分31表示需要状态报告,相应的11表示不需要状态报告。

5)读取回馈

0006320D91683161721356F6506071415354005060714153640000

第一段000632 
000632的意思是,此sim卡号从启用到在,你当前发送的短信总数量.不信你可以连续发送两条,看看递增结果,这个是16进制格式.0D接收方号码长度
0D//接收方号码长度
91 //短信中心号码类型
683161721356F6//接收方号码
50607141535400//信息到达短信中心的时间
5060714153640000//信息发送到接收方的时间


0006320D91683161721356F6506071415354005060714153640000
这条消息就是短信中心返回的发送方发送给接收方短信回执,以后要做的事就是把这段回执信息解析出来就行了,经过奇偶对换位置,就得到了如:

“短消息中心在‘2005-06-17 14::35:45’收到了本号发给13162731656的消息,’13162731656’在’2005-06-17 14:35:46’时收到了本号发出的信息

以上是关于读取短信回执的主要内容,如果未能解决你的问题,请参考以下文章

通信协议设计注意事项

GSM MODULE 读取手机卡短信思路

如果手机(本机)中存在多个未读短信,如何通知从本机(手机)读取了哪些短信?

Arduino怎么完整读取GSM收到的短信,我缓冲区的大小也改了,但收到的短信还是不完整?

Android读取短信和联系人

性能测试:Jmeter压测过程中的短信验证码读取