摘要:对信息发布系统现状进行研究,结合嵌入式互联网技术,提出一种嵌入式网络信息发布系统的解决方案,并介绍了信息发布管理平台和嵌入式终端的软件设计。信息发布管理平台基于Web开发,通过管理平台可以对每个终端进行实时监控。数据存储服务器是相对独立的,主要用于存储发布的数据信息,并最终根据终端的要求将信息推送到终端上。执行终端采用嵌入式芯片,为了节约硬件系统资源的开销,在嵌入式芯片上移植μC/OS-Ⅱ操作系统,并且定制HTTP超文本传输协议。
关键词:信息发布;嵌入式;互联网技术;Web
0 引言
随着信息时代、数字时代的到来,尤其是互联网技术的飞速发展,网络设备与系统体现出高效、灵活、可移植性强的特点。嵌入式技术也有着飞速的发展,从硬件方面来看,嵌入式微处理器的性能提升到了一个新的高度。从软件方面来看,它已经拥有了高效的操作系统,方便开发人员进行软件个性化设计。嵌入式系统在的实践过程中,具有体积小,携带方便,便于安装调试和价格低廉等优点,从而使嵌入式系统满足了多数的消费电子、通信、工业控制等领域的要求。
为了实现面向公众的信息传递,人们采用了告机、单宣传画、工控广机广告机等方式。但这些信息发布方式,存在着信息量局限,成本高,更换内容困难等缺点。基于对市场的理解,并结合先进的嵌入式互联网视频技术,本文介绍了一种嵌入式网络信息发布系统,阐述了服务器、数据库和嵌入式终端解决方案,以及服务器与数据库的交互、服务器与终端的通信协议等关键单元技术,并详细介绍终端的软件设计思想。
1 系统组成
该系统分为网络信息发布管理平台和远程嵌入式终端两部分。系统的软硬件部署,主要分为三个部分:嵌入式终端,发布系统服务器和内容服务器。其中,在实际应用中,发布系统服务器和内容服务器可以合并为同一台服务器,如图1所示。
1.1 硬件方面
1.1.1 管理平台硬件环境
一台Windows操作系统的计算机,配置Java开发运行环境,并且装有Apache Tomcat 6.0服务器和MySQL5.1数据库等软件。
1.1.2 嵌入式硬件环境
嵌入式芯片需满足多媒体开发和网络开发的基本要求。
(1)支持视频格式、音频格式、图片格式的编码和解码;
(2)支持视频图像和音频输出接口;
(3)支持USB接口;
(4)支持HTTP协议;
(5)支持10 M/100 M网卡。
1.2 软件方面
在这种系统软件设计中,信息发布管理平台基于Web开发,采用了目前常用的Java+Struts+Hibernate方法。struts框架定义了管理平台系统的结构(表示层)和页面之间流转的规则(业务层)。Hibernate将数据库连接抽象化,使得开发过程中对数据库的使用更加简洁方便,同时,Hibernate降低了更换不同类型数据库所用的开发时间。基于Java语言编写服务端代码,开发效率高,面向对象的设计方法提高了代码的可维护性。该模块还使用了较多的JS代码和基于Ajax的技术来提高客户端页面刷新和页面功能;数据库服务器的设计使用瑞典MySQL AB公司开发的小型关系型数据库管理系统MySQL5.1,它为Java语言提供了丰富的API,方便Java应用程序对其访问。
嵌入式终端操作系统采用μC/OS-Ⅱ操作系统。μC/OS-Ⅱ是一个源码开放的抢占式实时操作系统。它的内核短小精悍、可裁减、执行时间确定。系统大部分代码采用C语言编写,与硬件有关的部分都集中在固定的文件中,移植相当方便,可应用于目前大多数型号的CPU。但是,没有集成网络协议,所以,开发人员使用该操作系统进行网络程序开发时,需要自行定制网络协议。
2 信息发布系统的单元交互
嵌入式网络信息发布系统单元之间的通信可以分为两层:服务器与数据库交互、服务器与远程终端通信。
2.1 服务器与数据库交互层
该系统的服务器具有远程监控服务功能,包括Web服务器、文件服务器、本地控制服务器。其中,Web服务器提供信息网络发布系统的用户交互界面和业务逻辑处理模块的运行环境;文件服务器主要提供系统管理的视频、图像等多媒体信息的存取服务;本地控制服务器主要管理辖区内所有显示终端的通信分发。
在服务器上编写了具有人机交互功能的JSP静态管理平台界面,用户可以通过该界面方便地进行图形化操作,并将终端反馈的信息显示在该界面,方便用户获取终端的运行情况,还为用户提供有用户权限管理、内容管理、播放控制等模块的监控页面。用户只需登录该管理平台界面,即可通过网络对远程终端进行监控。
服务器对数据库的访问采用JDBC两层模型方法。JDBC是一种用于执行SQL语句的Java API,利用这种方法可以方便地与数据库建立连接,发送操作数据库的语句,并处理结果。两层模型可使得Java Applet或应用程序将直接与数据库进行交互。
服务器与数据库服务器的数据交互主要用于存取终端基本状态信息。例如:网络连接是否正常,连接在同一个服务器的各个终端ID号,终端硬盘的空间大小,硬盘中的内容等。指令的生成依赖于该模块在数据库中所查询到的终端状态标志位。当服务器对某终端进行相应的控制操作时,首先从数据库中读取出该终端当前的状态标志位,根据这些标志位进行逻辑判断,生成本次控制操作所需要发送的XML文本指令。
2.2 服务器与远程终端通信层
服务器与远程终端的通信采用HTTP超文本传输协议,终端定时(初定8 s)发送请求到服务器。服务器接受到请求后,将相应的XML文本语言形式的控制操作指令发送到连接的网络端口,远程终端读取端口的数据进行解析,完成本次控制操作。如果一定时间内(初定1 min)没有收到终端的消息,可断定出现网络异常(终端离线)。
终端系统正常启动之后,系统将自动分配一段内存空间,一部分用来存储请求信息和控制指令,一部分作为消息队列。然后,终端的状态信息作为请求信息循环向指定IP地址(服务器)的端口(初定80端口)发送。终端请求成功后,服务器读取端口接收的请求信息,将请求信息解析后作为终端的当前状态信息,更新数据库中的状态标志位。同时,服务器也可以通过HTTP传输协议发送XML语言结构的文本指令给终端,终端接收到指令后进行解析,并对终端进行相应的控制操作。
3 信息发布系统的关键技术
嵌入式硬件的系统频率、存储空间、缓存大小、编码和解码等性能已经达到了较高的技术水平。那么,对于嵌入式芯片在不同领域中的应用更依靠于操作系统和灵活的软件设计思想来实现。
在该系统的设计中,服务器的设计需要考虑服务器与数据库和终端的交互协议,当通过服务器控制多台终端的时候,对于指令分发、数据包传输、以及数据库的更新都存在着时序和逻辑问题。为了节省系统内存的开销,也要保证系统的实时性和可靠性,所以终端的操作系统选择μC/OS-Ⅱ。该操作系统没有集成网络协议,所以结合其性能条件定制适合它的网络传输协议。
3.1 终端网络程序的设计
远程终端的执行效果只有到现场才可以观察,那么,保证终端接收指令和对指令响应的可靠性是十分必要的。HTTP协议是一种文本协议,文本协议通常是用ASCII符集编码,具有理解简单,扩展扩充方便,容错性较强,可靠性高等优点。开发人员可以方便地进行协议的定制,节省了软件调试时间,大大缩短了开发周期。因此,在该系统的操作系统中定制了HTTP超文本传输协议。
μC/OS-Ⅱ操作系统中创建一个系统网络的入口函数,在此函数中创建一个网络后台任务,该任务的主要功能是请求网络连接,并接收来自服务器的指令。当终端系统初始化后,进入网络后台任务,循环向服务器发送HTTP请求,请求成功后,终端反馈信息到服务器。
系统软件使用C语言编程,将HTTP协议封装在结构体中,用结构体属性字段来表示。
网络端口的所有数据项,包括HTTP协议头、控制指令、lP地址、端口号、端口信号量锁等。HTTP协议的结构体如下:
其中:http_Request[REQUEST_SIZE为HTTP协议头字符串;http_Response为服务器发给终端的控制指令;httpWait为信号量。用信号量来实现网络端口的互斥访问。
在系统中,网络管理平台控制多个嵌入式终端时,通过网络端口与每个终端进行网络连接通信。网络端口是独占性的端口,所以,选择信号量机制对网络端口的访问进行互斥锁处理。 HTTPTcpConnection_t为网络端口连接信息,它也是一个结构体,属性字段包括服务器的IP地址、网络端口号、以及终端请求信息等。代码如下:
3.2 多任务间通信
μC/OS-Ⅱ是多任务机制操作系统,最多可支持64个任务,任务优先级从0~63,对这样的多任务操作系统来说,任务间的通信是必不可少的。μC/OS-Ⅱ中提供了4种通信对象,分别是信号量、邮箱、消息队列和事件。所有这些同步对象都有创建、等待、发送、查询的接口用于实现任务间的通信。
消息机制是创建一个消息队列,一个任务将消息发送到该消息队列中,另一个任务在队列的另一端接收此消息。消息队列是在消息的传输过程中保存消息的容器,它的主要目的是为消息的传递提供路径;如果发送消息时接收者没有响应,消息队列会保留消息,直到可以成功地传递给接收者。
消息机制具有灵活性、可扩展性和异步性等优点。因此,该系统采用消息队列的方式实现UI/User层程序和应用程序之间的通信,如图2所示。
消息的结构体如下:
在消息结构体中:
app_id:接受此消息的应用程序或桩函数。
msg_type:消息类型。系统中的消息设计有两种类型。一是命令消息,应用程序接收到来自UI/User程序的命令消息后,对其进行解析,然后,逐个执行消息中的命令集合,并反馈执行结果;二是通知消息,用来通知UI/User命令在应用程序中得到响应。
msg_id:消息的ID号。
msg_value:消息的参数,存放指针的地址。
下面以命令消息处理过程为例,介绍消息的发送、接收和消息相应操作过程,如图3所示。其中,应用程序管理器是一个消息处理中心,它为UI/User层提供了一些API函数,用来为应用程序接受输入命令和分发命令。同时,它还接收来自应用程序的命令执行结果和通知消息,并把这些消息发送给相应的消息处理函数。
4 结语
现场调试中发现,工控机信息发布系统的故障率为5%,而本文设计的嵌入式信息发布系统的故障率为8%。从价格上进行比较,工控机信息发布系统价格是嵌入式信息发布系统价格的10倍左右。显然,该系统具有更好的性价比,且使用简单,操作方便。随着嵌入式系统软件的PC化,它将成为一种理想的信息发布系统,有着十分诱人的应用前景。