短信息网关在校园管理系统中的应用

2013-04-29 00:44张红刚陶卫东
江苏教育研究 2013年9期

张红刚 陶卫东

摘要:研究设计移动通信网关,通过信息转换和短信群发将校园信息管理系统拓展到移动通信平台,以提供更实时便捷的校园信息服务,是校园信息化管理的需要。移动通信网关开发的关键技术,包括基于AT指令的短信猫的开发、可靠的批量发送和流控技术等。要根据项目需求设计具有短信群发的网关软件,设计时还应考虑软硬件部署和实现方法等。

关键词:校园信息管理系统;移动通信平台;网关开发;AT指令

中图分类号:G712 文献标志码:A 文章编号:1673-9094-C-(2013)03-0053-04

根据实际条件和情况在学校范围内采用短信网关方式实现移动通信信息的推送,利用手机终端普遍支持简单的数据通信功能,将现有的学校信息管理系统的功能扩展到手机终端,能使管理系统从被动查询到主动数据推送。将教学管理中的信息用定制化的方式实时发送给每位家长,让家长随时了解学生的动态,也能使教师在信息传递过程中解除精力、时间和空间的限制,为现有的教学、学生管理工作带来更多便利。

一、相关技术和分析

(一)目前存在的群发短信的几种方式

短信群发方式主要有手机自带群发短信、飞信、移动增值业务SP群发和使用第三方API实现短信群发等。但这些方式存在着无法直接被管理系统使用或使用成本较高的缺陷。

采用工业手机模块GSM Modem(一种使用移动通讯系统的调制解调器,俗称“短信猫”),在业务层把传统的计算机网络扩展到手机等移动终端,是开发简单快速、节约人力成本的最佳短信应用开发模式。其关键技术是设计实现一个短信网关作为短信发送的中间件,以实现既能直接发送短信,又能为其他管理系统所调用发送短信。

(二)AT指令技术

AT指令就是带有串行口的计算机操作GSM Modem或手机的指令集。AT指令都以AT+开头,以回车结尾,各命令执行成功与否都有相应的返回。

通信网关软件中用到的与发送和接收短信相关的指令及其功能见表1。

一般而言,在AT指令后加上“=”及命令参数即可。有些命令例如AT+CMGR命令没有参数,直接就可以执行。

1.AT指令编码技术研究

对SMS的控制共有三种实现途径:基于AT命令的Text Mode、基于AT命令的PDU Mode 、Block Mode。Text Mode比较简单,多款诺基亚手机均支持该模式,但这种模式只能发送ASCII 码,不能发送中文的Unicode 码。西门子手机大多只支持PDU模式,PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。使用Block Mode 需要手机生产厂家提供驱动支持。目前,PDU已取代Block Mode,因此本文主要探讨PDU模式的发送。

2.短信息编码和解码

发送短信息的PDU编码主要包含这些内容:短信息中心(SMSC)号码信息、短信息首字节、短信息索引号、目标号码信息、协议标示符、数据编码方式、效验周期、短信息长度和内容。短信息内容是以十六进制7位字节或Unicode编码,其他信息是以十六进制8位字节编码。

(1)英文编码。

缺省的GSM字符集为7位编码,可以简单地理解为ASCII码(ASCII值小于80Hex,因此,Bit8被忽略),依次将下一个7位编码的后几位逐次移至前面,形成新的8位编码。

例如:设置短信息内容为“Hello World!”,参见表2指示。

(2)英文解码。

就是将7位字符编码转换为8位字符编码。

(3)中文编码和解码。

中文短信息的编码和解码,只需将GB2312的中文编码和代码页为CP936的Unicode编码进行相互转换。

(三)可靠的批量发送和流控技术研究

由于移动通信网络存在发送速率和稳定性等不确定性,在设计实现过程中,必须保证大数据量条件下的通信可靠性。具体方法有以下几种。

1.基于SMSC Pool容灾备份

单套短信中心内部采用了1+1或N+1的备份方式,来确保当一个核心单元宕机后有备份的单元来接替工作。这种短信网元之间是相互孤立的,资源无法得到很好共享,投资大利用率低,容易对备份单元产生较大的冲击。采用SMSC Pool技术,多个单套短信网元被逻辑上整合在一起,组成一个域池。通过短信中心网元增加流量控制中心模块,分级组网实现对短信业务量的统一分流控制。对短信网元各业务处理单元的性能、容量进行实时的监控,可实现对业务智能地、自动地分流,从而达到容灾的目的。

2.队列缓存技术

通过串口队列技术[1]避免拥塞的发生或者在拥塞发生时做出反应,它主要是考虑系统内的服务情况,目的是使负载不超过系统服务的能力。队列缓存技术和流控措施实现批量信息的缓存发送。

3.异步延时处理

系统逐条对短信进行编码[2]、发送信息。由于系统编码的速度较快,短信元件尚未处理完成,编码就完成了,会造成队列溢出,导致错误。异步延时处理实现批量发送短信功能,通过循环逐条对短信进行编码、发送信息、延时、反馈信息处理完成信息的发送。

4.发送可靠性管理

要实现发送可靠性管理,对于发送过程中出现的因移动网络故障、计费等问题导致发送失败及成功的记录进行记录,并向业务系统提供报告,以便对未成功记录进行处理,保证系统消息发送的可靠性。

二、短信网关的设计

