《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于Web的嵌入式設備管理

基于Web的嵌入式設備管理

2008-12-22
作者:周 山 李向濤 何 燕

??? 摘? 要: 討論了嵌入式系統" title="嵌入式系統">嵌入式系統中用Wind Web Server進行設備管理" title="設備管理">設備管理接口的開發,敘述了系統的結構和開發中的關鍵技術,介紹在ADSL匯接設備中的應用實例。?

??? 關鍵詞: 嵌入式系統? Wind Web Server? 設備管理

?

  隨著互聯網絡硬件、軟件的迅猛發展,嵌入式系統被廣泛應用到工作和生活的各個領域中,如何對這些設備進行管理成為嵌入式系統軟件開發中的一個重要方面。用戶只有通過設備所提供的管理接口對其進行配置、管理和監控,因此管理接口的易用程度和效率成為衡量設備優劣的重要標準之一。在嵌入式設備中加入HTTP服務能將其轉化成Web Server,可以向Internet或內部網提供基于Web的圖形化管理接口,用戶可以使用瀏覽器作為接口來訪問嵌入式設備。這樣不僅使設備的易用性大大提高,而且可以省去專用管理軟件,從而方便地進行統一管理。?

1 Wind Web Server介紹?

  VxWorks是WindRiver公司開發的具有工業領導地位的高性能實時操作系統內核,它是一個運行在目標機上的高性能、可裁減的嵌入式實時操作系統,具有先進的網絡功能,支持市面上逾90%的處理器。該公司的網絡協議棧產品Wind Web Server提供了功能強大的基于Web方式的網絡管理系統,可以無縫地集成到任何基于VxWorks的嵌入式應用中。?

  Wind Web Server具有以下特性: ?

  ·完全支持HTTP 1.1標準 ?

  ·不需要文件系統 ?

  ·支持Java Applets、圖像文件、聲音文件等 ?

  ·可通過標記支持SSI?

  ·URL處理可定制 ?

  ·靈活配置的模塊結構 ?

  ·腳本小(7~40KB) ?

  ·支持用戶/用戶組/密碼認證 ?

  ·有IP過濾機制 ?

  ·支持CGI ?

  ·可記錄日志 ?

  ·支持別名 ?

  ·支持服務器推送(Server push)技術。?

  Wind Web Server采用模塊設計,可以方便地進行裁剪以滿足應用的特殊要求。根據配置,Wind Web Server需要7~40KB的內存。在嵌入式系統中硬件資源寶貴,有時并不需要文件系統。Wind Web Server提供了一個工具Pagepack,可以在編譯和連接時將Web內容放在程序代碼中,從而可以存儲在ROM中。?

2 Wind Web Server結構?

  嵌入式系統所能使用的資源是受限的,在許多情況下甚至沒有外部存儲系統,這一點要求嵌入式系統的 Web服務器與UNIX和Windows平臺上的Web服務器有很大不同。Wind Web Server采用模塊化和可伸縮的系統結構,允許用戶進行裁剪以滿足資源的不同限制。Wind Web Server的結構如圖1所示。?

?

?

  Wind Web Server由以下關鍵部分組成:?

  ·Web服務器核心?

  ·HTTP請求處理模塊(RPM)?

  ·RPM調度程序?

  ·服務器端符號表?

  ·API函數?

2.1 Web服務器核心和RPM調度程序?

  Web服務器核心作為一個任務運行在目標系統中,提供網絡服務綁定、Socket函數調用和初始化參數的設置等。RPM調度程序決定怎樣響應HTTP請求,即決定了HTTP請求的地址和RPM的對應關系。?

2.2 HTTP請求處理模塊(RPM)?

  HTTP請求處理模塊分為兩大類:系統RPM和用戶RPM。其中系統RPM執行HTTP請求的基本處理,包括:記錄日志、處理別名與MIME頭、IP地址檢查、密碼驗證和訪問控制。而用戶RPM處理具體的頁面請求,包括:文件系統RPM、SSI(Server Side Include)RPM、CGI RPM、用戶函數調用RPM、服務器推送RPM等。另外用戶可以使用自定義RPM完成一些特殊的處理過程。?

