1 引言
在任何系统中,准确的获得实时信息并且安全可靠的传输是至关重要的,而信息发送传输的手段却是多种多样的。在无人值班或少人值班控制系统中,如防洪排涝的值班人员准确的获得水位和雨量信息,物业管理人员获得用户的报警信息等都至关重要,实时信息的获取是相关人员获得系统当前状态的唯一途径。那么怎么样将采集的到的实时信息第一时间发送到用户的手中呢?手机短信息技术就是一种不错的选择手段。
当要传输实时信息时,上位机自动拨号,拨动相应的手机,或发送实时短信息,以提醒有关人员注意。本系统中短信息启动程序是使用c++builder用软件编程嵌入at指令实现的,下面主要介绍短信息的发送。
2 手机短信息(sms)
手机短信息是目前随着手机用户的普及而发展起来的一项新技术,它的特点是价格低廉,操作方便,但是其一个明显的缺点就是不能判断接受方是否接收到短信息、短消息是否有迟延。即便如此,我们还是选择了短消息这个功能,是因为当前还很少出现短消息丢失或者短消息迟延很长时间的现象,至少在发送端和接收端为同一网络时(如同为中国联通或者同为中国移动)这种现象是一般不会发生的,就是说短信息技术作为一种辅助的信息传输手段还是非常合适的。
图1 手机短信发送示意图
图1表示出手机短信发送示意图。pc通过手机发送短消息分为三种模式:bolck模式、text模式和pdu模式。使用block模式需要手机生产厂家提供驱动支持,现在还没有发现哪个厂家公布支持这种短信发送模式,下面只介绍pdu模式。
(1) 设备条件
必须具备以下条件:手机,手机驱动程序,手机连接pc机的线缆。本文以nokia手机为例进行介绍。
(2) 安装
·第一步:将手机和pc机通过线缆连接好。注意连接线缆时,手机和pc机必须至少有一个设备处于关机状态;拆除时,也要注意;
·第二步:安装手机驱动程序。在使用nokia的情况下,nokia提供datasuite 2.0 windows98、windows2000、windowsnt驱动程序。启动setup,按照安装提示进行安装。在安装过程中,检测手机设备时,手机显示“附件已接通”,否则需要卸载,然后重新装载;
·第三步:通过控制面板查看手机安装的com端口号,以备调试时使用。
3 pdu模式的短信息通信
3.1 gsm at指令简介
90年代初,at命令仅被用于modem操作。由于没有控制移动电话文本消息的先例,因此开发了一种叫sms block mode的协议,通过终端设备(te)或电脑来完全控制sms。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和hp共同为gsm研制了一整套at命令,其中包含对sms的控制。at命令在此基础上演化并被加入gsm 07.05标准,以及之后的gsm 07.07标准。到现在,pdu已取代block mode,后者逐渐淡出,我们采用的就是基于at命令的pdu mode,它是发送或接收手机sms消息的一种方法,消息正文经过十六进制编码后进行传送。
3.2 短信息的发送过程
结合本系统,我们只介绍pdu模式的发送方式,这正是开发中文短信息的关键,因为只有通过这种方式才可以发送中文短信。
(1) 正确连接手机与电脑,安装驱动程序(具体过程省略)
(2) 打开“超级终端”,输入“at”如果返回“ok”,则说明手机与电脑连接正常,否则返回第一步。
(3) 发送协议
发送协议如下:
例如短信息中心号码为 深圳 +8613800270500 ,对方手机号码为+8613612345678,要发送的信息为“中”。
3.3发送信息为“中”的算法步骤
(1) 地址部分,用字符串addr表示
a) 短信中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加f
即addr=“+8613800270500”=>addr=“8613800270500f”
b) 将奇数位和偶数位交换。
=> addr =“683108200705f0”
c) 将短信息中心号码前面加上字符91(91是国际化的意思),
=> addr=“91683108200705f0”
d) 算出addr长度,结果除2,格式化成2位的16进制字符串,16/2=8=>“08”,=>addr= “0891683108200705f0”
(2) 手机号码部分,用字符串phone
a) 将手机号码去掉“+”号,看看长度是否为偶数,如果不是,最后添加f
即 phone =“+8613612345678”=> phone = “8613612345678f”
b) 将手机号码奇数位和偶数位交换。
=> phone =“683116325476f8”
(3) 短信息部分,用字符串msg表示
a)转字符串转换为unicode代码,例如“中”的unicode代码为4e2d,
b)将msg长度除2,保留两位16进制数,即4e2d = 4/2 =>“02”,再加上msg=>msg=“024e2d”
(4) 组合
a) 手机号码前加上字符串11000d91,这是一些固定pdu代码,可以参考相关pdu格式说明
即 phone =“11000d91”+ phone
=> 11000d91683116325476f8
b) 手机号码后加上000800和刚才的短信息内容
即 phone=phone +“000800”+ msg
即11000d91683116325476f8 + 000800 + 024e2d
=>phone= 11000d91683116325476f8000800024e2d
c) phone长度除以2,格式化成2位的十进制数
即 11000d91683116325476f8000800024e2d => 36位/2 =>18
(5) 所以要发送的内容为
at+cmgs=18<回车,ascii为13>, addr+phone+<︿z>+换行回车<13和10>
即at+cmgs=18 <回车>
>0891683108200705f011000d91683116325476f8000800024e2d︿z换行回车
在无人值班控制系统中,此程序安装在控制机上,已将所有可能发生的信息全部写到此短信息应程序中,针对不同的信息发送不同的内容,当整个系统有信息需要发送时,此短信息程序根据触发信息的的不同发送不同的短信息,此时运行人员根据短信息的类型判断报警类型。严重报警时保护会动作。在有短信息发送时此程序才会被启动,发送完立即退出。
4 结束语
基于gsm的短信息发送技术已经成功应用于无人、少人值班系的控制系统中,证明此种基于gsm的短信息发送技术技术是可靠的,更是可行的。
参考文献
[3] [美]kent reisdorph等. c++builder 4 技术内幕[m].北京:人民邮电出版社,1998.
作者简介
胡海涛(1973-) 2003年武汉大学硕士毕业,现主要从事工业控制和电气自动化方面的管理及研究工作。