2009-10-13 | #1 (permalink) |
高级会员
注册日期: 2009-07-09
住址: 北京海淀
帖子: 192
|
利用手机模块实现短消息(二)
pdu数据格式分析:
例如,我们要将字符“hi”字符发送到目的地“13677328099” pdu字符串为: 08 91 683108701305f0 11 00 0d 91 3176378290f9 00 00 00 02 c834 ⑴08—短信息中心地址长度。指(91)+(683108701305f0)的长度。 ⑵91—短信息中心号码类型。91是ton/npi遵守international/e.164标准,指在号码前需加'+'号;此外还有其它数值,但91最常用。 91—10010001 bit no. 7 6 5 4 3 2 1 0 name 1 数值类型 号码鉴别 数值类型(type of number):000—未知,001—国际,010—国内,111—留作扩展; 号码鉴别(numbering plan identification):0000—未知,0001—isdn/电话号码(e.164/e.163),1111—留作扩展; ⑶683108701305f0—短信息中心号码。由于位置上略有处理,实际号码应为:8613800731500(字母f是指长度减1)。这需要根据不同的地域作相应的修改。 ⑴、⑵、⑶通称短消息中心地址(address of the smsc)。 ⑷11—文件头字节。 11&h=00010001&b bit no. 7 6 5 4 3 2 1 0 name tp-rp tp-udhi tp-spr tp-vfp tp-rd tp-mti value 0 0 0 1 0 0 0 1 应答路径—tp-rp(tp-reply-path):0—不设置; 1—设置 用户数据头标识—tp-udhl(tp-user-data-header-indicator):0—不含任何头信息; 1—含头信息 状态报告要求—tp-spr(tp-status-report-request):0—需要报告; 1—不需要报告 有效期格式—tp-vpf(tp-validity-period-format):00—不提供(not present); 10—整型(标准);01—预留; 11—提供8位字节的一半(semi-octet represented) 拒绝复制—tp-rd(tp-reject-duplicates):0—接受复制; 1—拒绝复制 信息类型提示—tp-mti(tp-message-type-indicator):00—读出(deliver); 01—提交(submit) ⑸00—信息类型(tp-message-reference) ⑹0b—被叫号码长度。 ⑺91—被叫号码类型(同⑵)。 ⑻3176378290f9—被叫号码,经过了位移处理,实际号码为“13677328099”。 ⑹、⑺、⑻通称目的地址(tp-destination-address)。 ⑼00—协议标识tp-pid(tp-protocol-identifier) bit no. 7 6 5 4 3 2 1 0 bit no.7与bit no.6: 00—如下面定义的分配bit no.0—bit no.5;01—参见gsm03.40协议标识完全定义;10—预留;11—为服务中心(sc)特殊用途分配bit no.0—bit no.5。 一般将这两位置为00。 bit no.5:0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络。 bit no.0—bits no.4:00000—隐含;00001—电传;00010—group 3 telefax;00100—语音;00101—欧洲无线信息系统(ermes);00110—国内系统;10001—任何基于x.400的公用信息处理系统;10010—email。 ⑽00—数据编码方案tp-dcs(tp-data-coding-scheme) bit no. 7 6 5 4 3 2 1 0 bit no.7与bit no.6 :一般设置为00;bit no.5:0—文本未压缩,1—文本用gsm标准压缩算法压缩;bit no.4:0—表示bit no.1、bit no.0为保留位,不含信息类型信息,1—表示bit no.1、bit no.0含有信息类型信息;bit no.3与bit no.2:00—默认的字母表,01—8bit,10—usc2(16bit),11—预留;bit no.1与bit no.0:00—class 0,01—class 1,10—class 2(sim卡特定信息),11—class 3。 ⑾00—有效期tp-vp(tp-valid-period) vp value(&h) 相应的有效期 00 to 8f (vp+1)*5 分钟 90 to a7 12小时+(vp-143)*30分钟 a8 to c4 (vp-166)*1天 c5 to ff (vp-192)*1 周 ⑿02—用户数据长度tp-udl(tp-user-data-length) ⒀c834—用户数据tp-ud(tp-user-data)“hi” 4.短消息编码 设需要发送的短消息内容为“hi”,使用的gsm字符集为7位编码。首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:h翻译成1001000,i翻译成1101001,显然h的二进制编码不足八位,那么就将i的最后一位补足到h的前面。那么就成了11001000(c8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“hi”就变成了两个八进制数 c8 34。 5.短消息的发送与接收案例 鉴于tc35(t)支持text格式,我们在试验中主要测试该格式。 (1)设置短消息中心 at+csca="+8613800731500"(短消息中心); (2)设置短消息发送格式 at+cmgf=1 (1-text; 0-pdu); (3)发送短消息(短消息内容为“test”) at+cmgs="13508485560"(目的地址) <cr> > test ^z ; (4)设置短消息到达自动提示: 设置短消息到达提示当短消息被接收,将获取指令: +cmti:"sm",index(信息存储位置) at+cnmi=1,1,0,0,1(); (5)获取短消息内容(once more),假设index=8。 at+cmgr=8 返回信息如下: +cmgr: "rec unread","+8613508485560",,"01/07/16,15:37:28+32",once more 6.注意事项 (1)短消息中心一般不会改动,如果短消息中心号码改动,在使用“at+csca”语句时,记住tc35要重新启动,否则tc35不能正常工作(tc35t不存在此问题)。 (2)某些sim卡带有密码,启动时需要输入密码。 |