基于SMS的远程监控系统中的中文信息传输新方法研究

2013-01-29 02:57吴育芳张彩丽
陕西科技大学学报 2013年1期
关键词:字符串短信指令

杨 帆, 吴育芳, 张彩丽

(1.陕西科技大学 电气与信息工程学院, 陕西 西安 710021; 2.陕西科技大学 机电工程学院, 陕西 西安 710021)

0 引言

数据传输技术是远程监控应用系统开发中的关键技术之一,在一定程度上是制约系统开发进程、应用性能的瓶颈因素.尤其是在一些监控对象数目庞大、空间分布距离较远的监控系统中,数据传输技术甚至关系到系统开发成败.早期数据远传主要是铺设通信电缆的有线通信或者基于数传电台的无线通信,存在通信成本高昂,维护困难的问题.

随着Internet的出现,采用接入Internet成为远程监控系统数据传输的重要手段.但是对于某些应用场合,如野外作业、被监控对象是移动的目标等,有线监控系统存在着明显的局限,如布线困难、系统成本高等.

近年来,随着移动通信网络的不断扩展和功能的不断提升,依赖于现有商业移动通信业务实现远程监控系统数据传输技术已经成为业内共识,其中基于GSM网络的通信技术最受关注,GSM网络数据业务,尤其是SMS业务开发技术成为研究的热点[1].

1 基于SMS的远程监控系统的一般组成

SMS作为GSM网络中最流行、最普及的数据传输业务,由于不受地域限制、成本低廉、功能强大,配置灵活等优点,在传输数据量不大、监控对象较多、空间分布距离远,实时性要求不高的应用场合中得以广泛应用.其一般应用系统架构如图1所示[2-4]:

图1中各个监测点通过连接的GSM Modem将采集的数据以SMS的形式发送给监控中心计算机,监控中心计算机通过连接的GSM Modem池接收来自各个监测点的数据,进行分析处理,并可根据需要向监测点发出相关指令,或者向监管人员发出报警、提醒等信息.

由于利用SMS进行数据传输可以有效解决传统无线数据传输设计方案中成本高昂、传输距离短、可靠性低、维护困难等显著缺陷,因而在遥控、遥测、工业数据采集系统、防盗报警、交通运输监控管理、广告信息发布等应用中大放光彩.

目前,基于SMS进行远程监控系统的数据传输技术主要存在两种典型的应用模式[5],即发送短消息常用的PDU(Protocol Data Unit,协议数据单元)模式和TEXT模式.使用TEXT模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信.PDU模式收发短信可以使用3种编码,7-bit、8-bit和UCS2编码.其中,7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符.

由于PDU格式编码过程相比TEXT格式,比较复杂,因此大多数SMS数据传输技术在实际应用中都选择基于TEXT格式进行数据传输,以便降低系统开发难度.随着用户的应用需求不断变化,中文SMS传输正在越来越受到欢迎.

本文针对用户需求的变化以及目前PDU格式SMS收发比较麻烦的特点,在详细分析GSM Modem AT指令的基础上,提出了一种简单易行的新型中文SMS收发方法,该方法可以大大简化中文SMS数传开发的难度.

2 SMS收发的基本方法

SMS是GSM网络数据传输业务,远程监控中基于SMS的数据传输一般借助GSM Modem和单片机或PC相连,通过AT指令控制GSM Modem实现SMS的收发.用于控制GSM Modem,实现SMS收发的典型AT指令如表1所示[6].

表1 SMS收发常用指令

如前所述,远程监控中常用的SMS收发格式无外乎TEXT和PDU两种.SMS收发首先是SMS格式的设置,通过“AT+CMGF=”可以定义SMS格式,参数值可为0(表示PDU格式,默认值)或1(表示TEXT格式).然后通过指令“AT+CMGS”可发短消息.其命令格式如表2所示.

表2 AT+CMGS命令格式

其中::目标地址值;:目标地址值类型;:text数据;:给定的TP层数据单元的八位位组代码数目;:PDU数据;:消息参考;:服务中心时间戳.

一个完整的TEXT格式SMS发送主要过程如下:

AT+CMGF=1 //设置为Text 模式

AT+CMGS=15249271078 //设置SMS发送目标号码

>Hello,This is a Test! //输入英文字符内容的SMS

而PDU格式SMS发送相比TEXT格式而言,要复杂得多,主要由短信中心号码处理、信息发送目标号码处理、发送信息编码、信息组合与信息发送等5个步骤的操作组成[7],现以一个实例来说明,假设发送的短信如下:

目标号码:+8615249271078

短信内容:工作愉快!

短信中心号码:+8613800290500