(一)短信网关需求分析

该短信网关软件主要分为“信息发送服务”“短信发送服务监控”“系统配置模块”“基础功能模块”等模块(见图1)。

信息发送服务,实现短信数据提取、发送、监视回复等功能。短信发送服务监控,提供了启动、暂停、停止短信发送服务的功能。系统配置模块,提供短信网关的设置管理功能,如通信组件的基本信息设置、短信服务器的基本设置、数据库系统的设置等。基础功能模块,提供了发送服务和发送管理的基本功能。

(二)短信网关设计

本文设计的短信网关是基于GSM Modem的短信框架(见图2),在框架上实现短信的收发。该系统构架分为三层:短信底层接口通信组件层、短信收发平台层、短信应用层。

1.短信底层接口通信组件层

短信底层接口通信组件层中,通过硬件接口实现向GSM Modem发送AT指令,控制GSM Modem发送和接收消息。

2.短信收发平台层

短信收发平台层是设计的一个独立的短信息收发及处理的服务模块,它单独于其他任何的业务系统,仅仅提供了一个成熟的短信收发服务,并封装成统一的短信收发接口。

3.短信应用层

短信应用层根据短信收发平台层定制的接口规范,就可以把本身的业务与短信连接起来,实现在各自的管理系统(软件)中快速集成短消息收发的服务。

(三)短信网关硬件部署

短信网关的部署(见图3)是将短信猫或者猫池连接到服务器上,将服务器连接到防火墙的DMZ区,在服务器上安装好短信网关软件或对外发布Web平台(调用了短信发送接口的Web服务)后,服务器直接可以通过服务端或客户端软件进行短消息的发送,内网的用户可以通过客户端软件进行短消息的发送。其他的管理平台可通过调用短信接口实现短消息的发送;外网用户可以通过VPN的方式接入到内网中进行短信的发送或通过浏览器终端实现短消息的发送。

(四)串口通信的实现

短信猫相关应用开发的核心是实现串口通信,在此研究短信猫在C#语言下的实现是利用微软公司提供的通用串口通信MSCOMM32控件。在Visual Studio 2010编译器开发环境下,把微软通用串口通信控件MSCOMM32作为组件装入编译器,实现串口通信的实际过程如下。

1.打开串口和初始化串口

在程序初始化时,先对串口初始化,同时由于串口短信猫是使用RTS/CTS握手信号的硬件设备,只有该设备的RTS信号置为高才能接收数据,所以需将MSCOMM32通信控件DTREnable属性设为TRUE,其所有具体实现过程如下。

private void InitComPort()

{

try{

com.CommPort=1;//设置通信端口是COM1

if(com.PortOpen)com.PortOpen=false;//如果串口开启关闭它

com.RThreshold=1;//每接收一个字符则激发OnComm()事件

com.Settings=“9600,n,8,1″;//设置串口通信的参数

com.DTREnable=true;

com.Handshaking=MSCommLib.Handshake

Constants.comNone;

com.InputMode=MSCommLib.InputMode

Constants.comInputModeBinary;

com.INputLen=0;//清除接收缓冲区

com.NullDiscard=false;

com.OnComm+=new System.EventHandler(this.OnComm); //注册一个OnComm事件

com.PortOpen=true;//打开串口

this.msg.Text=”设备打开成功!”;}

catch{

this.msg.Text=”设备打开失败!”;}

}

2.读串口

当短信相关应用接收短信时,通过串口把读短消息AT指令(AT+CMGR)发送给短信猫,短信猫接到指令后调用内部短信接收模块接收短信,同时把短信内容回传到串口缓冲区,短信相关应用从串口缓冲区读取短信息,其读串口过程如下。

private void com_OnComm(object sender,System. EventArgs e)

{

com.InputMode=MSCommLib.InputMode

Constants.comInputModeBinary;

com.InputLen=0;

byte[]indata=(byte[])com.Input; //接收数据

}

3.写串口

当短信相关应用发送短信时,把发送短消息AT指令(AT+CMGS)和发送消息通过串口发送给短信猫,其写串口过程如下。

private void SendDate()

{

try{

byte[]byOut=new byte[2];

byOut[0]=0x01;

byOut[1]=0x02;

com.Output=byOut;//向缓冲区写入数据

}

Catch(Exception ex)

{

messageBox.show(ex.Message,”Error”,MessageBoxButtons.Ok,MessageBoxIcon.Error);

}

}

4.关闭串口

当短信相关应用完成所有的任务时,把串口关闭,释放串口资源。

private void close()

{

if (com.PorOpen==true)

com.PortOpen=false;//关闭串口

}

三、总结展望

使用GSM-Modem工业手机模块实现基于GSM网络的信息收发,短信息网关提供了灵活、可靠的批量信息生成、收发、解析转发和web信息管理等功能。系统可以独立运行,也可以作为各种信息管理系统的接口集成使用,随着管理信息化技术的发展,系统将有重要的实际应用价值。系统不仅能扩展本学校信息管理系统,服务各项管理工作,还能以标准组件的形式应用于各种相关的信息管理系统。

参考文献:

[1]叶春宝.应用GSM短消息服务构建学院短信平台[J].福建农林大学学报,2007(3).

[2]申静波,李井辉.基于GSM Modem的短信发布平台设计.长江大学学报(自然科学版),2008(5).

(责任编辑:沈彬)