鄒萬(wàn)芳
(武威職業(yè)學(xué)院,甘肅 武威 733000)
嵌入式儀器網(wǎng)管代理服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
鄒萬(wàn)芳
(武威職業(yè)學(xué)院,甘肅 武威 733000)
計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)技術(shù)的高速發(fā)展和廣泛普及,使得網(wǎng)絡(luò)化儀器測(cè)控技術(shù)得到了人們高度的關(guān)注,將測(cè)試測(cè)量技術(shù)、計(jì)算機(jī)技術(shù)、互聯(lián)網(wǎng)技術(shù)融合在一起的網(wǎng)絡(luò)儀器系統(tǒng)是今后儀器的發(fā)展方向。文章對(duì)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議及其相關(guān)操作進(jìn)行深入的分析研究,提出了一套切實(shí)可行的儀器代理服務(wù)系統(tǒng)的構(gòu)建方案,然后基于現(xiàn)有的軟硬件資源,搭建系統(tǒng)運(yùn)行所需的開(kāi)發(fā)環(huán)境。
互聯(lián)網(wǎng);儀器系統(tǒng);代理服務(wù);搭建
本系統(tǒng)以嵌入式Linux為基礎(chǔ)編程環(huán)境,使用C語(yǔ)言實(shí)現(xiàn)SNMP代理程序,完成的代碼最大限度地減少了移植到其他嵌入式系統(tǒng)的工作量。各模塊之間達(dá)到“高內(nèi)聚、低耦合”,盡量獨(dú)立于操作系統(tǒng)。并且在嵌入式Linux操作系統(tǒng)的基礎(chǔ)上移植實(shí)現(xiàn)了嵌入Web服務(wù)器,以更加直觀的方式使用戶監(jiān)控其儀器設(shè)備的運(yùn)行狀態(tài)。Internet與代理相連,代理通過(guò)專用接口與被管設(shè)備連接,發(fā)送查詢、控制命令、同時(shí)接收被管設(shè)備主動(dòng)發(fā)送的告警信息。被管設(shè)備運(yùn)行自身的監(jiān)控程序,負(fù)責(zé)數(shù)據(jù)的采集傳輸,同時(shí)還需要提供專用的調(diào)試接口。代理與被管設(shè)備之間運(yùn)行專用通信協(xié)議,如串口通信協(xié)議、GPIB通信協(xié)議、USB通信協(xié)議等。管理站對(duì)被管設(shè)備進(jìn)行包括查詢?cè)O(shè)備信息、設(shè)置設(shè)備參數(shù)、處理告警信息等監(jiān)控管理操作。
SNMP環(huán)境中所有的管理對(duì)象組織成分層的樹(shù)型結(jié)構(gòu),MIB樹(shù)型結(jié)構(gòu)可以采用如下幾種表示方法:Hash函數(shù)法、雙親表示法[1]、孩子鏈表表示法。綜合復(fù)雜性與可行性,使用雙親表示法來(lái)實(shí)現(xiàn)本系統(tǒng)的MIB結(jié)構(gòu),用一組連續(xù)的存儲(chǔ)空間來(lái)存儲(chǔ)樹(shù)中的各個(gè)結(jié)點(diǎn),數(shù)組中的每一個(gè)元素都對(duì)應(yīng)于樹(shù)中的一個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)具有兩域:數(shù)據(jù)域和雙親域,數(shù)據(jù)域存放結(jié)點(diǎn)本身的信息,雙親域存放該結(jié)點(diǎn)的雙親結(jié)點(diǎn)在數(shù)組中的位置。實(shí)現(xiàn)的MIB結(jié)構(gòu)只需要考慮到節(jié)點(diǎn)的查詢和修改操作,因?yàn)槊總€(gè)代理結(jié)點(diǎn)都有相應(yīng)的Get和Set操作,因此用戶無(wú)法對(duì)代理結(jié)點(diǎn)執(zhí)行增加、刪除等操作。
代理服務(wù)主要由以下幾個(gè)部分組成:初始化模塊、SNMP報(bào)文接收模塊、SNMP報(bào)文處理模塊、SNMP報(bào)文編碼模塊、SNMP報(bào)文發(fā)送模塊、Trap報(bào)文產(chǎn)生模塊。這部分的體系結(jié)構(gòu)如圖1所示。
圖1 代理服務(wù)體系結(jié)構(gòu)
嵌入式Web服務(wù)器采用Browse/Server的方式來(lái)進(jìn)行工作,在這種工作方式下,客戶端需要瀏覽器程序,而服務(wù)器端則需要具有一個(gè)Web服務(wù)器。用戶可以使用瀏覽器來(lái)訪問(wèn)Web服務(wù)器,并能夠通過(guò)網(wǎng)頁(yè)進(jìn)行相應(yīng)的設(shè)置和操作。嵌入式Web服務(wù)器監(jiān)聽(tīng)客戶端的服務(wù)請(qǐng)求,并根據(jù)客戶請(qǐng)求的類型來(lái)提供相應(yīng)的服務(wù),并返回相應(yīng)的處理結(jié)果[2]。嵌入式Web服務(wù)器跟傳統(tǒng)的Web服務(wù)器相比,有其自身的特點(diǎn):首先,由于處理器能力,存儲(chǔ)器容量等限制,對(duì)于占用系統(tǒng)資源較大的程序,嵌入式Web服務(wù)器不需要對(duì)其提供支持;其次,為了實(shí)現(xiàn)遠(yuǎn)程管理和監(jiān)控設(shè)備的目的,用戶要與服務(wù)器進(jìn)行交互,交互可以通過(guò)通用網(wǎng)關(guān)接口(Common Gateway Interface,CGI)等實(shí)現(xiàn)。用戶通過(guò)客戶端訪問(wèn)或操作服務(wù)器時(shí),先通過(guò)TCP/IP協(xié)議棧向服務(wù)器端發(fā)出請(qǐng)求,與服務(wù)器端進(jìn)行“三次握手”,之后客戶端HTTP協(xié)議通過(guò)TCP/IP協(xié)議棧向服務(wù)器發(fā)送HTTP請(qǐng)求,服務(wù)器端接收到請(qǐng)求后,提取請(qǐng)求類型并執(zhí)行相應(yīng)的響應(yīng)操作,然后將結(jié)果返回給客戶端。客戶端收到服務(wù)器端發(fā)來(lái)的響應(yīng)后對(duì)其進(jìn)行解析,并最終以網(wǎng)頁(yè)的形式顯示出來(lái)。目前常見(jiàn)的嵌入式Web服務(wù)器有Boa,Thttpd,GoAhead等,針對(duì)具體的嵌入式人機(jī)界面需要實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)和狀態(tài)查詢,并且要能夠完成邏輯算法的實(shí)現(xiàn),因此本系統(tǒng)選擇GoAhead服務(wù)器[3]。
首先獲取GoAhead源碼包,下載后使用#tar -xzvf命令解壓壓縮包,解壓成功后可以進(jìn)入源碼目錄:OS移植子目錄,包括各種操作系統(tǒng)的子目錄;utils:默認(rèn)只有webcomp.c,就是網(wǎng)頁(yè)編譯器;www:存放Web網(wǎng)頁(yè)的目錄;wwwdemo:GoAhead自帶的demo網(wǎng)頁(yè),其中包括一些GoAhead的文檔;GoAhead服務(wù)器源程序文件:這里面是一些C程序文件;進(jìn)入GoAhead源碼下的LINUX目錄,使用vim工具打開(kāi)Makefile文件,同時(shí)把Makefile中的:matrixsslDir:=$(shell ls -d ../matrixssl-3-1*/)語(yǔ)句屏蔽掉,這一句是用來(lái)啟動(dòng)SSL matrixssl的。接著修改LINUX/main.c文件,因?yàn)樵撐募?,initWebs()函數(shù)中的原程序無(wú)法正確獲得服務(wù)器的IP,因此需要為服務(wù)器設(shè)置一個(gè)靜態(tài)的IP地址。修改intaddr.s_addr = inet_addr(T(“”));這個(gè)語(yǔ)句。然后在shell中進(jìn)入到LINUX目錄下,執(zhí)行#make clean;make命令就可以編譯通過(guò)。編譯通過(guò)后,在LINUX目錄下會(huì)得到兩個(gè)文件,分別為libwebs.a和webs可執(zhí)行文件。將webs執(zhí)行文件、GoAhead源碼目錄下的www和wwwdemo兩個(gè)文件夾傳入開(kāi)發(fā)板中便可以使用瀏覽器訪問(wèn)默認(rèn)主頁(yè)了。
GoAhead中的Ejscript是JavaScript的一個(gè)分支,它只實(shí)現(xiàn)了JavaScript最基本的部分。Ejscript可以應(yīng)用在ASP頁(yè)面中創(chuàng)建動(dòng)態(tài)數(shù)據(jù),在使用Ejscript創(chuàng)建ASP頁(yè)面時(shí),基本格式如:<%function (arguments …) ;%> 。功能參數(shù)可以在統(tǒng)一資源定位符(Uniform Resource Locator,URL)中或者在標(biāo)準(zhǔn)變量中集中定義。嵌入式JavaScript采用表單提交的方式,通過(guò)使用特殊的標(biāo)識(shí),將已經(jīng)實(shí)現(xiàn)的C函數(shù)嵌進(jìn)頁(yè)面文件中去,在提交的時(shí)候,由已經(jīng)在系統(tǒng)定義并且注冊(cè)過(guò)的函數(shù)來(lái)進(jìn)行接收處理。嵌入式JavaScript的設(shè)計(jì)過(guò)程主要有以下幾個(gè)方面[4]:(1)頁(yè)面設(shè)計(jì)。動(dòng)態(tài)生成頁(yè)面時(shí)使用嵌入式JavaScript的獨(dú)立定義。(2)創(chuàng)建函數(shù)定義。標(biāo)準(zhǔn)的創(chuàng)建函數(shù)形式如下:int aspCreateHomeAsp(int eid, webs_t wp, int argc, char_t **argv)。(3)注冊(cè)創(chuàng)建函數(shù)。使用websAspDefine函數(shù)進(jìn)行注冊(cè)后,WebServer會(huì)調(diào)用aspCreateHomeAsp()函數(shù)進(jìn)行頁(yè)面的輸出。(4)Form提交函數(shù)。該函數(shù)用來(lái)響應(yīng)用戶的提交請(qǐng)求,從而實(shí)現(xiàn)交互。(5)注冊(cè)Form提交函數(shù)。若頁(yè)面使用<form action=/goform/AddGroup method=POST>提交,則系統(tǒng)調(diào)用formAddGrou函數(shù)來(lái)進(jìn)行處理。(6)參數(shù)傳遞。利用函數(shù)直接進(jìn)行傳遞。GoAhead通過(guò)叫作GoForm的內(nèi)存表單處理來(lái)實(shí)現(xiàn)標(biāo)準(zhǔn)的CGI。瀏覽器向Web服務(wù)器端發(fā)送數(shù)據(jù)請(qǐng)求,Web服務(wù)器接收到后對(duì)其進(jìn)行解析,從中提取請(qǐng)求類型,創(chuàng)建CGI程序,并在需要的時(shí)候進(jìn)行調(diào)用。同時(shí),設(shè)置環(huán)境變量或標(biāo)準(zhǔn)輸入將有效信息發(fā)送給CGI程序,CGI程序調(diào)用相關(guān)程序,以HTML格式通過(guò)標(biāo)準(zhǔn)輸出接口將執(zhí)行結(jié)果返回給瀏覽器,這樣就完成了瀏覽器與服務(wù)器的一次交互。CGI程序通常有兩種調(diào)用方法:(1)通過(guò)URL調(diào)用,一個(gè)URL指向一個(gè)CGI腳本。服務(wù)接收到請(qǐng)求后根據(jù)URL指向的腳本文來(lái)執(zhí)行腳本。(2)通過(guò)表單調(diào)用,解析來(lái)自表單的用戶輸入信息,并在服務(wù)器端產(chǎn)生相應(yīng)的處理結(jié)果,將響應(yīng)信息反饋給瀏覽器。
[1] 耿國(guó)華.數(shù)據(jù)結(jié)構(gòu)—C語(yǔ)言描述[M].北京:高等教育出版社,2005.
[2] 楊波,趙輝,賈燕.Linux下的WEB服務(wù)器技術(shù)[M].西安:西安電子科技大學(xué)出版社,2001.
[3] 王向群,徐沛平,渠毅,等.基于GoAhead webserver的應(yīng)用開(kāi)發(fā)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011(12):221-223.
[4]郭強(qiáng).基于ARM嵌入式Linux的網(wǎng)絡(luò)化監(jiān)控采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),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
鄒萬(wàn)芳(1983— ),女,甘肅武威人,講師,碩士;研究方向:嵌入式系統(tǒng)。