Step1 短信中心号码处理:用字符串 addr 表示

(1)将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F

即addr=“+8613800290500”即 addr=“8613800290500F”

(2)将奇数位和偶数位交换.即 addr=“683108200905F0”

(3)将短信息中心号码前面加上字符91,91是国际化的意思,即 addr=“91683108200905F0”

(4)算出addr长度,结果除2,格式化成2位的16进制字符串,16/2=8=>“08”

即addr=“0891683108200905F0”

Step2 手机号码处理:用字符串phone

(1)将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F

即phone=“8615249271078”=>phone=“8615249271078F”

(2)将手机号码奇数位和偶数位交换.=>phone=“685142291770F8”

Step3 短信息部分处理:用字符串msg表示

(1)转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为5DE54F5C61095FEBFF01

(2)将msg长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01=20/2=>“0A”,再加上msg,即msg=“0A5DE54F5C61095FEBFF01”

Step4 组合

(1)手机号码前加上字符串11000D91(1100:固定;0D:手机号码的长度,不算+号,十六进制表示;91:发送到手机为91,发送到小灵通为81),即phone=“11000D91”+phone,也就是说11000D91683106423346F9

(2)手机号码后加上000800 和刚才的短信息内容,即phone=phone+“000800”+msg

即11000D91685142291770F8+000800+0A5DE54F5C61095FEBFF01

=>phone=

11000D91685142291770F80008000A5DE54F5C61

095FEBFF01

(3)phone长度除以2,格式化成2位的十进制数.

即11000D91683106423346F90008000A5DE54F5

C61095FEBFF01=>50位/2=>25

Step5 输出如下指令实现PDU消息的发送:

AT+CMGF=0 <回车>

OK

AT+CMGS=25<回车>

> addr+phone

如此繁杂的处理过程在开发中无疑是令人头疼的,而这些步骤实际上都是与SMS传输格式具有密切关系,一个完整的SMS消息所包含的所有报头信息被以二进制字符串格式传送.二进制字符串格式发送方和接收方略有不同,发送方PDU 格式如表3所示,SMS接收方PDU 格式如表4所示.

表3 SMS-SUBMIT-PDU(发送方PDU格式)

表4 SMS-DELIVER-PDU(接收方PDU格式)

表中各组成部分含义如表5所示.

表5 SMS PDU格式组成元素含义

综上所述,作为无线数据传输的重要技术,SMS在处理英文消息时是简单易行的,但是中英文混编或者中文SMS收发时的PDU格式处理比较麻烦,因而成为相应系统开发的障碍,制约了该技术更广泛地应用.

3 中文SMS收发的信息方法

3.1 AT+CSMP指令

英文SMS收发的简单过程无疑是令人神往的,如果中文SMS收发也能像其一样简单,必然会给开发人员带来巨大福音.幸运的是,在GSM Modem AT指令集中还存在这一个经常被开发人员所忽略的指令——用于设置短消息文本参数(只适用于TEXT模式下)的指令“AT+CSMP”.

命令格式:AT+CSMP=,,,

响应:+CSMP:,,,

其中参数:一个字节,由6个数据位组成,如表6所示.

表6 组成结构

表中bit1、bit 0一般取值01,标识SMS方向是手机->消息中心;bit2取值0 表示后续没有短信息要发送,取值1表示后续还有短信息;bit4、bit3一般赋值1 0;bit 5取值0关闭传送回报,取值1打开传送回报.通常情况下系统默认为010001,即为0X11 十进制为17(此时没有状态报告回报).

参数 :短消息保留时间,在TEXT 方式下 缺省值为167(即24小时)其取值主要包括参数和参数两个参数,具体内容如下所示:

参数 显示使用的上层协议或者某种类型的进端处理装置,例如0x24表示语音电话,0x22表示3类传真,通常设置为0.

参数 确定信息的编码方式,0表示支持GSM 字符,8表示支持数据UCS2编码.

而数据UCS2编码恰恰是PDU格式SMS的编解码方式,也就是说,指令AT+CSMP和PDU数据收发一定存在某种不为人所知的关系.虽然这条指令是用来设置TEXT格式SMS相关参数.

3.2 TEXT格式下中文SMS收发方法

根据AT+CSMP指令的含义,对照表5中PDU格式的SMS组成可以发现,该指令所设置的参数在PDU串中都有对应的设置,很明显的是vp/scts、pid、dcs这三个参数在表5中可以看到一样的参数在其中,而且其意义也是一样的.而在PDU串中的其他一些部分的组成对使用者而言并不是一定要去了解或者应用的.

