SMS PDU 短信回执设置

来源:互联网 发布:天谕成女捏脸数据 编辑:程序博客网 时间:2024/04/29 12:46
 
以前做的一个东西,把资料整理了一下。
 
今天研究了一个上午的sms pdu 格式,找到了在pdu串中设置短信回执的方法。就是在pdu-type这个8位位组一般都设置为11:包含TP-MTI(2bit),TP-RD(1bit),TP-VPF(2bit),TP-RP(1bit),TP-UDHI(1bit),TP-SRR(1bit)
二进制表示形式:0 0 0 10 0 01
TP-MTI:01
 TP-Message-Type-Indicator(消息类型指示符)
Bit1,0:01 指示为SMS-SUBMIT类型
TP-RD:0
TP-Reject-Duplicates(是否拒绝相同重复消息)
Bit2:0  指示短消息中心接受未转发的具有相同TP-MR的消息。
TP-VPF:10
 TP-Validity-Period-Format(有效期格式)
 Bit4,3:10 指示使用相对格式。
TP-SRR:0
 TP-Status-Report-Request
 Bit5:0  指示不使用状态报告。
TP-UDHI:0
 TP-User-Data-Header-Indicator(用户数据头标示)
 Bit6:0  指示这是一个SMS消息,没有用户数据头。EMS消息需要设置。
TP-RP:0
 TP-Reply-Path(回复路径)
 Bit7:0  指示没有设置回复路径。

只需要将bit5设置成1即可接收回执 即pdu-type为31
11点左右gsm modem到手马上接上电脑开始测试,结果令我哭啊!!!!!发了n条没有收到一个回执。只好再查资料,同时打开SMS with the SMS PDU-mode以及hesicong大大那里找来的开发文档开始啃,哈哈!皇天不负有心人啊!终于找到个和短信接收相关的at指令AT+CNMI=<mode>,<mt>,<bm>,<ds>,<brf>
参数:
 mode:
 0——缓存在终端
 1——直接发送到TE
mt:
 0——接收到新的SMS不返回事件
 1——如果接收到的SMS存储在na ,则返回
    +CMTI:<mem>,<index>
 2——除了Class2 SMS,新的SMS直接发送到终端,返回:
   +CMT:<length><CR><LF><PDU>
 3——Class3 SMS使用mt=2的方法返回,其他类型的使用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

再次打开超级终端输入
at+cnmi?
+CNMI:0,1,0,0,0
果然是这里的问题了
按照前面mode定义
重新设置cnmi
at+cnmi=1,1,0,1,1
OK
再发送一条短信返回OK后大概5s终端返回了
+CDS: 26
0006320D91683161721356F6506071415354005060714153640000
第一段000632意义不是很明白(哪位大大知道麻烦告诉一声◎◎)
0D接收方号码长度
683161721356F6接收方号码
50607141535400信息到达短信中心的时间(我猜的)
5060714153640000信息发送到接收方的时间(也是猜的)
后续要做的事就是在接到回执的时候把手机号码解析出来,就可以进行统计分析了
目前的问题就解决的差不多了,不过估计编码的时候还是会产生不少的问题,到时候
再说啦

原创粉丝点击