2.3 服務器端符號表?

  Wind Web Server主要通過符號表來支持Web存取目標機中的變量,每個符號表包含如下屬性:?

  ·Address???????內存地址?

  ·Name????????? 名稱?

  ·Descrip???????描述?

  ·Type????????? 數據類型?

  ·Num Elems???? 變量個數?

  ·GET Routine?? 讀回調" title="回調">回調函數?

  ·GET Param???? 讀回調函數的參數?

  ·SET Routine?? 寫回調函數?

  ·SET Param???? 寫回調函數的參數?

  ·Access ID???? 變量的訪問控制?

  將網頁請求和符號表聯系起來的方法有兩種:擴展SSI和服務器推送。?

  (1)擴展SSI的實現?

  可以在HTML網頁中使用標記,每個標記都與存在于Wind Web Server符號表中的一個讀或寫回調函數相對應。當網頁為Wind Web Server請求時,包含變量值等動態信息的讀或寫回調函數輸出替代了網頁上的標記,從而動態顯示或提交數據內容。這項技術同時提高了在HTML頁中處理表單" title="表單">表單的能力。傳統的Web Server只能處理事先確定的缺省的表單元素,在Wind Web Server,實際值可以從符號表中得到,然后在HTML頁被提交到客戶端" title="客戶端">客戶端前插入到表單中。Wind Web Server還提供了一個工具formpack,用于在包含表單的普通網頁中加入標記。?

  Wind Web Server中已經包含標準的SSI實現,如輸入框、下拉列表、復選框等。另外,用戶可以加入自定義的SSI函數以處理特定的HTTP請求。?

  (2)服務器推送的實現?

  HTTP是一種請求響應協議,如果要對服務器端進行持續的監控,必須不斷地發送請求刷新頁面,這將大大加重服務器的負擔。Wind Web Server能夠使用內嵌的Live Control模塊在頁面中的Java applet與服務器端的符號表之間建立一條持續的交互鏈路,使服務器端符號表變量的改變無需客戶端請求而直接對客戶端發布,從而實現了服務器推送的目的。?

2.4 HTTP請求處理過程?

  一個典型的HTTP請求處理包含以下步驟:?

  (1)接收到HTTP請求后,服務器取出包含目的URL的請求行字符串,將其存入描述HTTP請求的數據結構中;?

  (2)如果該請求是頁面提交,即如下形式:http://target/xxx/xxx.htm?para1=xxx?2=xxx,則將提交參數存入環境變量QUERY_STRING中;?

  (3)調用所有已配置的系統RPM,如果返回正確,則繼續;?

  (4)調用頁面對應的用戶RPM,如果該頁面中包含SSI標記,則調用SSI RPM;?

  (5)查找標記,例如: 則調用標準SSI函數ShowValue( )對符號表中的變量usersymbol進行處理,然后將得到的變量值插入要返回的HTML頁面中,傳送至客戶端。?

3 開發中的關鍵技術?

3.1 自定義用戶RPM?

  通過調用函數httpRpmConfAdd(HTTP_M_GET,″/user_rpm/″,User_rpm),把形如http://x.x.x.x/user_rpm/*.htm?para1=xxx?2=xxx的請求用函數User_rpm進行處理和輸出。函數User_rpm的實現框架如下:?

short User_rpm ( HTTP_REQ_ID reqId ){?

  char* para;?

  httpStatusSet (reqId, HTTP_OK);?

  httpHeaderGenerate (reqId); ??? /*產生HTTP頭*/?

  para=httpGetEnv(reqId,″QUERY_STRING″); /*得到輸入參數*/?

  ……??????? /*處理輸入參數及準備輸出結果*/?

  httpStringPut (reqId,″...n″); /*開始輸出*/?

  ……??????? /*輸出全部HTML語句*/ ?

  httpStringPut(reqId,″...n″); /*結束輸出*/?

  return(RPM_DONE);?

  }?

3.2. 自定義SSI處理函數?

  通過調用函數httpSsiFnConfAdd (″user_ssi″, User_ssi)建立自定義SSI處理函數User_ssi。當頁面中包含如下?

  標記時:,服務器將調用函數User_ssi(參數為para),并將輸出插入到準備返回的HTTP頁面中。函數User_rpm的實現框架如下:?

short User_ssi ( HTTP_REQ_ID reqId ,char * szArg){?

  char * para;?

  para=szArg;? /*得到輸入參數*/?

  ……??????? ?? /*處理輸入參數及準備輸出結果*/?

????httpStringPut (reqId,″...n″); /*輸出全部HTML語句*/?

 ? return(HTTP_OK);?

??? }?

