鄒萬芳
(武威職業學院,甘肅 武威 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— ),女,甘肅武威人,講師,碩士;研究方向:嵌入式系統。