• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. 20240703
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      工業(yè)智能邊緣計算2024年會(huì )
      2024
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      基于Web的嵌入式設備管理



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

          1 Wind Web Server介紹

          VxWorks是WindRiver公司開(kāi)發(fā)的具有工業(yè)體體育場(chǎng)地位的高位能實(shí)時(shí)操作系統內核,它是一個(gè)運行在目標機上的高性能、可裁減的嵌入式實(shí)時(shí)操作系統,具有先進(jìn)的網(wǎng)絡(luò )功能,支持市面上逾90%的處理器。該公司的網(wǎng)絡(luò )協(xié)議棧產(chǎn)品Wind Web Server提供了功能強大的基于Web方式的網(wǎng)絡(luò )管理系統,可以無(wú)縫地集成到任何基于VxWorks的嵌入式應用中。

          Wind Web Server具有以下特性:

          ?完全支持HTTP 1.1標準

          ?不需要文件系統

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

          ?可通過(guò)標記支持SSI

          ?URL處理可定制

          ?靈活配置的模塊結構

          ?腳本?。?~40KB)

          ?支持用戶(hù)/用戶(hù)組/密碼認證

          ?有IP過(guò)濾機制

          ?支持CGI

          ?可記錄日志

          ?支持別名

          ?支持服務(wù)器推送(Server push)技術(shù)。

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

          2 Wind Web Server結構

          嵌入式系統的使用的資源是受限的,在許多飛速下甚至沒(méi)有外部存儲系統,這一點(diǎn)要求嵌入式系統的 Web服務(wù)器與UNIX和Windows平臺上的Web服務(wù)器有很大不同。Wind Web Server采用模塊化和可伸縮的系統結構,允許用戶(hù)進(jìn)行裁剪以滿(mǎn)足資源的不同限制。

          Wind Web Server由以下關(guān)鍵部分組成:

          ?Web服務(wù)器核心

          ?HTTP請求處理模塊(RPM)

          ?RPM調度程序

          ?服務(wù)器端符號表

          ?API函數

          2.1 Web服務(wù)器核心和RPM調度程序

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

          2.2 HTTP請求處理模塊(RPM)

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

          2.3 服務(wù)器端符號表

          Wind Web Server主要通過(guò)符號表來(lái)支持Web存取目標機中的變量,每個(gè)符號表包含如下屬性:

          ?Address 內存地址

          ?Name 名稱(chēng)

          ?Descrip 描述

          ?Type 數據類(lèi)型

          ?Num Elems 變量個(gè)數

          ?GET Routine 讀加調函數

          ?GET Param 調回調數數的參數

          ?SET Routine 寫(xiě)回調函數

          ?SET Param 寫(xiě)回調函數的參數

          ?Access ID 變量的訪(fǎng)問(wèn)控制

          將網(wǎng)頁(yè)請求和符號表聯(lián)系起來(lái)的方法有兩種:擴展 SSI和服務(wù)器推送。

          (1)擴展SSI的實(shí)現

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

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

          (2)服務(wù)器推送的實(shí)現

          HTTP是一種請求響應協(xié)議,如果要對服務(wù)器端進(jìn)行持續的監控,必須不斷地發(fā)送請求刷新頁(yè)面,這將大大加重服務(wù)器的負擔。Wind Web Server能夠使用內嵌的Linve Control模塊在頁(yè)面中的Java applet與服務(wù)器端的符號表之間建立一條持續的交線(xiàn)鏈路,使服務(wù)器端符號表變量的改變無(wú)需客戶(hù)端請求而直接對客戶(hù)端發(fā)布,從而實(shí)現了服務(wù)器推送的目的。

          2.4 HTTP請求處理過(guò)程

          一個(gè)典型的 HTTP請求處理包含以下步驟:

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

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

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

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

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

          3 并發(fā)中的關(guān)鍵技術(shù)

          3.1 自定義用戶(hù)RPM

          通過(guò)調用函數 httpRomConfAdd(HTTP_M_GET,"/user_rpm/"User_rpm),把形如http://x.x.x.x/user_rpm/*.htm?para1=xxx?2=xxx的請求用函數框架如下:

          short User_rpm(HTTP_REQ_ID reqId{

          char* para;

          httpStatusSet (reqId,HTTP_OK);

          httpHeaderGenerate (reqId); /*產(chǎn)生THHP頭*/

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

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

          httpStringPut (reqId,"..."); /*開(kāi)始輸出*/

          …… /*輸出全部HTML語(yǔ)句*/

          httpStringPut(reqId,"..."); /*結束輸出*/

          return(RPM_DONE);

          }

          3.2 自定義SSI處理函數

          通過(guò)調用函數 httpSsiFnConfAdd("user ssi",User_ssi)建立自定義SSI處理函數User_ssi。當而面中包含如下標記時(shí):,服務(wù)器將調用函數User_ssi(參數為para),并將輸入插到準備返回的HTTP頁(yè)面中。函數User_rpm的實(shí)實(shí)框架如下:

          short User_ssi(HTTP_REQ_ID redid,char * szArg){

          char *para;

          parg=szArg; /*得到輸入參數*/

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

          httpStringPut (reqId,"…"); /*輸出全部HTML語(yǔ)句*/

          return(HTTP_OK);

          }

          3.3 et Java applet實(shí)現服務(wù)器推送

          Live Control模塊的API提供如下Java類(lèi)的實(shí)現:

          ?DirectRegistry Applet與符號表進(jìn)行通訊的基本部件

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

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

          ?DataObjectChangeListenet、DataObjectStatusListener用于監聽(tīng)的容器

          用 Java applet實(shí)現服務(wù)器推送的框架如下:

          (1)創(chuàng )建用于連接服務(wù)器端的DirectRegistry類(lèi)的實(shí)例:

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

          myRegistry=new DirectRegistry(myServerURL);

          (2)創(chuàng )建用于監聽(tīng)符號表變量的Java部件:

          myWidget=new TextWidget("0",10);

          (3)創(chuàng )建DirectReadProxy和DirectWriteProxy的實(shí)例用于讀寫(xiě)符號表變量mySymbol:

          myReadProxy=new DirectReadProxy("mySymbol");

          myWriteProxy=new DirectWriteProxy("mySymbol");

          (4)將Java部件myWidget加入myReadProxy和my Write Proxy,成為監聽(tīng)容器:

          myReadProxy.addDataObjectChangeListener(myWidget);

          myWriteProxy.addDataObjectChangeListener(myWidget);

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

          myRegistry.addPropertyChangeListener(myReadProxy);

          myRegistry.addPropertyChangeListener(myWriteProxy);

          另外,用戶(hù)可以創(chuàng )建自己的 Java部件和DataObject ChangeListener方法,以完成更高級的應用。

          3.4 配置HTTP服務(wù)

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

          4 實(shí)例應用

          在 ADSL匯接器系統軟件的開(kāi)發(fā)過(guò)程中,使用Wind Web Server開(kāi)發(fā)了基于Web的圖形化設備管理接口,用戶(hù)在任何地點(diǎn)只需使用瀏覽器就可以對設備進(jìn)行全面的管理,包括:

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

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

          ?可以對初如化數據進(jìn)行修改和保存;

          ?可以遠程更新整個(gè)軟件系統;

          ?可以隨時(shí)獲取和清除計費信息。

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

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>