湖南省教育厅资助科研项目(A Project Supported by Scientific Research Fund of Hunan Provincial Education Department  

GSM/GPRS短消息在信息服务系统中的实现

湖南同德职业学院  向文 周志伟

摘要:本文阐述了GSM/GPRS短信息服务在信息系统中的实现方法,包括短信息的UCS2编码处理,PDU编码格式分析,经过编码处理后的PDU码通过GSM的AT命令向短信中心的发送,接收到的短信再进行PDU解码以读取短信内容。通过对GSM短信格式的分析全面了解GSM短信息的处理原则方法,以便在此基础上开发出现实的GSM/GPRS短信息服务系统,使短信技术更广泛应用在企业信息平台建设中。

关键词:短信息服务、短消息、GSM模块、编码、PDU码

作者简介:向  文 1975年生、男、工程师、主要研究方向为计算机网络应用系统开发

          周志伟 副教授

The realistic use of the GSM/GPRS

message in information srvice system

HuNan Tongde vocational technical college

Xiangwei   Zhouzhiwei

Digection:

          This essay has expatiated the way how the services of the GSM/GPRS message information system are realized,including dealing with the message by UC32 code,analizing the formation by PDU Code,sending the PDU code after coding to the message center through the AT order of GSM then reading message by releasing PDU code after receiving. Basing on grasping the dealing methods of the GSM message system by analizing the GSM message formation ,We can exploit the realistic GSM/GPRS message

service system so that the message technology will be widely in the building of the  enterprises’Information platform.

Key words:  message service 、message 、GSM module 、Organizing code 、PDU code

Brief introduction of the author :

Xiangwen, male, engineer, bron in 1975. the main direction of researching is exploiting the system of the practical using of the computer networks.

            Zhouzhiwei  vice-professor

 

1、短信服务应用

短信作为一种全新的相对独立的交互模式,已经成为人们获取信息的又一重要途径。06年本院为常德卷烟厂开发了企业产品价格跟踪系统,在此系统中应用了短信价格信息采集与发送功能,使企业产品价格信息能即时便捷准确地反馈到企业决策部门和相关人员手中。其作法是:由全国各指定的烟草零售点把特定时段的烟草零售价格按特定的格式利用手机短信发送到指定号码,即完成了价格信息的采集工作,短信服务器将接收到的短信息直接发送给信息处理服务器,再由信息处理服务器将数据处理反馈给终端用户。采用此模式,零售点可以每天将价格信息发送回价格采集服务器,解除了信息反馈中的地域限制和时间限制,提高了价格信息反馈的速度,减少了价格信息传递中的误差,减轻了信息点工作人员的工作量,提高了工作效率,增强了企业的市场竞争力。本文阐述了短信息服务在信息系统中的实现方法。

 

2、短信服务实现

2.1、说明

这里提出的短信服务是基于工业用SMS短信模块,俗称短信猫。可以采用RS-232或USB接口,与SMS模块的通讯采用GSM AT指令实现。

GSM AT指令发送短消息包括Block Mode、Text和PDU模式。Block Mode模式目前己淘汰不再使用。Text短信模式用于传统手机中,发送和接收都相对简单。但由于手机厂商的不同,内置字符集存在差别,通常只能发送ASCII码,而不支持汉字的UNICODE编码,因此在短消息接收处理时部分手机无法正确地对文本进行解码,也不能做自定义数据的传输。而现在国内手机都支持PDU模式,利用PDU模式发送接收短信,不存在兼容性的差异。各种类型手机都能正确接收处理PDU编码,而且可以自定义数据格式传输,极大地方便了信息的自动化处理。本文只讨论PDU模式短信的发送和接收处理。

2.1.1、 PDU编码处理

PDU(Protocol Data Unit,协议数据单元) 模式收发短消息可以使用三种编码方式:7-Bit 编码、8-Bit 编码和UCS2 编码。7-Bit编码用于发送普通的ASCII 字符,8-Bit 编码通常用于发送数据消息,如图片或铃声等,UCS2编码用于发送Unicode 字符。本文重点介绍UCS2编码的短信息处理,即采用了UCS2编码对中文、字母、数字的处理。

2.1.2、PDU编码格式分析

PDU编码表面上看来是一串ASCII码,由‘0’-‘9’、 ‘A’-‘F’这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU编串中不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。

根据GSM03.40规范,发送短信编码由下述格式构成,见下表

元素

长度

描述

SCA

1-12

包括长度、类型、中心号码

PDU-Type

1

协议数据单元类型

MR

1

所有成功的SMS-SUBMIT参考数目(0..255)

OA

2-12

发送方SME的地址(目标手机号)

DA

2-12

接收方SME的地址(回复手机号)

PID

1

参数显示SMSC以何种方式处理SM (比如FAX,、Voice等)

DCS

1

参数表示用户数据(UD)采用什么编码方案

SCTS

7

参数表示SMSC接收到消息时的时间戳

VP

0,1,7

参数表示消息在SMSC中有效的时长,即信息保存多长时间

UDL

1

用户数据段长度

UD

0-140

用户发送的消息数据

示例分析:发送短消息给“8613875044343”,消息内容为“Test” ,短信中心号码8313800736500。

按规范进行编码后结果为:0891683108706305F011000D91683178054443F3000800080054006500730074

分析以上代码

08

短信中心号码长度,包括91

91

中心号码类型91国际格式最常用

683108706305F0

短信中心号码,经过移位处理

11

短信回执报告

00

固定格式

0D

接收方号码长度

91

接收方号码类型

683178054443F3

接收方号码

000800

用户数据编码方案,08为1位编码,04为8位编码,00为位编码

08

短消息长度

0054006500730074

短消息内容 “Test”

 

根据GSM03.40规范,接收到的PDU编码由下述格式构成,见下表

元素

长度

描述

SCA

1-12

短信中心地址,包括长度、类型、中心号码

PDU-Type

1

协议数据单元类型

OA

2-12

发送方SME的地址

PID

2-12

参数显示SMSC以何种方式处理SM (比如FAX,、Voice等)

DCS

1

参数表示用户数据(UD)采用什么编码方案

SCTS

7

参数表示SMSC接收到消息时的时间戳

UDL

1

用户数据段长度

UD

0-140

用户发送的消息数据

例:0891683108706305F0240D91683178054443F300004001528035350004D4F29C0E代码分析

08

短信中心号码长度

91

中心号码类型91国际格式最常用

683108706305F0

短信中心号码,经过移位处理

24

短信处理方式

0D

发送号码长度

91

发送方号码类型

1683178054443F3

发送方号码

00

接收的短信编码方案,七位编码

40015280353500

接收到短消息时间

04

短消息长度

D4F29C0E

短消息内容。“Test”

前面了解了短信编码规则后,就可以利用GSM模块进行短信的收发了。前述己经提到短信的发送和接收是采用UCS2格式即16位unicode编码进行处理,而且信息及各要素都要进行处理,所以在发送短信前、接收到短信编码后都要进行编码处理和解码处理,才能够发送或显示中英文信息。下面将讨论如何进行编码和解码处理。(这里采用了DELPHI语言实现具体编解码以及短信发送接收的处理。)

2.2、    发送短信

    经过格式编码处理后的PDU码即可通过AT命令发送给短信中心,然后经过短信中心转发给接收方。在短信发送前还需要进行编码处理。下面列出了短信UCS2编码处理的DELPHI代码,参照GSM03.40规范,不仅短消息正文需要经过UCS2编码处理,短信中心号和接收方号码也需要经过奇偶位交换处理。

     function EnCodeGB(var s:widestring):string;

var

              sLen:integer;

              cur:integer;

              i:integer;

              strTmp:string;

begin

           result := '';

           sLen := length(s);

           i := 1;

         while i <= sLen do

        begin

            cur := ord(s[i]);

            FmtStr(strTmp,'%4.4X',[cur]);

            result := result + strTmp;

            inc(i);

         end;

end;

经过处理后即可以通过AT命令将短信发送出去。

     Ate<cr>  初始化终端

at+cmgf=0<cr> 设置短消息模式为PDU模式

   at+cnmi=2,1,0,0,0<cr>  设置当终端接收到短信后的反映方式,此为设置当接收到短消息后直接返回短信编码串给接收终端。

at+cmgs=023<cr> 输出短信消息长度,此长度为除PDU串中短信中心外的PDU串长度。

0891683108706305F011000D91683178054443F30008000877ED4FE16D4B8BD5<cr>,完整的PDU编码串,如果终端返回OK则短消息正确发送。

2.3、接收短信

短消息的接收则是发送的逆向过程,如果设置接收到短信后直接反馈给终端,则当有收到短消息后,会给终端提示  +CMTI: “SM”, <index>信息,index 为短消息保存在SM存储器中的索引号 。然后以AT+CMGR=<INDEX>指令读取短消息。再解码后显示出短信结果。

2.3.1、 对于接收到的短信,根据GSM03.40规范载取定长字符,再进行PDU解码即可得到短信内容。[参考接收方格式分析]。下面是PDU短消息内容解码的DELPHI代码示例:

function DeCodeUnicode(s:String):String;

var

     P:PWord;

     I,RealLen:Integer;

     sStr:WideChar;

begin

    New(p);

    RealLen:=Length(s) div 4;

    for I:=0 to RealLen - 1 do begin

       P^:=HexToInt(Copy(s,4*I+1,4));

       Move(P^,sStr,2);

       Result:=Result+sStr;

    end;

  Dispose(P);

end;

2.3.2、短消息读取指令

   AT+CMGL=4<CR>  此命令可枚举SM存储器中保存的所有短信,同时会列出每条短信息存储的位置、状态信息(己读、未读)及索引号。

  AT+CMGR=<INDEX> 此命令可读取依据INDEX所指定序号的短信消息。

 

3、结语

    本文介绍了短信息服务的基本实现思想,具体的实现过程根据需求的不同稍做修改,原则上是相同的。短信息应用可以集成任何现存企业信息服务系统或正在开发的系统中,能利用任何计算机语言实现。

信息系统通过GSM模块和短消息的集成,接合现有飞速发展的INTERNET网络和移动网络资源,为各种企业提供全面的内外信息服务。其核心服务引擎采用开放式接口,可以跟各种团体的办公系统、业务系统、客户服务系统等对接,实现短信在内部办公、业务通知、查询、客户沟通交流等方面的应用。

短信可以为用户提供基于短信技术的邮件提醒、短信群发、定制通知、日程提醒、信息订制、双向互动信息、短讯发送、资料管理、费用统计等,可以加强内部员工间的沟通与交流,并与客户建立更直接、快速的沟通,大大减低内部通信费用和客户管理成本,从而获得一个移动办公的环境,真正实现“移动办公”、“移动服务”。

 

[注]<cr> 回车

       >  GSM模块提示符

      ^Z  CTRL+Z

 

参考文献:

1、程卫东.《短信增值业务平台实施方案》[M].无线通信技术,2003,4.

2、周学沪 石丹.《短信息(SMS)与WAP的开发及应用》[M]. 北京:电子工业出版社,2005. 

3、马潮.《嵌入式GSM短信息接口的软硬件设计》[EB/OL]. http://www.mcuchina.com/Article/Communication/SMS/200411/129.html.

4、但正刚.《FredBarwell RichardBlair VB.NET高级编程》[M]. 北京:清华大学出版社,2002.

5、赛奎春.《Delphi信息系统开发实例精选》[M].北京:机械工业出版社,2005.