基于SMS平台的高校成绩查询系统的设计与实现

2011-02-26 09:16杜海舟
上海电力大学学报 2011年3期
关键词:字符命令串口

杜海舟,张 超,刘 昊

(上海电力学院计算机与信息工程学院,上海 200090)

随着现代化通讯方式的迅速发展,手机功能不断增加,手机用户越来越多.截至2009年7月末,中国移动电话用户超过7亿户.而在2008年前,这个数字还只不过是1亿.其中高校学生使用手机已经越来越频繁,学生使用手机,除了增加一条获取信息的渠道外,更为学校与学生间的联系拓展了一条渠道.

手机相较于其他常见的通讯平台,有着即时、可靠、安全等优势,因此本系统选用了短信平台进行研发,目的是让学生通过便捷的操作获取更多的信息.

本系统构建了一套短信处理平台,实现了高校成绩查询这一主要功能,即学生通过发送指定格式的短信到短信平台,就可以获取相关的成绩信息,同时也可实现基于网页的平台管理、查询和简单的分析功能.

1 相关技术

1.1 基于USB的串口通信

本平台通过使用RXTX(串口和并口通信的开源Java类库)和USB接口的GSM调制解调器得以实现.RXTX 提供了 Windows,Linux,Mac os X,Solaris操作平台下的兼容javax.comm串口通讯包API,通过使用该通讯包,可以实现向串口写入和读出字符串的功能[1].

1.2 AT命令简介

