汪 鵬
(南京郵電大學 通信與信息工程學院,江蘇 南京 210000)
基于嵌入式Web服務器尋星儀監控系統的設計
汪 鵬
(南京郵電大學 通信與信息工程學院,江蘇 南京 210000)
現代衛星通信和計算機技術發展迅猛,衛星通信業務的需求也越來越大。嵌入式系統是現代通信網絡技術的重要平臺,越來越多的基于嵌入式Web服務器的監控系統被開發。嵌入式Web服務器監控系統具有許多優點,如:結構簡單、功耗低等。把嵌入式設備接入互聯網可以實現方便、實時地通過網絡監控設備的工作狀態,再將數據以直觀、形象的網頁方式顯示在PC、PDA、Phone等設備上,不需要專門的應用軟件。針對衛星尋星儀監控系統所使用的ARM9系列芯片,在控制板硬件移植了Linux操作系統,在監控系統內設置合適的應用層Web服務器,并通過Ajax+CGI+Boa的方式實現以網頁監控衛星尋星儀。實驗結果表明,用戶在終端瀏覽器上輸入網址進行訪問,就可以對便攜式衛星尋星儀進行實時、方便的監控。
便攜式衛星尋星儀;嵌入式Web服務器;B/S架構;Boa
隨著互聯網[1]的不斷發展和廣泛應用,人們獲取信息的主要方式也變成了網頁形式,而今許多國內外廠商研制的衛星尋星儀產品,大多數都是采用C/S(客戶端/服務器)模式,需要定制專門的監控軟件。因此,越來越多的客戶希望通過網頁的方式進行操作,而這種方式正是通常所說的B/S(瀏覽器/服務器)模式。客戶通過終端上瀏覽器,比如:IE、Google、360等。在地址欄輸入URL(統一資源定位符)后連上服務器,提供Web服務的服務器就會將存儲在其上的資源發送給瀏覽器,瀏覽器將資源以網頁的形式展現出來。
在現代社會中,這種Web服務器[2]模式和美觀的網頁設計技術也在嵌入式系統中得到了廣泛應用,用于對其他設備的管理、監視和控制[3]。為此,結合目前廣泛使用的ARM芯片,提出一種衛星尋星儀基于嵌入式Web的實現方案。它采用嵌入式Linux操作系統,源代碼開放,應用豐富,內嵌嵌入式Web服務器,可實現對衛星尋星儀狀態信號的采集、控制。
系統為一個攜式衛星尋星儀監控系統的Web監控系統,包括Web服務器、數據處理單元、傳輸網絡、數據庫、監控終端等幾個功能模塊[4]。
監控終端采用PC或者手機等移動設備,設備上的瀏覽器工作在TCP/IP協議的應用層,使用Http協議進行通信。它可以向服務器發送監控命令或者從服務器獲得衛星尋星儀的狀態。數據傳輸部分可以采用兩種方式:如果監控終端為PC機,將用一根網線將服務器和PC機連接起來,實現點對點通信;如果采用的是手持移動終端,可以利用無線射頻模塊組建的局域網,通過Wifi通信來實現數據傳輸。數據處理模塊采用Atmel AT91SaM9G45微處理器[5],其主要功能是運行伺服控制程序和CGI(Commom Gateway Interface)程序。數據庫主要用來存儲對星的參數。
該系統采用SQLite輕型數據庫[6],CGI程序利用它提供的API函數完成數據庫的查詢、插入和修改等常用功能。圖1為系統的工作流程。