3.3 用Java applet實現服務器推送?

  Live Control模塊的API提供如下Java類的實現:?

  ·DirectRegistry??????? Applet與符號表進行通訊的基本部件?

  ·DirectReadProxy?????? 從DirectRegistry中獲取符號表變量的改變?

  ·DirectWriteProxy????? 更新DirectRegistry中符號表變量的值?

  ·DataObjectChangeListener、DataObjectStatusListener?用于監聽的容器?

  用Java applet實現服務器推送的框架如下:?

  (1)創建用于連接服務器端的DirectRegistry類的實例:?

  myServerURL=new URL(″http://″+getDocumentBase().getHost()+″/lc/″); ?

  myRegistry=new DirectRegistry(myServerURL);?

  (2)創建用于監聽符號表變量的Java部件:?

  myWidget=new TextWidget(″0″,10);?

  (3)創建DirectReadProxy和DirectWriteProxy的實例用于讀寫符號表變量mySymbol:?

  myReadProxy=new DirectReadProxy(″mySymbol″);?

  myWriteProxy=new DirectWriteProxy(″mySymbol″);?

  (4)將Java部件myWidget加入myReadProxy和myWrite?

  Proxy,成為監聽容器:?

  myReadProxy.addDataObjectChangeListener(myWidget);?

  myWriteProxy.addDataObjectChangeListener(myWidget);?

  (5)將已創建的監聽容器myReadProxy、myWriteProxy加入myRegistry中,完成Applet與服務器端Live Control模塊的連接:?

  myRegistry.addPropertyChangeListener(myReadProxy);?

  myRegistry.addPropertyChangeListener(myWriteProxy);?

  另外,用戶可以創建自己的Java部件和DataObject ChangeListener方法,以完成更高級的應用。?

3.4 配置HTTP服務?

  Wind Web Server可進行裁剪用于不同的應用環境,可配置的參數較多,同時參數之間相互影響。因此參數的配置是否妥當將直接影響HTTP服務的性能,甚至導致HTTP服務不能正常工作。其中對Web Server內存池的配置和使用尤為關鍵,需要進行仔細調整和多次測試。另外整個系統的網絡內存池的容量也直接影響HTTP服務的性能,需要結合系統規模進行配置。?

4 實例應用?

  在ADSL匯接器系統軟件的開發過程中,使用Wind Web Server開發了基于Web的圖形化設備管理接口,用戶在任何地點只需使用瀏覽器就可以對設備進行全面的管理,包括:?

  ·可以對系統用戶認證和管理,不同的用戶具有不同的操作權限;?

  ·可以對系統進行實時監控,頁面依照機柜布局設計。設備面板和頁面上的各種信號燈同步變化,一目了然。同時可以在頁面上直接使用設備面板上的各種按鍵,操作方便。采用了服務器推送技術,降低了網絡通信量和系統負擔;?

  ·可以對初始化數據進行修改和保存;?

  ·可以遠程更新整個軟件系統;?

  ·可以隨時獲取和清除計費信息。?

  整個程序(含頁面代碼)共200K字節左右,任務的優先級設為最低,不影響原系統的正常運行,達到了很好的效果。?

參考文獻?

1 Wind River Systems, Inc. Wind Web Server Programmer's Guide 2.0. 2000?

2 譚浩強,辛運幃,饒一梅,張 均.Java 程序設計.北京:清華大學出版社.2000
本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 成人在线免费小视频 | 成人爽爽激情在线观看 | 天天好b | 成人午夜视频在线播放 | 操比片| 免费看黄色的网址 | 黑人videos巨大hd粗暴 | 亚洲国产成人精品一区二区三区 | 久久久久久福利 | 欧美亚洲91| 国产综合色在线视频区色吧图片 | 禁视频网站在线观看漫画 | 久久精品最新免费国产成人 | 成年人免费网站视频 | 97欧美在线看欧美视频免费 | 免费一级夫妻a | 98在线视频噜噜噜国产 | 久久久久亚洲视频 | 日本福利网址 | 成人合集大片bd高清在线观看 | 国产手机视频 | 欧美成人精品久久精品 | 黄色一区二区三区 | 手机看片高清日韩精品 | 国产 日韩欧美 | 欧美日韩精品在线播放 | 国产年成美女网站视频免费看 | 亚洲一区二区三区高清不卡 | 色的视频网站 | 天天做天天爱天天操 | 亚洲免费一区 | 狠狠狠狠狠狠狠狠 | 天天爽夜夜爽8888视频精品 | 欧美精品一区二区三区在线播放 | 亚洲欧洲免费视频 | japan高清日本乱xxxx | 欧美午夜剧场 | 殴美黄色 | 毛片在线全部免费观看 | 欧美黄色a | 中文字幕一精品亚洲无线一区 |