1、西 南 林 学 院本 科 毕 业(设计)论 文题 目: 短消息在林务系统中的应用 分院系部: 计算机与信息科学系 专 业: 计算机科学与技术 31短消息在林务系统中的应用摘 要:本课题主要研究了短消息网关设备规范和通信信息资源站实体与互联网短消息网关接口协议,基于短消息通讯平台,利用应用支撑平台设计开发出了林务作业中的手机短信收发系统,该系统林利用手机短信服务实现了林务作业的科学化。关键字:短消息 林务作业 手机短信收发系统USING SHORT MESSAGE IN FORESTRYSYSTEMS TASKMaolian Xu(Dept. of Computer and Informatio
2、n Science, Southwest Forestry College, Kunming, Yunan, 650224, China)Abstract: This topic has mainly studied the short messages gateway equipment stardard and the correspondence information resouce station,also the internet short messages gateway connection agreement. This scheme based on the short
3、messages communication plateform, used the supported on the platform using was design this Short messages sent out system.The system use short messages service made forestrys task more scientific.Keyword: Short Message Forestrys task Short messages sent out system目 录前言11 短消息在林业中的应用11.1 短消息在林业应用中的意义1
4、1.2 开发背景21.3 开发目的21.4 设计要求22 短消息网关通信模块的设计与实现32.1 企业短消息应用架构32.2 短信接入方式比较32.3 短消息网关结构42.4 短消息网关通信模块的设计与实现52.4.1 短消息网关通信模块的设计52.4.2 短消息网关通信模块的实现63 利用GSM通信模块开发短消息的相关GSM AT指令83.1 相关的GSM AT指令83.2 计算机与GSM通信模块的通信93.3 短消息编码114 基于PDU模式的中文短信息接收114.1 PDU数据格式分析114.2 PDU模式的纯英文短信息解码154.3 中文短信息的解码165 手机短信收发系统185.1
5、程序设计185.2 系统出错处理设计215.3 系统维护设计215.4 数据库的设计216 结论和展望22参考文献23致谢24附件:手机短信收发系统程序核心代码25西南林学院2004届本科毕业论文前言短消息业务在最近几年以各种各样的形式渗入到公众的日常生活当中。随着计算机软硬件技术的发展和广泛应用及用户需求的多样性变化,短消息用户群由时尚人群向企业/行业用户扩展。越来越多的企业开始利用短信开展各种短信增值业务:短信商业信息发布、短信客户关系管理、短信呼叫中心、短信防伪、短信移动办公等。无论从技术还是市场发展的角度来看,企业和行业短消息应用都代表着短消息的未来。将手机短信应用在地域分布广、层次性
6、强的林业作业中更标志着林务作业向科学化、技术化、信息化发展迈出了坚实的一步,对促进林务作业再上新的平台,加快提高林务作业的科技水平都必将起到十分积极的作用。1 短消息在林业中的应用1.1 短消息在林业应用中的意义目前手机短信在林务中的应用越来越广泛,它作为数据采集、传输、定向发送的远程无线接入设备具有覆盖范围广、性能稳定、使用成本低、方便快捷等特点,使得使用者对它非常喜欢。同时,SMS(短消息服务)是通过移动网络用手机收发简短文本消息的一种通信机制。SMS采用存储转发模式短消息被发送出去之后,不是直接发送给接收方,而是先存储在SMC(短消息中心),然后再由SMC将短消息转发给接收方。如果接收方
7、当时关机或不在服务区内,SMC就会自动保存该短消息,等到接收方在服务区出现的时候再发送给他;与普通的寻呼机制不同的是,SMS是一项有保证的双向服务。发送方可以在将短消息发送出去之后得到一条确认通知,返回传递成功或失败的信息以及不可到达的原因;SMS是非对称业务,它使用SS7信令信道传输数据分组。所以,系统可以支持短消息与话音、数据、传真等业务的同步传输。即使在业务信道处于高峰期的情况下,也照样可以使用短消息顺利通信;此外,SMS还可以实现全国甚至国际漫游。1.2 开发背景因森林资源存在地域性广、层次性强、动态变化快、反映资源现状的信息量大、内容复杂、数据形式多样等特点。在林务作业的过程中,就形
8、成作业周期长、程序复杂、反映不及时等缺点,成为林务作业中最严峻的问题。如林场失火或发现白蚁灾情,林业员向上级汇报情况后,最快也要2天后才能得到确切的解决方案,这之中就可能造成难以想象的损失。并且随着林务作业的业务更加的繁忙,这种单纯的传统手工作业远远不能满足实际现代化作业的需求,于是根据这些特点开发了林务现场管理系统,它是专门针对林务现场作业而设计的特殊的系统。该系统主要利用互联网将现场作业报告网络化,使营林作业第一线的林业员能用最快的速度将最准确的第一手资料传给管理者,免除大量的手工书面报告,提高工作效率,节省宝贵时间,方便管理者更快的作出准确的决策。同时因为每个林业员还没有能力配备一台笔记
9、本电脑在林场中进行作业,而林场中也会因为地域广等问题没有开通网络,所以只用互联网作业也是不够的。但每个林业员配一个手机是可以的,用手机发短信也是可以实现的,所以考虑把现场管理系统和手机短信完美的连接起来。本篇论文就解决了这个问题。1.3 开发目的随着林务作业信息化要求越来越高,传统的手工作业不再能满足日益增长现代化作业需要,面对庞大的信息量,需要有个智能的系统来管理这些繁杂的数据,提高作业效率,减少工作量。手机参与系统就方便和简捷了很多,只需要简单的短消息输入,就可以完成复杂的手工作业。1.4 设计要求本软件作为现场管理系统的一部分,最终用户是各林场的林业员,他们主要是将每天的工作日报用手机短
10、信的形式发送到现场管理系统中来,而林场管理员就可以在现场管理系统中即时看到当日工人的工作情况,及时处理可能出现的突发情况。并且管理人员还可以在管理系统中,对希望的数据进行查询、排序、打印等。由于林场林业员需要报告的内容很多,如接地情况、抚育情况、病虫害等各种情况,所以他们就要求有一种简单的手机输入格式,同时这种格式也支持现场管理系统的要求。2 短消息网关通信模块的设计与实现2.1 企业短消息应用架构 短消息在企业行业应用架构应该划分为三个层面:接入平台、应用支撑平台、应用系统。接入平台:通过无线网络或者有线网络完成短消息的协议适配和接收发送。无线接入方式采用GSM/GPRS/CDMA空中接口,
11、通过移动网络将短消息发送到短消息中心;有线接入方式利用互联网或专用网络直接接入短消息中心或短信网关。应用支撑平台:介于应用系统和接入平台之间,向应用系统提供基本的通用短消息服务。这些服务包括短消息单发,短消息群发,短消息定时发送,短消息用户的鉴权和用户管理,短消息负载平衡和流量控制等。这些服务和具体应用需求独立,但却是所有应用系统必不可少的功能。该层使应用系统和通信方式完全独立开来,减少了应用系统的负担。应用系统:包括各种面向应用的系统。这些系统有企业办公系统(OA),邮件系统等等;另外还包括和行业应用密切相关的应用系统。这些系统利用应用服务层提供的短消息服务接口,专注于各自的应用逻辑。手机短
12、信收发系统就是基于接入平台,利用应用支撑平台开发出来的应用系统。2.2 短信接入方式比较企业开展短信业务必须选择一种短信接入方式,目前可以选择的短信接入方式主要有如下几种:1) 专线接入运营商短信网关(短信中心)企业通过自己的服务器直接接入移动运营商的网络,运营商对于设备和业务有一定的要求,开展的业务须经过运营商的综合评测,若企业用户涉及多个运营商网络(如中国移动、中国联通),则需要分别接入,服务器的价格通常也较贵,因此该种方法较适用于超大型企业,对于一般的中小企业不太适用。2) 虚拟运营商接入企业只作为其一个客户,利用虚拟运营商提供的客户端软件或二次开发接口发送短消息。这样的好处是设备投入比
13、较少。但是必然的存在依赖于虚拟运营商的问题,业务内容和服务的质量将会收到其限制,不方便开展自己的特色业务,且所有信息必须经过服务提供商转接,企业信息的安全得不到保证,要向服务提供商缴纳短信资费,运行成本难以降低。3) 手机或GSM MODEM无线接入这种方法是应用程序通过串口利用手机或GSM MODEM发送短消息。通常只能支持一个手机或GSM MODEM。市面上虽然也有一些号称支持多个GSM MODEM接入的短信应用软件或二次开发包,但使用起来要将多个GSM MODEM设备串接,使用的可靠性、方便性都很低。图 1 GSM/GPRS Modem 短信模块是工业级短信收发模块,可以通过串口与计算机
14、、单片机、工控机连接。与软件配合,以实现企业各种短信无线应用,为企业的无线增值应用提供最佳的无线短信接入手段。2.3 短消息网关结构短消息网关(ISMG)是处于短消息中心(SMSC)和业务提供商(SP)之间的设备,它为这两个实体的数据交换提供安全、快捷的通道。网关与短消息中心之间使用SMPP协议(Short Message Peer to Peer,短消息点对点协议),与SP之间使用CMPP协议(China Mobile Peer to Peer,中国移动点对点协议),因此短消息网关需要完成协议的转换、计费、路由、安全和网络管理等功能。其结构图如图2所示。具体说来,图2中SMPP通信代理系统主
15、要实现网关和GSM网中短消息中心(SMSC)的连接,确保准确接收和发送数据,实现高效、可靠的数据传输。为了达到规范要求的不超过0.001%的数据丢包率,SMPP通信代理需要支持流量控制。CMPP通信代理系统主要是实现和SP服务提供商的连接,与SMPP通信代理系统不同的是,由于协议的影响,CMPP通信代理是服务器端,需等待SP的连接,而SMPP通信代理是客户端,需要主动连接SMSC。短消息网关处理系统是网关中最复杂的处理进程,它完成的任务包括:向GNS(汇接网关)查询路由,维护路由表,进行协议转换和数据分发。防火墙系统主要为网关系统提供安全保障,它包括IP包过滤和身份验证。短信网关计费系统主要形
16、成各种计费话单,为计费提供依据。业务管理系统主要完成对业务进行统计报告,生成报表,为运营者对用户数据的添加、修改、删除以及对网关系统的监控、查询、操作和维护提供接口和界面6。2.4 短消息网关通信模块的设计与实现短消息网关通信模块是整个短消息网关的基础。无论是计费、统计,还是超时重传,高质量的通信构架是必不可少的保障。这个通信构架不仅要完成基本的收发消息的功能,而且还要有好的结构以支撑各种业务需求,保证良好的扩展性。2.4.1 短消息网关通信模块的设计在设计短消息网关通信模块时,需要考虑以下几点:第一,由于短消息网关功能繁多,如果把通信和具体业务合在一起开发,容易顾此失彼。可能会因为开始的考虑
17、不周全,造成在增加某项新业务时不得不修改通信底层和原来的业务代码,导致重复开发。所以我们采用通信代理的方式把通信和具体业务分开,在增加新业务时,就只需少量修改通信代理的设置,而且不必再改动原来的业务代码了。第二,通信代理需要同时倾听多个端口,我们选用多路复用I/O这种方式。虽然多线程能够通过并行计算和共享内存提高代码效率和资源利用率,但在短消息网关中,处理的数据量大,多线程方式的并行处理会造成一些消息的逻辑混乱,资源共享也会增加代码的复杂度。而多路复用使用简单,逻辑清晰明了,不易发生错误,也不会出现因资源共享带来同步和互斥问题。因此使用多路复用I/O是比较合理的。第三,业务处理GSM通信模块与
18、通信代理之间可以使用队列进行通信,对队列的管理和参数的设置(例如对同一队列操作的互斥,以及队列个数的设置等)都使用专门的队列内核程序统一调度并封装成函数接口,以方便业务处理GSM通信模块对队列的使用。另外,通过队列通信,也可以为今后增加的业务提供良好的扩展性。第四,为了达到99.999%的不丢包率,通信代理需要使用流量控制机制以保证网关内部不丢包。这是因为无论队列设置有多大,如果出现消息只发不收的情况,都会造成队列溢出而丢包。因此,为每个队列中缓存的消息做记录,当某个时刻队列消息的数量达到规定限度,队列就不再收包,以保证到达网关的消息不会丢失。2.4.2 短消息网关通信模块的实现基于以上设计思
19、路,我们实现的短消息通信模块包括四个父进程:CMPP通信代理(cmpp_server)、SMPP通信代理(smpp_server)、消息分发处理server(package_server)和前转消息处理server(route_server)。它们之间通过6个消息队列相互通信。具体的软件结构如图3所示。图3 通信模块软件结构Cmpp_server主要为SP和网关之间建立一条高质量的传输通道。它同时侦听与它相连的多个socket,通过队列接口函数mqm_send( )把接收到的CMPP格式的消息送入队列2中。同时,它也要通过函数mqm_recv( )不停的从队列1中获得消息,并把它转发到相应的目
20、的SP。cmpp_server不需判断收到的消息类型,只负责通信,因此称通信代理。Smpp_server与cmpp_server基本一致,唯一不同的只有一点:SMPP协议规定smpp_server是客户端,需要主动发起建立连接的请求;而CMPP协议规定cmpp_server是服务器端,需等待对方连接。Package_server是短消息网关的核心,所有的消息都要经过它,包括协议转换,超时重传,计费,路由,都需要在package_server中完成。package_server同时监听2、4、6三个队列,根据不同的消息头来判断这个消息的下一个目的地。路由表也需要在package_server中维
21、护,以便package_server能得到路由信息,转发消息。如果路由表中找不到相关的信息,package_server就要把该消息转发给route_server,由route_server从汇接网关处获得路由信息后发送该消息。Route_server主要处理需要转发到其他网关的消息。当package_server发现消息的目的地不是本地网关所连的SP或SMSC,那么它就会把消息转发给route_server处理。Route_server接到消息后与汇接网关通信,请求目的地的网关地址,然后与目的网关建立socket连接,交付该消息并记录前转话单。在整个通信模块中,所有的server都使用队列接
22、口函数mqm_init( )初始化消息队列并复接在队列上。收发数据使用mqm_send( )和mqm_recv( )函数完成。存储消息采用固定的数据结构,其结构如下:struct mqm_connectionunsigned int package_server_seqnum;/由网关自行产生。若消息从队列4中来,该元素将是转化后的CMPP协议格式的消息序列号;若消息从队列2中来,该元素将是转化后的SMPP协议格式的消息序列号。short mqm_sockfd;/接收该消息的socket;short mqm_seqnum;/收到的消息序列号;time_t mqm_timeout;/收到该消息的
23、时间;int total_length;/该消息的长度;char mqm_bufMAX_PACKET_SIZE;/该消息的内容;char converted_bufMAX_PACKET_SIZE;/转换协议后的消息内容;;现以MO请求业务为例,描述通信模块的工作流程。当SMSC以SMPP格式的DELIVER_SM消息发出订阅某个SP的言语传情短消息,经由smpp_server收到,从队列4中转发给package_server。Package_server收到MO请求后回送给SP一个SMPP格式的DELIVER_SM_REP应答消息,并用mqm_connection结构体存储这条MO消息的各个信
24、息。之后,package_server就把该消息转换成CMPP协议的CMPP_Deliver消息,并通过队列1送到cmpp_server中,转发给目的SP。SP在接收到这个消息后,会产生一个CMPP格式的CMPP_Deliver_Rep的应答消息返回给网关。当package_server收到了应答信号,也需要用mqm_connection结构体存储。这时,一条MO短消息转发成功,package_server记录SMO话单9。3 利用GSM通信模块开发短消息的相关GSM AT指令3.1 相关的GSM AT指令 与SMS有关的GSM AT指令(from GSM07.05)如下表所示:AT 指令 功
25、 能 AT+CMGC Send an SMS command(发出一条短消息命令) AT+CMGD Delete SMS message(删除SIM卡内存的短消息) AT+CMGF Select SMS message formate(选择短消息信息格式:0-PDU;1-文本)AT+CMGLList SMS message from preferred store(列出SIM卡中的短消息PDU/text: 0/“REC UNREAD”-未读,1/“REC READ”-已读,2/“STO UNSENT”-待发,3/“STO SENT”-已发,4/“ALL”-全部的) AT+CMGR Read S
26、MS message(读短消息) AT+CMGS Send SMS message(发送短消息) AT+CMGW Write SMS message to memory(向SIM内存中写入待发的短消息) AT+CMSS Send SMS message from storage(从SIM内存中发送短消息) AT+CNMI New SMS message indications(显示新收到的短消息) AT+CPMS Preferred SMS message storage(选择短消息内存) AT+CSCA SMS service center address(短消息中心地址) AT+CSCB
27、Select cell broadcast messages(选择蜂窝广播消息) AT+CSMP Set SMS text mode parameters(设置短消息文本模式参数) AT+CSMS Select Message Service(选择短消息服务)表1 相关的GSM AT指令对短消息的控制共有三种模式:Block Mode基于AT命令的PDU Mode基于AT命令的Text ModeBlock Mode已是昔日黄花,目前很少用了。Text Mode比较简单是纯文本方式,可使用不同的字符集,主要用于欧美地区。从技术上说也可用于发送中文短消息,但国内手机基本上不支持。PDU Mode被
28、所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。3.2 计算机与GSM通信模块的通信1) 串口连接由于GSM通信模块自带RS232串口线,故只需将其连接到计算机串口即可。打开windows自带的超级终端,选择相应的串口,将端口参数设置还原为默认值即可。2) 连接测试输入“AT”然后回车,屏幕上返回“OK”表明计算机与GSM通信模块已连接成功,GSM通信模块能够正常工作。这时就可以测试各类AT命令。当测试命令“AT+CMGS=?”时,如果返回“OK”标明GSM通信模块支持该指令。该指令的完整语法如下:如果此时GSM通信模块处于PDU Mode(即“AT+CMGF?”返回“0”)AT+
29、CMGS=PDU is given如果短消息发送成功,则返回“OK”,并显示信息号:AT+CMGS:,如果短消息发送失败,则返回如下信息号:AT+CMS ERROR:如果此时GSM通信模块处于Text Mode(即“AT+CMGF?”返回“1”)AT+CMGS=,todatext is entered如果短消息发送成功,则返回“OK”,并显示信息号:AT+CMGS:,如果短消息发送失败,则返回如下信息号:AT+CMS ERROR:另外,由于使用的是GSM通信模块,当有新的短消息到来时,需要GSM通信模块产生提示,使用指令“AT+CNMI”。该指令的完整语法如下:AT+CNMI=,如果有新的短消
30、息来到,则GSM通信模块将自动返回下列提示:AT+CMTI:“SM”,此时读出,然后用“AT+CMGR”指令即可读出短消息内容。3) 鉴于TC35(T)支持TEXT格式,我们在试验中主要测试该格式。(A)设置短消息中心AT+CSCA=+8613800731500(短消息中心);(B)设置短消息发送格式AT+CMGF=1(1-TEXT; 0-PDU);(C)发送短消息(短消息内容为“test”)AT+CMGS=13508485560(目的地址)testz;(D)设置短消息到达自动提示:设置短消息到达提示当短消息被接收,将获取指令:AT+CMTI:SM,INDEX(信息存储位置)AT+CNMI=1
31、,1,0,0,1();(E)获取短消息内容(Once more),假设INDEX8。AT+CMGR=8返回信息如下:AT+CMGR:RECUNREAD,+8613508485560,01/07/16,15:37:28+32,Once more 23.3 短消息编码设需要发送的短消息内容为“Hi”,使用的GSM字符集为7位编码。首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:H翻译成1001000,i翻译成1101001,显然H的二进制编码不足八位,那么就将i的最后一位补足到H的前面。那么就成了11001000(C8),i剩下六位110100,前面再补两个0,
32、变成00110100(34),于是“Hi”就变成了C8 34。4 基于PDU模式的中文短信息接收分析PDU数据包,根据PDU的数据格式将收到的中文信息和其它相关信息解析出来。4.1 PDU数据格式分析PDU数据包格式,PDU数据包由两部分构成,短信息服务中心地址(SMSC address)TPDU。PDU串表面上是一串ASCII码,由0-9、A-F这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。其中短信息服务中心号码、发送源号码、日期以及时采用压缩BCD码
33、表示,低位在前,高位在后。例如,我们要将字符“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最常用。9110010001BIT No.76543210Name1数值类型号码鉴别表 2 91短信息中心号码类型数值类型(Type of Numbe
34、r):000未知,001国际,010国内,111留作扩展;号码鉴别(Numbering plan identification):0000未知,0001ISDN/电话号码(E.164/E.163),1111留作扩展; 683108701305F0短信息中心号码。由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。这需要根据不同的地域作相应的修改。、通称短消息中心地址(Address of the SMSC)。 11文件头字节。11&h=00010001&bBIT No. 7 6 5 4 3 2 1 0 Name TP-RP TP-UDHI TP-SPR TP-V
35、FP TP-RD TP-MTI Value 0 0 0 1 0 0 0 1 表 3 11文件头字节应答路径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)
36、拒绝复制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 表
37、 4 00协议标识TP-PIDBit No.7与Bit No.6:00如下面定义的分配Bit No.0Bit No.5;01参见GSM03.40协议标识完全定义;10预留;11为服务中心(SC)特殊用途分配Bit No.0Bit No.5。一般将这两位置为00。Bit No.5:0不使用远程网络,只是短消息设备之间的协议;1使用远程网络。Bit No.0Bits No.4:00000隐含;00001电传;00010group 3 telefax;00100语音;00101欧洲无线信息系统(ERMES);00110国内系统;10001任何基于X.400的公用信息处理系统;10010Email。
38、00数据编码方案TP-DCS(TP-Data-Coding-Scheme)BIT No. 7 6 5 4 3 2 1 0 表 5 00数据编码方案TP-DCSBit 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默认的字母表,018bit,10USC2(16bit),11预留;Bit No.1与Bit No.0:00Class 0,01Class 1
39、,10Class 2(SIM卡特定信息),11Class 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 周 表 6 00有效期TP-VP 02用户数据长度TP-UDL(TP-User-Data-Length) C834用户数据TP-UD(TP-User-Data)“Hi”发送和接收的PDU串,结构是不完全相同的。例1发送:SMSC号码是+8613800250500
40、,对方号码是13851872468,消息内容是“Hello!”。从手机发出的PDU串可以是08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 3158 81 27 64 F8 00 00 00 06 C8 32 9B FD 0E 01对照规范,具体分析:分段含义说明08 SMSC地址信息的长度 共8个八位字节(包括91)91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加+)68 31 08 20 05 05 F0 SMSC地址 8613800250500,补F凑成偶数个11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式00 消息基
41、准值(TP-MR) 00D 目标地址数字个数 共13个十进制数(不包括91和F)91 目标地址格式(TON/NPI) 用国际格式号码(在前面加+)68 31 58 81 27 64 F8 目标地址(TP-DA) 8613851872468,补F凑成偶数个00 协议标识(TP-PID) 是普通GSM类型,点到点方式00 用户信息编码方式(TP-DCS) 7-bit编码00 有效期(TP-VP) 5分钟06 用户信息长度(TP-UDL) 实际长度6个字节C8 32 9B FD 0E 01 用户信息(TP-UD) “Hello!”表 7 发送PDU字符串说明例2接收:SMSC号码是+86138002
42、50500,对方号码是13851872468,消息内容是“你好!”。手机接收到的PDU串可以是08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 2764 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21对照规范,具体分析:分段 含义 说明08 地址信息的长度 共8个八位字节(包括91)91 SMSC地址格式(TON/NPI) 用国际格式号码(在前+)68 31 08 20 05 05 F0 SMSC地址 8613800250500,补F凑成偶数个84 基本参数(TP-MTI/MMS/RP) 接收,
43、无更多消息,有回复地址0D 源地址数字个数 共13个十进制数(不包括91和F)91 源地址格式(TON/NPI) 用国际格式号码(在前面加+)68 31 58 81 27 64 F8 源地址(TP-OA) 8613851872468,补F凑成偶数个00 协议标识(TP-PID) 是普通GSM类型,点到点方式08 用户信息编码方式(TP-DCS) UCS2编码30 30 21 80 63 54 80 时间戳(TP-SCTS) 2003-3-12 08:36:45+8时区06 用户信息长度(TP-UDL) 实际长度6个字节4F 60 59 7D 00 21 用户信息(TP-UD) “你好!”表 8
44、 接收PDU字符串说明4.2 PDU模式的纯英文短信息解码PDU模式的纯英文短信息编码使用GSM字符集的7位编码,此时TP-DCS的值为00。如短信息内容为英文字符“Hi”,首先将各个字符转换为7位的标准二进制ASCII码,然后要将后面字符的低位逐位调整到前面,补齐前面的差别。例如:“H”的二进制ASCII码为1001000,“i”二进制ASCII码为1101001;显然H的二进制编码不足八位,那么就将后面字符i的最后一位补足到H的前面,就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“Hi”就变成了两个八进制数C834。由于PDU模式
45、的纯英文短信息采用7位编码,解码不方便,因此对于只需发送和接收纯英文字符和数字符号的应用,最好采用Text模式发送和接收短信息4。4.3 中文短信息的解码由于中文字的编码是采用2个字节的编码,因此发送和接收中文或中英文混合的短信息只能采用PDU模式。但在GSM标准中,中文编码采用UTF-8的编码,不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能与采用GB-2313汉字库相配合显示汉字字型。由于UTF-8和GB-2312编码之间不存在一一对应的线性关系,因此只能采用查表的方式进行转换。下面给出一个由UTF-8到GB-2312编码转换的算法。 建立UTF-8和GB-2312两个中文编码表,表中数据项为2个字节长度的十六进制的数,代表一个中文编码。两个表的长度分别为14 890字节(27445)。UTF-8编码表按数据项值从小到大排序,而在GB-2312编码表中,与UTF-8相同位置处为相同汉字的GB-2312码字,如表9所示。7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编