利用手机模块实现短消息(二)
 

关键词:短信编程,SMS编程,短信开发技术,短信应用开发,短信软件开发技术;
3.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卡带有密码,启动时需要输入密码。