浅析GPRS通用通信系统的服务器端软件开发
O.引育
GPRS通用通信系统由现场监控终端(也称数据终端单元。DTU),GPRS网络,数据库和服务器端软件(也称数据服务中心.DSQ四部分组成。服务器端软件接收DTU通过GPRS网络上传的数据.处理后存储到数据库;服务器端软件也可以反向传送各种指令到DTU。控制DTU的运行。为了用户方便使用数据监控等功能,服务器端软件采用Web页面方式。开发基于Java,使用了Struts,Hibemate等多项技术。
1.技术关量
Struts和Hibernate是WEB开发中提高开发效率。使程序结构清晰化的工具。本设计积极的运用了这两项技术。
1.Sturts技术Struts框架实现MVC(Model—View—Comroller)设计模式。通过这个设计模式。实现功能模块,视图和控制的分离。将数据的监听和解析以及其他功能封装在不同的功能模块中。而将展现给用户的结果作为视图。这通常是一个JSP页面或纯HTML页面,视图也常作为接受用户输入或请求的用户接口。而控制则管理对功能模块的调用,以及选择正确合适的视图来响应用户的请求。
1.2Hibemate技术Hibernate将Java对象映射到关系数据库表中,对数据库表的操作通过对Java对象的操作完成,这样就简化了数据持久化相关的编程任务。
2.功能模块设计
服务器端软件主要任务是完成对通信数据的接收。处理和存储。功能设置都是以数据为中心。本设计的主要功能模块如图1所示。
在服务启停模块启动服务后,开始接收DTU数据。由于数据包的解析功能相对独立。实现也较为复杂,因此将解析过程作为一个线程。接收一个数据包.就启动一个独立的解析线程.对数据包进行解析。解析完后将提取出的数据存人设计好的数据库中。随后发出一个应答数据包,线程结束。解析、入库和应答三个步骤在同一线程中完成。服务启停模块完成了本设计的核心功能。
服务设置模块主要完成服务启动与运行中的参数设置。
数据监控模块是重要的一个功能模块,它向用户直观的展示任一DTU发出的数据变化图。数据随时问的变化显示在专门定制的图表上,而且实时刷新,做到实时性和准确性。
在远程控制模块,用户可以查看每一个DTU所连接的数据采集终端的状态,通过向DTU发送指令数据包,远程控制与DTU相连的仪表。
与多数管理系统类似。为了做到对使用用户进行管理.设置了系统管理模块,可以对用户的权限、登录、安全进行管理。以做到系统的完备和安全。
3.数据处理流程
本数据管理软件的核心是数据,所有的功能都是围绕数据进行。数据的处理主要有解析,存储和显示几个过程.另外,本系统也向远程数据终端单元发送数据。
3.1数据的接收 服务启动后,服务器启动监听线程在服务端口监听线程,直到停止服务,监听线程才终止。监听线程中.建立了在服务端口上的数据报soeket:
pfivate DatagramSoeket socket;
socket=new DatagramSoeket(INPORT); soeke调用阻塞式函数receive(DatagramPacket dp)监听端口,接收到数据返回后即可在dp中获取数据开始处理,而监听线程检查服务停止标志started,若服务巳停止则终止线程。否则重新开始监听,如此循环。
3.2数据的解析数据的解析是数据处理的主要过程.解析过程就是实现DSC与DTU应用层通信协议的过程。解析线程在监听线程中启动,服务器接收到数据后启动数据解析线程处理数据报。而监听线程继续监听,解析线程完成解析后结束自身。解析线程的启动代码如下:
ProcessReceiveData pmcessReceiveData;new
ProcessReceiveData(buf,
lnetAddress.getByName(dp.getAddmss0.
getHostAddress0),
dp.getPort0,
dp.getLength0,
socket,BUF_MAX_ LEN)
processReceiveData.start0;
其中bur为存放完摊数据报的缓冲区,第二个参数为数据报的发送源IP地址,即发送此数据报的DTU的IP地址。第三个参数为发送源端口。第四个参数为数据报长度。第五个参数为监听套接字,第六个参数为缓冲区最大长度(单位为字节)。这些参数在监听线程中获得,都在数据处理线程中使用。
协议中定义的数据报格式单位都以字节为单位,为便于解析,在ProcessReceiveData中定义了私有方法:
private String byte.I’oslring(byte b)
private int hexToDec(char[1 hexData,int len)
byteToString方法将字节转化为十六进制字符串。而hexToDec将十六进制字符串转换为十进制数值。比如数据报中有两个字节表示数据报长度,可以先将这两个直接转化为十六进制字符串,再将十六进制字符串转化为十进制数值,这样就得到了数据报长度的数值。
3.3数据的存储根据解析的结果。一般要更新数据库表或向数
据库表中添加记录。
3.4数据的发送解析完数据报后按照协议一般要对发送数据报的DTU发送应答数据报。首先接格式构造数据报,然后通过soeket向DTU的IP地址发送。
4.结论
软件实现了数据的接收、解析、存储和发送等管理功能.并且能够对用户信息进行管理,基本满足了数据管理系统的功能需求。比较合理的使用了Struts框架技术,使得处理逻辑较为清晰,前台页面与后台耦合度较低,结构清晰。功能组件JavaBean设置较为合理,能够完成独立的功能,JavaBean组件之间耦合度低。后台线程能正确的启动与停止。能完成设计的功能,线程之间没有出现互相影响的情况。该设计在实时性能上还有提升的空间。
参考文献
[1]宋波,马黎,孙连科.用JAVA实现一个多线程唧服务器[J].沈阳电力高等专科学校学报.2001.1.
[2]冯冬芹,金建祥,褚健.Ethemet与工业控制网络[J].仪器仪表学报,2003(1):600-603.
[3]何小荣,钱泉.GPRS在工业监控中的应用m.铁道工程学报.2004(19):42-45.
[4]Douglas E.Comer.用TCP/IP进行州际互连[M].北京:电子工业出版社.1998.
[5]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社.2005.
[6]王海峰,奠伟锋,李位星.Oracle9i初学者指南[M].北京:机械工业出版社.2003.