GSM短信编码方式有三种,Block,Text和PDU模式,Block模式现在已经很少采用,Text模式用来进行ASCII码的短信发送,因为ASCII码是8位字符码,所以主要用来进行单字节信息-拼音或字母的短消息发送,从技术上讲,Text模式也可以用来进行中文短信的发送。但是在发送和接收时需要采样软件编码方式进行额外的处理,由于现在的手机内置短信都没有增加从Text模式到中文的转换方式,所以在手机上无法使用该方法进行中文短信收发。PDU模式采用多种编码方式,既可以使用ASCII格式,也可以采用Unicode方式编码,因此,可以用来进行以Unicode为编码方式的中文处理。
PDU模式是一种比较复杂的编码方式,它将编码信息,收发地址,短消息内容,短消息附加信息统一进行了编码,采用二进制方式进行收发,因此,终端用户在使用AT指令前需要将用户输入的字符串进行转换后才能使用相关AT指令进行处理。
由于PDU模式下发送和接收短消息解码方式略有不同,因此通过发送来进行讲解
AT+CMGF=0
AT+CMGS=
AT+CMGF=0用来设置发送短信的模式,0为PDU模式,也是默认工作模式,系统重启后便是默认该工作模式。
AT+CMGS为GSM发送短信的AT命令,length为发送短信TPDU的长度而不是短消息的长度,PDU则是AT发送的信息,二进制方式,包括目标地址信息,发送地址信息和短信内容。
PDU内容分为以下几个部分:
1. SMSC地址信息
PDU部分为二进制编码方式,采用字节信息方式。首先起始的一个字节,用来存储SMSC地址信息和类型信息总长度,以字节为计算单位。
第二个字节为地址类型信息。
该地址表示地址类型,0x91代表国际,此时需要在地址前加国际号86;当为0x81时,表示为国内电话。
接下来为地址的数值具体字节长度根据用户输入的号码来确定,由于采用的是字节对齐的方式,所以如果输入的数字为奇数时需要添加一个标识字符来填充。值得注意的是该编码方式输入数字的相邻位进行了交换,例如,13026565456,由于是奇数,需要填充一个F,编码最终结果是 3120565654F6
2. TPDU部分
这一部分是短信的主要信息部分,AT+CMGS=
First-Octet与地址信息部分相似,第一个字节为短信基本信息,包括短信是否发送,短信中心是否拒绝同一短信,短信中心是否回复,是否包含信息头,是否包括有效日期等信息,
发送短信时,TP-MTI位必须设置为0x01,表示提交发送短信。
TP-MR第二个字节为短消息参考信息值。表示当前短消息重复发送的次数。
TP-DA为目标地址信息,与上述地址信息相同,包括目标地址长度和地址内容,整个部分的最大长度为12个字节。
目标地址长度,以半字节为单位进行计算。比如13995452345的长度按这个标准计算长度值为11。
接下来是目标地址,编码方式与短信控制中心的地址编码方式相同,长度为目标地址长度中存储的字节表示的数值的一半,当目标地址为奇数时,填充F,编码也是采用半字节高低位交换方式。
TP-PID为协议标识,长度为一个字节,默认bit7~bit6为0,bit5为1时,由bit0~bit4来表示SC按何种方式进行处理短消息,比如0x12表示采用传真方式,0x14表示采用语音处理。当bit5为0时,bit4~bit0位无效,表示采样点对点协议。通常该字节默认值为0,表示使用点对点的GSM协议处理。
TP-DCS:一个字节长度,表示短消息的编码方式。通常有以下三种
0x08表示为UCS2编码方式,按照Unicode编码方式,两个字节表示一个字符编码。
0x04表示为8bit编码方式,按照ASCII编码方式,一个字节表示一个字符。
0x00 表示为7bit编码方式,按照GSM字符编码表进行编码。
TP-VP:用来表示短信有效时间。由First-obtet中TP-VPF来决定,当TP-VPF为0x10,表示相对当前的时间,当为0x11时,表示为绝对时间,用7个byte表示年月日时分秒信息。
TP-UDL:有效的信息长度,以字节为计算单位。当该位为0时,后面不带任何用户数据。
TP-UD:用户的有效信息。以TP-DC规定的编码方式进行编码。当TP-VDL为0时,该数据段无效。
读PDU模式的短消息。
AT+CMGF=0;
AT+CMGR=
+CMGR=
OK
PDU的内容包括SMSC的地址和TPDU两部分。Length为TPDU的长度。
1.
SMSC地址
该部分内容与发送短信时相同,因此省略该部分解释。
2.TPDU
First-Octet为一个字节长度,包含短信基本信息
其中TP-MTI必须为0x00,表示为接收短信。其他各位标识根据GSM03.04第9节内容来确定。其中TP-UDHI位不为0的话,表明在TP-UD还包括相应头信息。
TP-OA:该信息为发送该条短信的设备地址。地址解析方式与发送短信的TPDU中的TP-DA解析方法完全一致。
TP-PID:表示短信以何种方式进行默认为0x00,表示采用点对点的GSM传送协议。
TP-DCS:短信内容编码模式,通过读取该位内容,可以确定接收的短信编码方式,从而能够正确的读取并显示短信内容。
TP-SCTS:为短信中心的时间标记,长度为7个字节,分别代表年月日时分秒时区七个信息。
通过分析这七字节能够得到短消息的接收时间。
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 C6 08 0C href="http:// 03 字符串开始 3231312e3133362e3135332e33302f776170707573682f 70757368496e6465782e6a73703f7075736849643d3035303531313134313630353231 URL 00 URL 字符串结束 01 > 03 内容描述字符串开始 E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA_ 5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串 00 内容描述字符串结束 01 01 由以上分析可以看出,WAP PUSH可以被当作一种特殊的短信来发送,WAP PUSH包发送的内容实际上跟通过PPG网关发送的XML原理相同,但是经过了压缩。压缩之后的格式称为WBXML,这种格式将一些标记用代码来表示。然而WBXML的缩略标记分为两部分,一部分是所有类型的XML都通用的,另一部分是不同类型的XML有着不同的解释。 用户接收到此类信息时,在客户端手机支持WAP的情况下,可以直接访问到信息中加载的WAP网站地址,这样服务器也达到了推广业务方便用户使用的目的。由于在UCS2 编码方式下,可发送短消息的最大字符数是140字节,即WAP PUSH中的推送URL与描述文字的总字符数为140,因此描述文字的字数限制与推送的URL长度有关。 |