2.1.2 软件设计
SMS短消息采用AT命令的PDU ModePDU模式是发送或接收手机SMS信息的一种方法,PDU串表面上是一串ASCII码,由‘0’~‘9’、‘A’~‘F’这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。短信息正文经过十六进制编码后被传送出去。
PDU相当于一个数据包,它由构成消息(SMS)的信息组成。作为一种数据单一元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。
1 移动终端发起时,PDU的格式为:
SMSC PDU类型脉DA PID DCS VP UDL UD(0~1400cted)
2 移动终端为目的时,PDU的格式为:
SMSC PDU类型OA PID DCS SCTS UDL LID(0~400cted)
其中,SMSC为短消息业务中心地址,DA/OA为源/目的地址,PID为协议识别,DCS为数据编码,UDL为用户数据长度,UD为用户数据,VP为有效时间,LID指明是发出信息,SCTS指明短消息到达业务中心的时间。
本系统中发送的短消息包含中文汉字和数字,所以选择PDU串的用户信息编码方式TP-DCS是08,表示UCS2编码方式,UCS2编码是将每个字符(1-2个字节)按照ISO/IECl0646的规定,转变为16位的Unicode宽字符。但在GSM标准中,中文编码采用UTF一8的编码方式,不是目前国内常用的GB一2312编码,故还需要进行中文编码的转换,才能与采用GB-2313汉字库相配合显示汉字字型。由于UTF-8和GB-2312编码之间不存在一一对应的线性关系,因此只能采用查表的方式进行转换。
在消息发送前,要将消息中ASCII字符及汉字统一编码成UCS2码,以PDU数据包的形式发送。接收到的数据是以7b的编码形式存储在Mc39i模块或SIM卡内,在数据读取时直接从Mc39i模块中得到符合GSM规范的数据,需经过提取得到7b编码的有用数据。然而,这些7b编码数据是以ASCII字符的形式存在的,要转换成8位的十六进制形式的7b编码,再解码成可用的ASCII码数据,这样得到GSM网络发送来的原始数据,如图2.5所示。
图2.5 SMS数据传输过程