AT即Attention,AT指令集是通过终端设备(Terminal Equipment,TE)或数据终端设备(Data TerminalEquipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送.通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM网络业务进行交互.表1中列出了常用的一些AT命令和使用方法[2].

表1 常用AT命令

1.3 短信传送模式

短信传送一般采用 Text和协议数据单元(Protocol Data Unit,PDU)两种模式.

基于AT命令的Text模式是利用文本信息控制移动台短信的方式,主要利用AT命令集完成对移动台的各种操作,包括与短信相关的各种操作.但Text模式难以支持非ASCII码字符,因此在开发中较少采用.PDU模式也采用AT命令集来控制移动台的短信功能.它在AT命令中直接采用协议数据单元PDU,相当于将Text模式中字符串格式的命令转换成十六进制命令格式,它可以支持不同的编码格式,可以发送中文字符,而且便于编程,因此在开发中常采用此模式.

表2所列元素是用于发送方(SMS-SUBMIT)的PDU和接收方(SMS-DELIVER)的PDU中各元素的相关内容.在发送方和接收方的PDU中,这些元素按照规定的顺序排列,在发送和接收时,要根据其格式对PDU进行编码或解码[3].

表2 PDU所含元素

2 成绩查询系统设计

2.1 总体设计

根据日常短信管理的需要,成绩查询系统分为系统管理和对外功能两个主要子系统.其中,系统管理由查询平台的系统管理员使用,可对整个成绩查询系统进行监控、查询、修改,以及进行相关设置;个人应用子系统供广大学生使用,每个学生都可以通过发送短信的方式使用系统提供的各项服务.本系统的主要功能模块如图1所示.

(1)登录、注册、添加管理员模块 由超级管理员添加其他的管理员,并赋予不同的权限,如查询设置、修改设置操作能否进行等.

(2)查询系统信息发送情况模块 查询系统信息的接收与发送情况.通过选择日期,返回某天的成绩查询平台使用情况,包括接收到的信息总数、发送的信息总数、成功的数目和失败的数目等.该模式也支持按月、季度、年度的统计查询功能.

(3)参数设置模块 用以设置整个成绩查询平台的开关,以及硬件的一些参数(如端口号、短信中心号码等).

(4)查询成绩模块 学生发送指定格式的短信(即cxcj+学号+密码)至成绩查询平台的手机号码,系统则返回本学期所有科目的考试成绩及相关信息.

(5)已修学分查询模块 学生发送指定格式的短信(即cxxf+学号+密码)至成绩查询平台的手机号码,系统则返回本学期已修学分相关信息.

(6)修改密码模块 学生发送指定格式的短信(即xgmm+学号+旧密码+新密码)至成绩查询平台的手机号码,系统会提示密码是否修改成功等信息.

图1 成绩查询系统主要功能模块

2.2 具体处理流程

针对学生个人用户进行成绩查询,系统要求用户按照指定的格式发送短信到平台的手机号码,成绩查询平台在接收到短信后,首先对其格式进行判断.若格式错误,返回错误提示信息;若格式无误,再根据短信中提供的学号、密码等信息对学生的基本信息进行验证.若学生学号或者密码不正确,则返回错误信息;若学生信息验证无误,则成绩查询系统将到相应的数据库中查询学生成绩,并通过短信将查询结果返回到发送短信的学生手机上.其具体流程如图2所示.

学生已修学分查询和修改密码模块也和上面的流程基本相似.学生可以按照指定的短信格式,通过手机向成绩查询系统中心发送短信,然后成绩查询平台将会根据具体的代码格式来提取信息,并分析具体业务,然后执行相应的操作.若中间某个部分出错,也会相应地通过短信返回错误信息给发送短信的用户.若操作成功,则会返回正确信息或者查询结果.

图2 短信平台成绩查询功能流程

3 成绩查询系统的具体实现

由于Java语言的开放性及良好的网络特性,本成绩查询平台前台开发全部采用Java语言,后台数据库采用Oraclelog数据库.

3.1 串口通讯实现

根据串口和并口通信的开源Java类库,首先声明一个SerialPort类型的对象serialPort,该对象类似于把端口进行实例化,并打开端口,为该端口注册一个监听者(Listener),主要用于对端口返回的字符串进行响应.然后设置端口的参数,包括端口的波特率、数据位、停止位、奇偶校验等,同时还要定义一个InputStream类型的对象inputStream(用于获取端口的输入流对象),以及一个OutputStream类型的对象outputStream(用于向端口写入字符的输出流对象).通过这两个对象可以得到真正的字符流.

具体代码如下:

由此可基本实现成绩查询平台系统的USB串口通讯.

3.2 使用AT命令操作设备

AT命令是通过定义的OutputStream对象和inputStream对象来实现其功能的.它首先分析返回字符流中包含的关键字,再根据对应命令的格式对字符流进行处理.

首先,定义一个StringBuffer类型的对象sb,再把字符流保存至sb中.由于字符流中会含有回车符,因此在读取时要用到一个循环.字符流读取完后,就要将其首部的7个字符取出,这7个字符的格式为“AT+命令代码”,提取出命令代码,才可以判断出该命令的类型,并进行相应的操作.当收到新的短信时,设备不会马上显示出其中的内容,而是给出其在SIM卡中的位置,读取信息时,直接使用命令“AT+CMGR=index”,设备会返回一个包含“CMGR”的字符流,用同样的方法取出字符流的内容,并截取出其中PDU的内容作进一步处理.

然后,按照PDU的格式,将其中有用的信息取出.在这里,主要包括发送方的号码(OA)、编码方式(DCS)和短信内容(UD).先取出OA的长度,在PDU中这一长度是不固定的,因此后面的所有位置都要根据这一长度来确定.得到这一长度后,便可以确定编码方式的位置.解码后便可得到短信的有用信息.

最后把内容存到其他介质(如本地的数据库等)上,并把该条短信息从SIM卡上删除,以避免由于SIM卡中短信存满而无法接收新的信息.

基于上面的操作就可以在服务器端获得短信中所有有用的信息.

3.3 使用7-bit编码方式进行解码

成绩查询系统提取短信内容,首先要求对7-bit编码的算法进行解码,根据其解码原理,设计相应方法decode7bit,其中code为经过7-bit方式编码的十六进制字符串.

具体实现过程如下:首先声明两个字符串,其中content用于保存最终得出的短信内容,code_bytes用于保存解码中间环节产生的二进制码串.然后进行如下循环操作,具体代码如下:

在上述循环中,将code字符串中十六进制码按两位一组进行处理,每一组分为高位和低位,将它们转换成二进制后,分别存入字符串h和l中.在转换中会省略第一个非零有效位前的零,因此需对其进行补足,以保证最后这两位十六进制数被转换为等值的两个4位的二进制数保存在字符串ch中.需要指出的是,在生成code_bytes时,ch是被逆序插入的.声明一个con_bytes的String型数组保存移位后的二进制数,其中每个元素长度应均为7.并定义3个标志符.最后再把con_bytes中各个元素转换成英文字母、标点或数字.

至此整个解码过程完成.

3.4 成绩查询平台测试

向平台号码发送“cjcx+学号”,即可得到平台的回复信息,同时短信平台会记录查询学生所有信息,发送方手机会收到一条短信,返回该同学本学期的所有考试成绩,如图3所示.成绩查询系统记录查询信息如图4所示.在成绩查询系统的服务器端,也会把该学生的几次查询信息全部记录下来,以方便管理员查询.

图3 手机返回查询结果

图4 平台记录查询信息

4 结语

目前本系统已在上海电力学院得到初步应用,但本系统的功能还较为简单,许多管理功能有待继续开发.例如发送图书逾期通知,或将讲座、招聘会等与学生相关的实用信息主动发送给需要的学生等.

短信平台作为一种方便快捷的通讯手段,在高校中的应用前景非常广阔.相信随着技术的不断发展,短信平台还可以开发出更多的功能,为广大师生提供更贴心的服务.

[1]陆垂伟,毛雪涛,戴翔宇,等.远程串行数据通信技术的实现方法及其应用[J].计算机应用研究,2002(3):23-25.

[2]唐明董,张俊波,刘建勋.基于GSM模块的短信平台服务器设计与实现[J].微计算机应用,2007(2):174-177.

[3]范磬亚,徐汀荣,成军.基于GSM/SMS的校园短信通研究[J].计算机与现代化,2006(3):100-102.

[4]邢艳芳,段洪秀,汤铭.校园短信平台设计[J].计算机时代,2009(10):32-33.

[5]吕淑萍,王伟.基于GSM短信的信息管理系统开发[D].哈尔滨:哈尔滨工程大学,2006.

猜你喜欢
字符命令串口
只听主人的命令
浅谈AB PLC串口跟RFID传感器的通讯应用
字符代表几
一种USB接口字符液晶控制器设计
HBM电子称与西门子S7-200系列PLC自由口通讯
消失的殖民村庄和神秘字符
移防命令下达后
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
这是人民的命令