PDU模式分析

GSM短信编码方式有三种,BlockTextPDU模式Block模式现在已经很少采用Text模式用来进行ASCII码的短信发送,因为ASCII码是8位字符码,所以主要用来进行单字节信息-拼音或字母的短消息发送,从技术上讲,Text模式也可以用来进行中文短信的发送。但是在发送和接收时需要采样软件编码方式进行额外的处理,由于现在的手机内置短信都没有增加从Text模式到中文的转换方式,所以在手机上无法使用该方法进行中文短信收发。PDU模式采用多种编码方式,既可以使用ASCII格式,也可以采用Unicode方式编码,因此,可以用来进行以Unicode为编码方式的中文处理。

PDU模式是一种比较复杂的编码方式,它将编码信息,收发地址,短消息内容,短消息附加信息统一进行了编码,采用二进制方式进行收发,因此,终端用户在使用AT指令前需要将用户输入的字符串进行转换后才能使用相关AT指令进行处理。

由于PDU模式下发送和接收短消息解码方式略有不同,因此通过发送来进行讲解

AT+CMGF=0

AT+CMGS=<length><CR>

<PDU><Ctrl-z>

AT+CMGF=0用来设置发送短信的模式,0PDU模式,也是默认工作模式,系统重启后便是默认该工作模式。

AT+CMGSGSM发送短信的AT命令,length为发送短信TPDU的长度而不是短消息的长度,PDU则是AT发送的信息,二进制方式,包括目标地址信息,发送地址信息和短信内容。

PDU内容分为以下几个部分:

1.              SMSC地址信息

    PDU模式分析

 

    PDU部分为二进制编码方式,采用字节信息方式。首先起始的一个字节,用来存储SMSC地址信息和类型信息总长度,以字节为计算单位。

第二个字节为地址类型信息。

   PDU模式分析

    该地址表示地址类型,0x91代表国际,此时需要在地址前加国际号86;当为0x81时,表示为国内电话。

 

接下来为地址的数值具体字节长度根据用户输入的号码来确定,由于采用的是字节对齐的方式,所以如果输入的数字为奇数时需要添加一个标识字符来填充。值得注意的是该编码方式输入数字的相邻位进行了交换,例如,13026565456,由于是奇数,需要填充一个F,编码最终结果是 3120565654F6

2.              TPDU部分

这一部分是短信的主要信息部分,AT+CMGS=<length>length长度由该部分长度决定。其中括号中标M的表示必须具有的字段,不能省略,标O的表示Option可选项。

PDU模式分析
First-Octet与地址信息部分相似,第一个字节为短信基本信息,包括短信是否发送,短信中心是否拒绝同一短信,短信中心是否回复,是否包含信息头,是否包括有效日期等信息,

PDU模式分析

 

发送短信时,TP-MTI位必须设置为0x01,表示提交发送短信。

   TP-MR第二个字节为短消息参考信息值。表示当前短消息重复发送的次数。

   TP-DA为目标地址信息,与上述地址信息相同,包括目标地址长度和地址内容,整个部分的最大长度为12个字节。

目标地址长度,以半字节为单位进行计算。比如13995452345的长度按这个标准计算长度值为11

   接下来是目标地址,编码方式与短信控制中心的地址编码方式相同,长度为目标地址长度中存储的字节表示的数值的一半,当目标地址为奇数时,填充F,编码也是采用半字节高低位交换方式。

   PDU模式分析

   TP-PID为协议标识,长度为一个字节,默认bit7bit60bit51时,由bit0bit4来表示SC按何种方式进行处理短消息,比如0x12表示采用传真方式,0x14表示采用语音处理。当bit50时,bit4bit0位无效,表示采样点对点协议。通常该字节默认值为0,表示使用点对点的GSM协议处理。

TP-DCS:一个字节长度,表示短消息的编码方式。通常有以下三种

0x08表示为UCS2编码方式,按照Unicode编码方式,两个字节表示一个字符编码。

0x04表示为8bit编码方式,按照ASCII编码方式,一个字节表示一个字符。

0x00 表示为7bit编码方式,按照GSM字符编码表进行编码。

TP-VP:用来表示短信有效时间。由First-obtetTP-VPF来决定,当TP-VPF0x10,表示相对当前的时间,当为0x11,表示为绝对时间,用7byte表示年月日时分秒信息。

TP-UDL:有效的信息长度,以字节为计算单位。当该位为0时,后面不带任何用户数据。

TP-UD:用户的有效信息。以TP-DC规定的编码方式进行编码。当TP-VDL0时,该数据段无效。

 

PDU模式的短消息。

AT+CMGF=0;

AT+CMGR=<index>读取存储器中第index条短信。

+CMGR=<length>  

<PDU>

OK

PDU的内容包括SMSC的地址和TPDU两部分。LengthTPDU的长度。

1.                        

                SMSC地址

     该部分内容与发送短信时相同,因此省略该部分解释。

 

