欢迎来到天天文库
浏览记录
ID:6073554
大小:134.50 KB
页数:9页
时间:2018-01-02
《gsm短信的简单解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GSM短信的简单解析转自http://blog.sina.com.cn/s/blog_537d39500100074t.htmlSMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。它可以发送最多160个字符,当使用7-bits编码的时候。8-bit编码(最多140个字符)通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声)和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)
2、文本信息,可以被大多数的手机所显示。一个以class 0 开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)。 有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit) 模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。最常见的选择是"PCCP437", "PCDN", "8859-1", "I
3、RA" 和 "GSM". 这些都通过读取应用程序的at-command中的AT+CSCS指定。如果你想阅读手机上的信息,手机会为你选择一种合适的编码。那么一个可以阅读SMS消息的应用要么使用test模式,要么是PDU模式。如果使用text模式,那么应用将绑定(或限制在)一些可能的编码选择中。在某些情况下是不够的,如果使用PDU模式,那么就可以使用任何编码方式。 接收 PDU串不仅仅 包含了消息,而且还有很多发送者的元信息,他的SMS服务中心,时间标志等等。这些都是以8位字节的
4、16进制数,或者半8位字节的十进制数。以下的字符书我从Nokia 6110 收到的信息,当从www.mtn.co.za发送的串是"hellohello"的时候。 07 917238010010F5 040BC87238880900F100009930925161958003C16010 这个八位串包含了三个部分:第一个8位表示SMSC信息的长度("07"),SMSC的信息 ("917238010010F5"),和SMS_DELIVER部分(GSM 03.40中指定
5、)。 注意: 有些手机(例如:Ericssson 888?)头三个部分(被着色)在PDU模式下被省略。 8位 描述 07 SMSC信息的长度。(在这个例子里是7个八位) 91 SMSC的地址类型 (91意味着国际格式的电话号码) 72 38 01 00 10 F5 服务中心号码(半八位的十进制数)电话号码是一个奇数(11),因此加入F来保证8位。这个服务中心的号码是"+27381000015" 04 SMS_DELIVER的
6、第一个8位。 0B 地址长度。发送号码的长度(0B hex = 11 dec) C8 发送号码的地址类型 72 38 88 09 00 F1 发送号码(半八位的十进制数),有一个F结尾。 00 TP-PID.协议标识 00 TP-DCS 编码方式 99 30 92 51 61 95 80 TP-SCTS.时间邮戳(半8位) 0A TP-UDL.用户数据长度,信息的长度。TP-DCS域表明是7-bit格式
7、的数据。因此长度在这里是一个10个7-bits。如果TP-DCS被设置成8-bit或者Unicode,那么长度就应该是9个八位长度。 E8329BFD4697D9EC37 TP-UD. 7-bit编码的信息。 所有的8位都是16进制编码,除了服务中心号码,发送号码和时间邮戳;他们都是十进制的半8位编码。在PDU串的结尾部分包含了一些16进制的8-bits数据,但他们实际7-bits数据。 十进制的半8位只需要将高位和地位交换就可以得到实际的数值。例如:"72 3
8、8 88 09 00 F1" 到 "27 83 88 90 00 1F"。因为电话号码是一个奇数,没有办法组成8位编码,所以使用F来补齐。在解析时间邮戳的时候("99 03 29 15 16 59 08"),前6位代表日期,后6位代表时间,最后2位是时区。 Flash SMS 在某些手机上(所有的Nokias,某些Siemens, Ericsson, Motorola 等等
此文档下载收益归作者所有