<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 以ARM7為核心的嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)

          以ARM7為核心的嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)

          作者: 時(shí)間:2010-10-09 來(lái)源:網(wǎng)絡(luò) 收藏

          3 工控Web服務(wù)器的實(shí)現(xiàn)
          3.1 Web服務(wù)器的基本實(shí)現(xiàn)
          Web服務(wù)器可基于Socket套接字來(lái)開(kāi)發(fā),它主要由初始化模塊、監(jiān)聽(tīng)模塊、請(qǐng)求解析模塊、腳本引擎模塊、輸出模塊和命令模塊等組成,各模塊之間的關(guān)系如圖4所示。

          12d.JPG


          μClinux下主要有三個(gè)Web服務(wù)器:httpd、thttpd和Boa。其中httpd是最簡(jiǎn)單的一個(gè)Web服務(wù)器,它的功能最弱,不支持認(rèn)證,不支持CGI。thttpd和Boa都支持認(rèn)證、CGI等。功能都比較齊全。其中boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開(kāi)放,性能比較高,占用系統(tǒng)資源也比較少。boa服務(wù)器在接收到請(qǐng)求時(shí),不啟動(dòng)多個(gè)服務(wù)器進(jìn)程處理多個(gè)請(qǐng)求,而在一個(gè)進(jìn)程內(nèi)處理所有服務(wù)請(qǐng)求。為了實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù),可選擇實(shí)現(xiàn)一個(gè)支持CGI的、非常適合于嵌入式系統(tǒng)的Boa WebServer。然后再通過(guò)CGI用C語(yǔ)言進(jìn)行編程,就可以實(shí)現(xiàn)動(dòng)態(tài)WEB。
          3.2 boa Web Server的移置
          boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開(kāi)放、性能高。目前,μC1inux的代碼中已經(jīng)包含boa的源代碼。在μClinux下實(shí)現(xiàn)Boa時(shí),需要對(duì)Boa做一些配置和修改。boa服務(wù)器的核心文件主要有boa.conf和mime.types,本設(shè)計(jì)主要通過(guò)對(duì)boa.conf和mime.types文件進(jìn)行修改來(lái)實(shí)現(xiàn)。
          3.3 編譯內(nèi)核
          配置過(guò)程完成后,便可重新編譯內(nèi)核。編譯時(shí)先選中Boa選項(xiàng),并把編譯好的內(nèi)核下載到開(kāi)發(fā)板,再啟動(dòng)μClinux,完成IP配置,啟動(dòng)BoaWeb Server,然后就可以通過(guò)IE訪問(wèn)你的網(wǎng)頁(yè)了。如果想啟動(dòng)μClinux時(shí)自動(dòng)啟動(dòng)Boa Web Server,則可修改rc文件,并進(jìn)入/μClinux-ams ung/ven-dors/Samsung/S3C44BOX目錄,再在運(yùn)行腳本rc中增加如下兩行:
          “ifconfig eth0 192.168.1.10
          boa-c/home/”
          修改后,重新編譯內(nèi)核,再下載到目標(biāo)系統(tǒng)運(yùn)行。這樣,運(yùn)行μClinux后,不需要配置就可以直接通過(guò)IE來(lái)訪問(wèn)網(wǎng)頁(yè)了。
          3.4 μClinux下的CGI監(jiān)控技術(shù)
          通過(guò)CGI(通用網(wǎng)關(guān)接口)可為Web服務(wù)器提供一個(gè)執(zhí)行外部程序的通道,這種服務(wù)端技術(shù)可使瀏覽器和服務(wù)器之間具有交互性。CGI程序?qū)儆谕獠砍绦颍枰幾g成可執(zhí)行文件才能在服務(wù)端運(yùn)行。瀏覽器可將用戶(hù)輸入的數(shù)據(jù)送到Web服務(wù)器,Web服務(wù)器再將數(shù)據(jù)用STDIN送給CGI程序。在執(zhí)行CGI程序后,還會(huì)訪問(wèn)存儲(chǔ)數(shù)據(jù)的一些文檔,最后使用STDOUT輸出HTML形式的結(jié)構(gòu)文件,再經(jīng)Web服務(wù)器送回瀏覽器,即可顯示給用戶(hù)。
          若CGI程序是本地程序,也需要編譯成可執(zhí)行文件,以便在被CGI調(diào)用時(shí)運(yùn)行。Web服務(wù)器將用戶(hù)數(shù)據(jù)傳輸給CGI程序,并重定向CGI程序的輸出到Web頁(yè),這樣,CGI程序在處理時(shí),再將數(shù)據(jù)封裝成HTML形式發(fā)送到輸出,從而在客戶(hù)端看到對(duì)應(yīng)的Web頁(yè)。
          訪問(wèn)者可通過(guò)CGI程序遠(yuǎn)程控制數(shù)碼管(模擬工業(yè)現(xiàn)場(chǎng)的控制),并顯示相應(yīng)的數(shù)字。在CGI程序的編寫(xiě)中,每個(gè)程序的大致框架都比較類(lèi)同,其CGI程序流程如圖5所示,它主要是遵循HTTP協(xié)議的通訊。也包括對(duì)輸入輸出的讀寫(xiě)和控制。

          12e.JPG


          3.5 嵌入式工業(yè)監(jiān)控系統(tǒng)的應(yīng)用
          基于Internet的遠(yuǎn)程監(jiān)控有代理方案和嵌入式方案兩種實(shí)現(xiàn)方案。兩種實(shí)現(xiàn)方案均采用三層B/S體系結(jié)構(gòu),即表示層、應(yīng)用邏輯層和數(shù)據(jù)層。三層B/S體系結(jié)構(gòu)可避免兩層體系結(jié)構(gòu)中客戶(hù)端程序單獨(dú)實(shí)現(xiàn)應(yīng)用邏輯而產(chǎn)生的冗余;應(yīng)用邏輯可在應(yīng)用邏輯層上而不是在客戶(hù)層上實(shí)現(xiàn)。由于表示層與應(yīng)用邏輯相分離,因而降低了網(wǎng)絡(luò)傳送的信息量,使系統(tǒng)具有更高的可伸縮性、可維護(hù)性和靈活性。本文討論的嵌入式方案的基本結(jié)構(gòu)如圖6所示。

          12f.JPG

          4 結(jié)束語(yǔ)
          本文推出的方案對(duì)每臺(tái)現(xiàn)場(chǎng)設(shè)備均配有微型嵌入式Web服務(wù)器,可負(fù)責(zé)對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)轉(zhuǎn)發(fā)以及與監(jiān)控主機(jī)進(jìn)行數(shù)據(jù)的交互。該方案的優(yōu)點(diǎn)是實(shí)時(shí)性強(qiáng)、可靠性高、現(xiàn)場(chǎng)設(shè)備的數(shù)量不受限制等。

          linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: 嵌入式

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();