圖1 系統工作流程
一般而言,嵌入式設備上的資源都是有限的,并且不能同時處理很多用戶的請求,所以對于嵌入式設備有專門的嵌入式Web服務器。這些服務器自身占用存儲空間都很小并且運行時所占用的空間也非常小,十分適合嵌入式的應用場合。常見的嵌入式Web服務器[7]有:Lighttpd、Thttpd、minihttpd、Shttpd、appweb、mathopd和Boa等。
Lighttpd是由德國人領導的開源Web服務器軟件,其根本目的是提供一個專門針對高性能網站,安全、快速、靈活并且兼容性好的Web Server環境,并且還具有模塊豐富、內存開銷低、CPU占用率低、效能好等特點。Lighttpd是輕量級的Web Server中較為優秀的一個,它支持FastCGI,Auth,輸出壓縮,URL重寫,Alias,CGI等功能。
Thttpd是ACME公司設計的一款開源的比較精巧的Web服務器,是一款小巧、簡單、快速、易移植和安全的HTTP服務器;Thttpd也是一個非常小巧的輕量級Web Server,僅僅400 k左右,非常簡單,對于并發請求不是用fork()來派生子進程處理,而是采用多路復用(Multiplex)技術去實現,因此效能很好。此外,Thttpd全面支持HTTP 1.1協議(RFC 2616)、HTTP基本驗證(RFC2617)、CGI 1.1及大部分的SSI(Server Side Include)功能。
Shttpd也是一個開源的輕量級的Web Server,具有比Thttpd更豐富的功能特性,支持CGI,cookie,SSL,MD5認證,還可以嵌入(embedded)到現有的軟件里,并且不需要配置文件。
Boa[8]是一種非常小巧的Web服務器,其代碼量非常少,可執行代碼只有60 kB左右,是一種單任務Web服務器。Boa只能依次完成用戶的請求,而不會fork出新的進程來處理并發連接請求。支持身份認證和動態網頁CGI,具有穩定,適用性強,功能全面,安全性高等特點。
考慮到嵌入式系統資源和運行能力的限制,該系統采用Boa服務器[9]作為Web服務器。
Boa工作流程圖如圖2所示。Boa從到達的套接字獲得HTTP[10]請求(存儲在一個request結構中),并將其保存到隊列中。首先,get_request()函數將從套接字獲取的數據全部保存到request→header_line,然后調用process_request()函數來處理隊列中的每一個請求。根據request結構體中status所表示的不同狀態 進行不同處理。如果這個請求符合HTTP協議,則會調用process_option_line()函數,將一些頭部信息填寫到request結構體中,完成CGI環境變量的設置,隨后process_header_end()函數對用戶進行驗證。如果驗證通過,則判斷request結構體中的is_cgi,為非0時是CGI程序,調用init_cgi()函數進行處理,為0時是靜態頁面,則調用init_get()函數進行處理。

圖2 Boa的工作流程圖
客戶機和服務器之間交互的載體是網頁,網頁中不但有文字,也有圖片,甚至還能將視頻文件嵌入網頁中,網頁能提高用戶體驗。
系統采用的主要網頁設計技術包括HTML、CGI程序、Javascript腳本語言和CSS樣式等,而這些技術綜合起來就是人們常用的Ajax技術。
CGI又叫通用網關接口[11],它是組成WWW技術的一種,運行在服務器端,為HTML文件在服務器端和客戶端提供了更多的交互,使網頁具有了交互功能。CGI僅僅是一種規范,可以采用多種編程語言來編寫CGI程序,如:C、C++、Perl、VB和C Shell等。該系統采用C語言進行CGI編程。
CGI的處理過程[12]:首先客戶端把用戶請求發給服務器;服務器接收到客戶端請求后,將它交給相應的CGI程序處理;接著CGI程序把處理結果傳給服務器;最后服務器把結果轉發給客戶端。
Ajax[13]不僅僅是一種特定的客戶端技術,還是一種設計技巧。對于傳統的網頁(沒有使用Ajax)如果需要更新內容,必需重載整個網頁;而采用Ajax的網頁可以只向服務器發送并取回必需的數據,通過在后臺與服務器進行少量的數據交換,實現網頁的異步更新,即在不刷新整個頁面的前提下更新數據,允許瀏覽器與服務器進行通信而無需刷新頁面,這使得Web應用程序能夠更加迅捷地回應用戶動作。Ajax與服務器的交互過程一般只需要三步即可完成:首先Javascript腳本創建一個XMLHttpRequest對象;然后利用XMLHttpRequest對象的send()和open()方法向服務器端的CGI程序發送請求;最后利用XMLHttpRequest對象的responseText或responseXML屬性來獲得服務器的響應。
CSS[14]技術主要針對頁面進行布局,并設計出整潔、美觀的網頁,提供給用戶。
攜式衛星尋星儀的頁面總體設計流程如圖3所示。主要包括四個網頁,即登錄頁面、監控頁面、參數設置頁面、數據庫頁面。