2TPDU

         PDU模式分析

First-Octet为一个字节长度,包含短信基本信息

PDU模式分析

 

其中TP-MTI必须为0x00,表示为接收短信。其他各位标识根据GSM03.049节内容来确定。其中TP-UDHI位不为0的话,表明在TP-UD还包括相应头信息。

TP-OA:该信息为发送该条短信的设备地址。地址解析方式与发送短信的TPDU中的TP-DA解析方法完全一致。

TP-PID:表示短信以何种方式进行默认为0x00,表示采用点对点的GSM传送协议。

TP-DCS:短信内容编码模式,通过读取该位内容,可以确定接收的短信编码方式,从而能够正确的读取并显示短信内容。

TP-SCTS:为短信中心的时间标记,长度为7个字节,分别代表年月日时分秒时区七个信息。

PDU模式分析

 

通过分析这七字节能够得到短消息的接收时间。

TP-UDL:表示短消息内容的长度,以字节为计算单位。

TP-UD:读出的短消息内容,根据TP-DCS的编码方式,可以解析出相应的字符。然后提供给终端单元给用户进行显示。

 

--------------------------------------------------------------------------------------------------

 

PDU 模式
 
  用PDU 模式发送 WAP PUSH可以使用三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。7-bit 编码用于发送普通的ASCII 字符,8-bit 编码通常用于发送数据消息,UCS2 编码用于发送Unicode 字符。由于要实现中文WAP PUSH的发送,所以选择用UCS2 编码,即中文Unicode 码。
⑴ UCS2 编码原理 所谓UCS2 编码,是将单个的字符(1-2 个字节)按ISO/IEC10646 的规定,转变为16 位 的Unicode 宽字符。即将单个的字符转换为由四位的‘0’-‘9’、‘A’-‘F’的数字和字 母组成的字符串。待发送的消息以UCS2 码的形式进行发送。
⑵ 通过UCS2 编码我们得到中文Unicode 码,接着就可以进行发送PDU 串的编制了。从表面上看,PDU 串是ASCII 码串,同样由‘0’-‘9’、‘A’-‘F’这些数字和字母组成。它们是8 位字节的十六进制数,或者BCD 码十进制数。PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等。


  例如

0051000BA13108086406F600F5A7850B05040B8423F_
0000303010129060603AE81EA8DCA02056A0045C6080C033231312e_
3133362e3135332e33302f776170707573682f70757368496e6465782e_
6a73703f7075736849643d3035303531313134313630353231000103E8A_
FB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101_

  为一串可以成功发送的WAP PUSH,其中包括了汉字描述和WAP页面地址。具体分析如下

  00 SMSC 地址信息的长度 00表示用手机上设置短信中心号码,PDU 串的“SMSC 址格式”段和“SMSC 地址”段将省去

  51 基本参数(TP-MTI/VFP) 不要求发送回复

  00 消息基准值(TP-MR)

  0B 对方电话的长度

  A1 目标地址格式 A1表示为国内格式

  3108086406F6 目标地址,补‘F’凑成偶数位后奇偶位互换

  00 协议标识(TP-PID) 是普通GSM 类型,点到点方式

  F5 用户信息编码方式 (TP-DCS)

  A7 有效期(TP-VP)

  85 用户信息长度(TP-UDL)

  0B WAP PUSH头部的总长度

  05040B8423F0表示接下来是一个WAP PUSH

  00 表示是Concatenated Short Messages

  03 长度

  03 reference number

  01 表示分成1个短信发送

  01 当前包的序号

  29060603AE81EA8DCA WSP

  02 标记位

  05 -//WAPFORUM//DTD SI 1.0//EN

  6A UTF-8

  00 标记开始

  45 <si>

  C6 <indication

  08 <action=signal-high>

  0C href="http://

  03 字符串开始

3231312e3133362e3135332e33302f776170707573682f
70757368496e6465782e6a73703f7075736849643d3035303531313134313630353231 URL

  00 URL 字符串结束

  01 >

  03 内容描述字符串开始

  E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA_
  5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串

  00 内容描述字符串结束

  01 </si>

  01 </indication>

  由以上分析可以看出,WAP PUSH可以被当作一种特殊的短信来发送,WAP PUSH包发送的内容实际上跟通过PPG网关发送的XML原理相同,但是经过了压缩。压缩之后的格式称为WBXML,这种格式将一些标记用代码来表示。然而WBXML的缩略标记分为两部分,一部分是所有类型的XML都通用的,另一部分是不同类型的XML有着不同的解释。
用户接收到此类信息时,在客户端手机支持WAP的情况下,可以直接访问到信息中加载的WAP网站地址,这样服务器也达到了推广业务方便用户使用的目的。由于在UCS2 编码方式下,可发送短消息的最大字符数是140字节,即WAP PUSH中的推送URL与描述文字的总字符数为140,因此描述文字的字数限制与推送的URL长度有关。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值