邹万芳
(武威职业学院,甘肃 武威 733000)
嵌入式仪器网管代理服务系统的设计与实现
邹万芳
(武威职业学院,甘肃 武威 733000)
计算机技术与网络技术的高速发展和广泛普及,使得网络化仪器测控技术得到了人们高度的关注,将测试测量技术、计算机技术、互联网技术融合在一起的网络仪器系统是今后仪器的发展方向。文章对简单网络管理协议及其相关操作进行深入的分析研究,提出了一套切实可行的仪器代理服务系统的构建方案,然后基于现有的软硬件资源,搭建系统运行所需的开发环境。
互联网;仪器系统;代理服务;搭建
本系统以嵌入式Linux为基础编程环境,使用C语言实现SNMP代理程序,完成的代码最大限度地减少了移植到其他嵌入式系统的工作量。各模块之间达到“高内聚、低耦合”,尽量独立于操作系统。并且在嵌入式Linux操作系统的基础上移植实现了嵌入Web服务器,以更加直观的方式使用户监控其仪器设备的运行状态。Internet与代理相连,代理通过专用接口与被管设备连接,发送查询、控制命令、同时接收被管设备主动发送的告警信息。被管设备运行自身的监控程序,负责数据的采集传输,同时还需要提供专用的调试接口。代理与被管设备之间运行专用通信协议,如串口通信协议、GPIB通信协议、USB通信协议等。管理站对被管设备进行包括查询设备信息、设置设备参数、处理告警信息等监控管理操作。
SNMP环境中所有的管理对象组织成分层的树型结构,MIB树型结构可以采用如下几种表示方法:Hash函数法、双亲表示法[1]、孩子链表表示法。综合复杂性与可行性,使用双亲表示法来实现本系统的MIB结构,用一组连续的存储空间来存储树中的各个结点,数组中的每一个元素都对应于树中的一个结点,每个结点具有两域:数据域和双亲域,数据域存放结点本身的信息,双亲域存放该结点的双亲结点在数组中的位置。实现的MIB结构只需要考虑到节点的查询和修改操作,因为每个代理结点都有相应的Get和Set操作,因此用户无法对代理结点执行增加、删除等操作。
代理服务主要由以下几个部分组成:初始化模块、SNMP报文接收模块、SNMP报文处理模块、SNMP报文编码模块、SNMP报文发送模块、Trap报文产生模块。这部分的体系结构如图1所示。
图1 代理服务体系结构
嵌入式Web服务器采用Browse/Server的方式来进行工作,在这种工作方式下,客户端需要浏览器程序,而服务器端则需要具有一个Web服务器。用户可以使用浏览器来访问Web服务器,并能够通过网页进行相应的设置和操作。嵌入式Web服务器监听客户端的服务请求,并根据客户请求的类型来提供相应的服务,并返回相应的处理结果[2]。嵌入式Web服务器跟传统的Web服务器相比,有其自身的特点:首先,由于处理器能力,存储器容量等限制,对于占用系统资源较大的程序,嵌入式Web服务器不需要对其提供支持;其次,为了实现远程管理和监控设备的目的,用户要与服务器进行交互,交互可以通过通用网关接口(Common Gateway Interface,CGI)等实现。用户通过客户端访问或操作服务器时,先通过TCP/IP协议栈向服务器端发出请求,与服务器端进行“三次握手”,之后客户端HTTP协议通过TCP/IP协议栈向服务器发送HTTP请求,服务器端接收到请求后,提取请求类型并执行相应的响应操作,然后将结果返回给客户端。客户端收到服务器端发来的响应后对其进行解析,并最终以网页的形式显示出来。目前常见的嵌入式Web服务器有Boa,Thttpd,GoAhead等,针对具体的嵌入式人机界面需要实现动态数据和状态查询,并且要能够完成逻辑算法的实现,因此本系统选择GoAhead服务器[3]。
首先获取GoAhead源码包,下载后使用#tar -xzvf命令解压压缩包,解压成功后可以进入源码目录:OS移植子目录,包括各种操作系统的子目录;utils:默认只有webcomp.c,就是网页编译器;www:存放Web网页的目录;wwwdemo:GoAhead自带的demo网页,其中包括一些GoAhead的文档;GoAhead服务器源程序文件:这里面是一些C程序文件;进入GoAhead源码下的LINUX目录,使用vim工具打开Makefile文件,同时把Makefile中的:matrixsslDir:=$(shell ls -d ../matrixssl-3-1*/)语句屏蔽掉,这一句是用来启动SSL matrixssl的。接着修改LINUX/main.c文件,因为该文件,initWebs()函数中的原程序无法正确获得服务器的IP,因此需要为服务器设置一个静态的IP地址。修改intaddr.s_addr = inet_addr(T(“”));这个语句。然后在shell中进入到LINUX目录下,执行#make clean;make命令就可以编译通过。编译通过后,在LINUX目录下会得到两个文件,分别为libwebs.a和webs可执行文件。将webs执行文件、GoAhead源码目录下的www和wwwdemo两个文件夹传入开发板中便可以使用浏览器访问默认主页了。
GoAhead中的Ejscript是JavaScript的一个分支,它只实现了JavaScript最基本的部分。Ejscript可以应用在ASP页面中创建动态数据,在使用Ejscript创建ASP页面时,基本格式如:<%function (arguments …) ;%> 。功能参数可以在统一资源定位符(Uniform Resource Locator,URL)中或者在标准变量中集中定义。嵌入式JavaScript采用表单提交的方式,通过使用特殊的标识,将已经实现的C函数嵌进页面文件中去,在提交的时候,由已经在系统定义并且注册过的函数来进行接收处理。嵌入式JavaScript的设计过程主要有以下几个方面[4]:(1)页面设计。动态生成页面时使用嵌入式JavaScript的独立定义。(2)创建函数定义。标准的创建函数形式如下:int aspCreateHomeAsp(int eid, webs_t wp, int argc, char_t **argv)。(3)注册创建函数。使用websAspDefine函数进行注册后,WebServer会调用aspCreateHomeAsp()函数进行页面的输出。(4)Form提交函数。该函数用来响应用户的提交请求,从而实现交互。(5)注册Form提交函数。若页面使用<form action=/goform/AddGroup method=POST>提交,则系统调用formAddGrou函数来进行处理。(6)参数传递。利用函数直接进行传递。GoAhead通过叫作GoForm的内存表单处理来实现标准的CGI。浏览器向Web服务器端发送数据请求,Web服务器接收到后对其进行解析,从中提取请求类型,创建CGI程序,并在需要的时候进行调用。同时,设置环境变量或标准输入将有效信息发送给CGI程序,CGI程序调用相关程序,以HTML格式通过标准输出接口将执行结果返回给浏览器,这样就完成了浏览器与服务器的一次交互。CGI程序通常有两种调用方法:(1)通过URL调用,一个URL指向一个CGI脚本。服务接收到请求后根据URL指向的脚本文来执行脚本。(2)通过表单调用,解析来自表单的用户输入信息,并在服务器端产生相应的处理结果,将响应信息反馈给浏览器。
[1] 耿国华.数据结构—C语言描述[M].北京:高等教育出版社,2005.
[2] 杨波,赵辉,贾燕.Linux下的WEB服务器技术[M].西安:西安电子科技大学出版社,2001.
[3] 王向群,徐沛平,渠毅,等.基于GoAhead webserver的应用开发[J].计算机系统应用,2011(12):221-223.
[4]郭强.基于ARM嵌入式Linux的网络化监控采集系统的设计与实现[D].北京:北京交通大学,2008.
Design and implementation of network management agent service system for embedded instrument
Zou Wanfang
(Wuwei Occupational College, Wuwei 733000, China)
With the rapid development and popularization of computer technology and network technology, the networked instrument measurement and control technology has
people’s high attention. The networked instrument system which combines test and measurement technology, computer technology and Internet technology is the development direction of the instrument. In this paper,the simple network management protocol and its related operation are in-depth analyzes and studies, and a set of feasible instrument construction scheme of the proxy service system is put forward. Then, based on the existing hardware and software resources, the development environment of the system operation is set up.
Internet; instrument system; proxy service; set up
邹万芳(1983— ),女,甘肃武威人,讲师,硕士;研究方向:嵌入式系统。