也就是说,即使在TEXT格式下,通过AT+CSMP指令设置必要的参数值,仍然可以发送、接收UCS2编码的SMS.而且此时不需要对SCA进行取值然后编码;不需要对接收方号码进行编码、解码等分析处理过程;不需要对发送方号码进行编码、解码等分析处理过程;不需要对短信内容进行编码、解码等分析处理过程;不需要在计算length的值中应包含哪些部分;不需要因为发送中文短信而去构建PDU格式信息的大量编码.太多的不需要使得发短信的流程大大简化,只需要简单的指令设置就可完成中文或者中英文混编SMS的收发.

TEXT格式下中文或者中英文SMS发送具体处理过程如下:

Step1 利用AT+CMGF指令设置GSM Modem的SMS收发格式为TEXT格式

Step2 利用AT+CSMP指令设置TEXT格式下文本参数,使其处于UCS2编码状态

Step3 将发送的中文或者中英文混编字符串信息转换为UCS2编码的16进制字符串

Step4 利用AT+CMGS指令发送Step3中得到16进制字符串

TEXT格式下中文或者中英文SMS接收具体处理过程如下:

Step1 利用AT+CMGF指令设置GSM Modem的SMS收发格式为TEXT格式

Step2 利用AT+CSMP指令设置TEXT格式下文本参数,使其处于UCS2编码状态

Step3 利用AT+CMGR指令接收SMS

Step4 将Step3中得到16进制字符串转换为字符串.

为了验证上述过程的可行性,并且清晰理解PDU和TEXT格式下中文SMS收发过程难易不同,现利用Wavecom公司GSM Modem进行测试.假设发送信息内容为“测试”,对应的UCS2码值为6D4B8BD5,目标号码15991680961,图2和图3分别是PDU模式和TEXT模式下发送中英文混合短信的发送程序和短信接收读取程序的运行截图.

图2 PDU模式下发送、接收中文短信

图3 TEXT模式下发送中文短信新方法

图2是PDU格式SMS发送与接收实际测试结果截图,由图2可见,传统PDU发送内容、接收内容都涉及到对于PDU格式诸多组成部分的编码和解码,过程繁琐.

图3是TEXT模式下,即本文提出的新方法实现中文SMS发送与接收实际测试结果截图,由图3可见,该方法只需要通过AT+CSMP指令设置必要的参数值,然后以TEXT模式下AT+CMGS的命令格式发送短信的UCS2编码值即可.至于接收数据,只需要将接收到的16进制字符串解码为UCS2编码对应的中文或英文字符即可.显而易见,开发人员的工作量已经大大减少.

4 结论

SMS在远程无线监控系统的设计与实现中扮演着重要的角色,尤其是在多点、小数据量以及较低采集速率应用背景下,借助SMS实现数据传输一般都是首选技术手段.

本文针对SMS在实际编程中存在的不足,介绍了一种可以大幅度降低编程复杂度的新型中文SMS收发方法,并给出了具体实现方法.该方法在笔者开发的某江河水文参数远程监控系统、油田井场远程监控系统等数据传输以及报警、处警等功能中均得到实际应用,并取得了良好的应用效果.

实践结果证明:本方法简单易行,能大幅度提高系统开发效率,并可以广泛应用于基于SMS的远程监控系统数据传输功能、SMS报警、处警等功能的开发.

[1] HE Xiangling,ZHANG Yue.The data coding scheme of the short message and the programme realization technology in VB 6.0[J].Computer Applications and Software, 2003, 20(6): 21-22.

[2] 徐福林. 基于GSM_SMS远程数据采集系统的设计[J].机床与液压,2010,38(18):69-72.

[3] 杨 帆. 基于GSM和Google Map的定位与地图标注关键技术研究[J].陕西科技大学学报,2011,29(2):122-127.

[4] 段 锦, 叶 霖, 黄显澍.基于GSM短消息的远程数据采集传输系统[J].长春理工大学学报,2005,28(4):51-53.

[5] 李寿林,张 鹰,李秀萍.利用GSM无线模块收发短消息[J]. 计算机与数字工程,2005,33(7): 79-81.

[6] ETSI. GSM07.05, GSM Technichcal Specification[S].1998.

[7] Scott B.Guthery,Mary J. Cronin. Mobile applications development short message business and SIM card development packets[M].Beijing:Post Telecom Press,2003:9.

猜你喜欢
字符串短信指令
基于文本挖掘的语词典研究
道歉短信
ARINC661显控指令快速验证方法
代发短信
杀毒软件中指令虚拟机的脆弱性分析
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法
一种新的基于对称性的字符串相似性处理算法
依据字符串匹配的中文分词模型研究
一种针对Java中字符串的内存管理方案