圖3 頁面總體設計流程圖
靜態網頁測試,測試環境的相關說明。編寫測試代碼index.html,并放在指定文件夾/var/www/html/。用戶使用網線將一臺PC機和便攜式衛星尋星儀控制板互聯。必須確保試驗用PC機和控制板處于同一個網段,所以設置PC機的IP地址為10.10.150.55,子網掩碼設置為255.255.255.0,便攜式衛星尋星儀的IP地址設置為10.10.150.180。最后打開PC機的瀏覽器輸入以下網址:http://10.10.150.180,看是否出現需要的網頁,若出現如圖4所示的網頁,則Boa服務器的移植與配置正確。
index.html代碼如下:

圖4 結果驗證圖
為了實現以網頁方式監控衛星尋星儀,系統采用 Ajax+CGI+Boa的方式完成監控。當網頁觸發事件后,Ajax向服務器發送數據并取回必需的數據,通過在后臺與服務器中的CGI程序進行少量的數據交換,實現網頁的異步更新,即實現對衛星尋星儀便捷、實時的監控。所建立的嵌入式平臺系統對基于嵌入式Web服務器監控系統的開發有一定的借鑒作用。
[1] 王 興.Linux網絡服務器應用教程[M].北京:清華大學出版社,2007.
[2] 徐春艷.嵌入式WEB服務器的研究與實現[D].南京:南京理工大學,2008.
[3] 謝新民,丁 峰.自適應控制系統[M].北京:清華大學出版社,2006.
[4] 吳士力.嵌入式Linux應用開發全程解與實戰[M].北京:機械工業出版社,2010.
[5] INTELSAT SSOG 210.Earthstation verification tests[S].[s.l.]:[s.n.],2000.
[6] Agilent Technologies.User’s/programmer’s reference[M].USA:Agilent,2006.
[7] 呂 鑫.基于ARM和Linux嵌入式Web服務器的設計[D].大慶:大慶石油學院,2008.
[8] 張 勤.Linux服務器配置全程實錄[M].北京:人民郵電出版社,2010.
[9] 吳玉成,侯良偉,冷建筑.嵌入式Linux下Web服務器的設計與實現[J].數據通信,2008(6):43-46.
[10] 王麗娜.衛星通信系統[M].北京:國防工業出版社,2006.
[11] Stevens W R,Rago S A.Advanced programming in the UNIX environment[M].北京:人民郵電出版社,2006.
[12] Helstrom C W.Statistical theory of signal detection[M].Oxford:Pergamon Press,1996.
[13] Kraus J D,Marhefka R J.Antennas:for all applications[M].New York:New McGraw-Hill,2001.
[14] Bridge W M.Cross coupling in a five horn monopulse tracking system[J].IEEE Transactions on Antennas and Propaqation,1972,20(4):436-442.
Design of Satellite Finder Monitoring and Control System with Embedded Web Server
WANG Peng
(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210000,China)
Modern satellite communications and computer technology have developed rapidly,so the demands for satellite communications business are becoming larger and larger.Embedded system is an important platform of modern communication network technology,and more monitoring systems based on embedded Web server have been developed which are endowed with diverse advantages,such as simple structure,low power consumption and so on.The embedded devices connected to internet can make real-time monitoring operation of relevant equipment easy convenient by which data can be displayed with PC,PDA,mobile phone and other instruments without special operation software.Linux operating system is embedded on ARM9 chip of the satellite finder monitoring system investigated.The appropriate application layer Web server is installed in the monitoring system,by which satellite finder can be monitored on Web pages via satellite Ajax+CGI+Boa manner.Experimental results indicate that monitoring function can be achieved conveniently and easily after input of URL on browser to access portable satellite finder.
portable satellite star finder;embedded Web server;B/S architecture;Boa
2016-05-23
2016-09-08
時間:2017-03-07
國家自然科學基金資助項目(61271234)
汪 鵬(1990-),男,碩士研究生,研究方向為衛星通信技術;導師:謝繼東,博導,研究方向為衛星通信技術。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0921.044.html
TP302
A
1673-629X(2017)04-0150-03
10.3969/j.issn.1673-629X.2017.04.033