基于Java Applet的可变情报板监控软件
2014-12-18郑勇,王菌
郑 勇,王 菌
(西安电子科技大学电子工程学院,陕西西安 710071)
随着社会发展和人们生活水平的提高,汽车数量剧增。在巨大的车辆流通下,如何充分利用道路的潜能,减少交通堵塞和事故发生,降低延时造成的经济损失,是目前一个急待解决的难题[1]。研究表明,建立和实施智能交通系统(Intelligent Transport System,ITS)可有效地缓解道路拥堵状况,提升运输效率,保障交通安全畅通。LED可变情报板作为智能信息发布系统,是智能交通系统中的重要组成部分,可通过串口、Internet网络等信息通信方式,由监控计算机中心发送重要信息,例如气象信息、行车限速、道路诱导信息、前方交通状况、方位及路口信息、路段通行距离和通过所需时间、路段交通实时的动态图象以及警示提示语等,进而快速有效地对交通流进行诱导,提高交通网路的运输能力,为驾驶人员的安全和快速行车提供较好地服务。
1 系统结构
监控软件是可变情报板系统的重要部分之一。可变情报板系统的设计可分为两部分:嵌入式设备中的Web服务端应用程序设计和监控计算机上的监控软件,系统设计采用了B/S和C/S模式混合的方式,客户端浏览器通过HTTP协议访问请求Web服务器中的HTML页面(B/S模式),在实现具体监控应用时,则通过HTML页面中的Java Applet程序与应用程序通信(C/S模式),由此进行对可变情报板的远程检测与控制。具体的系统组成框架如图1所示。
图1 系统组成框架
2 软件设计与实现
2.1 通信协议
通信协议用于协调不同网络设备间的信息交换,其建立了设备之间相互识别有价值的信息机制。当今在通信界有较多可被采用的协议,如XNS、SNA、TCP/IP等,然而具体的协议内容要根据需求场景和应用功能的不同而制定。本文采用福建省公路管理局制定的的可变信息标志协议作为系统协议标准。
监控软件与可变情报板之间采用发送、反馈机制,即当监控软件发送一条信息帧给LED可变情报板时,可变情报板的通信系统与网络连接,并通过TCP/IP协议建立socket通道接收信息帧。然后按照信息帧中的控制信息执行后,发送一条执行结果的反馈帧给监控软件。
监控软件和可变情报板之间的通信均由监控软件发出的信息帧来控制,每帧由帧起始符、数据符及帧结束符等部分组成,且每部分由若干字节组成。帧是传送信息的基本单元,其中数据符包括设备标识码、指令代码域、数据域和校验码[2],具体格式如表1所示。
表1 信息帧类型表
其中反馈帧的指令代码值为发送帧的值加1,监控软件依据该值来判断反馈帧对应的发送帧及指令内容。当发送一帧时,数据符内的数据信息有和帧头与帧尾字符相同的可能,这样在程序解码时会因此导致数据不完整而产生错误,为此必须将信息帧内的字符进行转义。协议将ASCII字符ESC作为转义字符,发送信息帧时,先进行CRC校验计算,再将信息帧内字符及校验码按照转义规则进行转义。接受信息帧解码时,先判断帧头帧尾得到有效数据包,再将帧头帧尾之间的数据符按照转义规则进行转义。
2.2 GUI设计
按照通信协议内容,软件功能可分为7个模块,分别是工作状态检测、信息显示、设备控制、文件上传、文件下载和文件删除,读取文件列表。为满足系统需求,按照用户需求和功能模块设计编写的用户Applet界面主窗口如图2所示。
图2 Applet主界面
主界面采用Java的用户界面开发工具Swing进行设计,并使用JSplitPane分割面板将主界面分为上、左下、右下3部分功能区[3-5]。上部功能区主要显示目标情报板的序列号,其被显示在目标地址后的文本框中,即信息帧中的设备标识码,其后有一个JButton组件的连接按钮,当Applet与目标情报板连接断开时,可点击按钮重新发起连接请求。左下功能区有两个面板,分别是文件列表区和命令窗口区。文件列表区是在查询目标情报板上的文件列表后用来显示文件的汇总列表,命令窗口区使用JTree组件罗列分组显示所有的功能命令。右下功能区也分为两个面板,上面的是消息显示窗口,是在解读反馈帧后显示命令执行情况的位置,下面是命令面板区,主要显示对应命令的执行界面窗口。当用户点击选取命令窗口区中的某一条指令时,会触发对应处理事件的操作,命令面板会调用validate()方法重绘界面,显示相关命令的控制界面[6-8]。图3为文件上传命令的控制界面。
图3 文件上传界面
2.3 文件操作
可变情报板中的文件类型主要有播放列表文件,图片文件,字体文件和升级文件,文件名统一按8 bit格式,后3位为文件后缀,分别对应为 lst,bmp,lib,exe。协议规定当发送或接受上传和下载文件时,需要将文件拆分成规定的长度(1 024 bit),然后再组成若干条信息帧发送或接受。本软件采用一应一答的通信方式,除第一帧数据外,若有多余的一包数据帧,则只有在前一帧数据得到正确应答后,才在发送端进行下一帧数据的组织与发送,此过程持续到最后一帧得到正确应答为止,由此完成文件上传和下载的操作。若其中有一帧数据发送后未在规定时间内得到应答,则表明目标情报板未收到该帧数据,则结束文件上传动作,文件上传失败。若其中有一帧数据发送后得到了错误应答,结束文件上传动作,文件上传失败。失败的消息包含在该帧数据的应答帧中,并将其转换为字符型数据,通过消息显示窗口告知用户。文件上传的具体流程如图4所示。
Applet可通过JFileChooser组件来选择本地文件系统中不同盘符目录下的文件,然后通过点击图3中的选择文件按钮触发事件弹出文件选择框,在窗口中浏览并选择文件。当选择目标文件后,Applet触发对应事件记住所选择文件的文件名和路径,并获取目标文件的File对象,当用户点击上传文件按钮时,Applet将调用File对象将目标文件中的数据通过文件流写入缓存区中,再发送到可变情报板中[9-10]。
图4 文件上传流程图
3 相关软件
没有数字签名的Applet在“沙箱”中运行,没有访问本地文件系统的权限,所以不能访问本地文件目录,故无法获得本地文件的列表信息。为了能对本地文件进行操作,必须对Applet进行数字签名,签名后的Applet就拥有了数字证书,具有本地文件的访问权限。利用JDK提供的Keytool工具可直接实现对Applet小程序的数字签名和客户端认证。添加数字签名的方法如下:
(1)压缩class类文件为jar包。在此可在DOS窗口中执行jar命令或在Eclipse IDE下通过导出功能将相关的class文件打包成jar文件。
(2)使用Keytool工具生成密匙库。在DOS窗口中执行命令:keytool-genkey-keystore mytest.storealias mbq,执行后依据系统提示回答一些间题并输入密码。
(3)使用Keytool工具导出签名时用到的证书。在 DOS窗口中执行命令:keytool-export-keystore mytest.store-alias mbq-file mbq.cert,执行成功后会在当前目录下生成一个mbq.cert文件,该文件就是数字证书。
(4)使用jarsigner工具签名jar压缩文档。在当前DOS窗口中执行命令:jarsigner-keystore mytest.store mytest.jar mbq。
通过上述步骤并经过数字签名的Applet程序就拥有了操作本地资源的权限。但要Applet程序能被远程下载执行,还需将其嵌入到HTML页面中,利用HTML的<Applet>标记实现对Applet的装载调用。若是单个文件,只需将Applet标签中的code属性指向class文件即可,否则需将整个Applet程序打包成jar文件调用。
4 结束语
本文详细介绍了基于Java Applet的可变情报板监控软件的设计与实现,并对软件涉及的通信协议、界面设计及文件操作做了阐述。介绍了数字签名技术和HTML的编写,对软件的应用场景做出了一定的补充。经实践证明,基于Java Applet的可变情报板监控软件,具有操作简单、管理维护方便等优点,其为可变情报板系统的开发提供了一种较为实用的解决方案,拥有较好地应用市场和发展前景。
[1]王文逾.高速公路可变情报板的设计与功能[J].科技情报开发与经济,2005,15(16):225 -226.
[2]福建省公路管理局.可变信息标志通信协议V2.0[M].福州:福建省公路管理局,2009.
[3]林智扬,范明翔,陈锦辉.深入浅出 Java Swing程序设计[M].北京:中国铁道出版社,2005.
[4]龚珍,李利军.数字签名技术在Java Applet中的运用[J].网络安全技术与应用,2005(5):9-11.
[5]殷兆麟,张永平,姜淑娟.Java网络高级编程[M].北京:清华大学出版社,北京交通大学出版社,2005.
[6]朱振元,朱承,刘聆.Java语言及其网络应用[M].北京:人民邮电出版社,2006.
[7]李源江,李伯成.Java语言在处理汉字上存在的问题及解决方案[J].电子科技,1998(3):5-7.
[8]江小燕.Java网络编程的研究[J].电脑编程技巧与维护,2010(14):6,18.
[9]廉洁,赵群荣,乌兰.Java网络安全研究[J].内蒙古民族大学学报:自然科学版,2008,23(4):392 -394.
[10]杨霞,唐颖.Java网络数据库编程及其应用[J].数字技术与应用,2012(9):49,52.