国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ARM7的嵌入式Web服務器設計技術

2010-09-25 02:58劉濱陳文芳王永才
關鍵詞:客戶機表單報文

劉濱,陳文芳,王永才

(中國海洋大學 工程學院2332實驗室,青島 266100)

1 概 述

隨著嵌入式技術和網(wǎng)絡技術的發(fā)展,嵌入式設備通過網(wǎng)絡接入局域網(wǎng)或者Internet逐步成為一種發(fā)展趨勢。嵌入式Web服務器技術以其良好的通用性和交互性為嵌入式設備提供網(wǎng)絡接口,對嵌入式設備實現(xiàn)遠程管理和控制,是實現(xiàn)嵌入式設備網(wǎng)絡化的重要技術。

本設計提出的基于ARM7的嵌入式Web服務器設計有三大技術亮點:

①采用瀏覽器/服務器(B/S)通信架構(gòu)。與客戶機/服務器通信架構(gòu)相比,B/S架構(gòu)無需在客戶端上開發(fā)專門的應用軟件,只需從瀏覽器上輸入IP地址,直接對設備進行遠程監(jiān)控。

②傳統(tǒng)的Web服務器需要一個數(shù)據(jù)庫系統(tǒng)的支持用來保存內(nèi)容,因而對用于存儲的硬件設備要求更高,增加了成本。本設計只需構(gòu)建一個簡單的文件系統(tǒng)對網(wǎng)頁文件進行管理,通過網(wǎng)頁轉(zhuǎn)換程序?qū)⒕W(wǎng)頁文件轉(zhuǎn)換為十六進制的可編譯的數(shù)據(jù)結(jié)構(gòu),是一種直接綁定在一個應用程序上面的文件系統(tǒng)。

③本設計構(gòu)造的Web服務器提供動態(tài)內(nèi)容和動態(tài)表單的支持,能滿足一般嵌入式設備的應用要求。

2 HTTP協(xié)議討論

HTTP(超文本傳輸協(xié)議)是一種應用層協(xié)議。Web服務器是基于HTTP協(xié)議運行的,Web服務器和Web客戶機之間通過HTTP協(xié)議來進行通信。在進行通信前,先要建立客戶機與服務器之間的連接:啟動Web服務器,啟動后服務器將監(jiān)聽80端口號,Web客戶機發(fā)送一個動態(tài)隨機產(chǎn)生的連接端口號連上服務器,從而建立一個通信通道。

HTTP協(xié)議基于請求/響應模式。一個客戶機與服務器建立好連接后,向服務器發(fā)送一個請求報文,服務器接到請求后給予相應的響應信息。響應信息的格式為一個狀態(tài)行(包括信息的HTTP協(xié)議版本號、一個成功或錯誤的代碼),再跟上MIME信息(包括某些通用且詳細的有關應答的信息,如可選報頭、報文報體等)。HTTP協(xié)議結(jié)構(gòu)如圖1所示。

3 嵌入式Web服務器的設計

3.1 嵌入式Web服務器設計思想

嵌入式Web服務器主要有以下2個用途:根據(jù)Web客戶機的請求為其提供設備運行狀態(tài)、參數(shù);從客戶機提取控制信息,更改設備運行參數(shù)等。由于嵌入式系統(tǒng)資源的有限性,本文設計的Web服務器具有很強的針對性,具體包含以下性能:

圖1 HTTP協(xié)議結(jié)構(gòu)

①對動態(tài)內(nèi)容和動態(tài)表單的支持,Web服務器只需處理GET和POST請求方法,無需提供對其他請求方法的支持。

②用于內(nèi)容保存的“應用程序”文件系統(tǒng),即將內(nèi)容文件轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu),直接綁定在一個應用程序上面。

③嵌入式Web服務器只實現(xiàn)與系統(tǒng)控制相關的頁面。

嵌入式Web服務器模型層次如圖2所示。

圖2 嵌入式Web服務器模型層次

3.2 對動態(tài)內(nèi)容和動態(tài)表單的實現(xiàn)

先編寫一個包含<DATA x>動態(tài)標志和表單的HTM L文件,再分別編寫動態(tài)內(nèi)容處理功能函數(shù)和表單分析處理函數(shù)。在建立HTTP服務器套接字之前,需要先安裝好自己句柄,將網(wǎng)頁中的動態(tài)標識與其對應的動態(tài)內(nèi)容處理功能函數(shù),以及表單標識與表單分析處理函數(shù)相關聯(lián)。圖2中的動態(tài)內(nèi)容/句柄API就是用來提供變量名/表單名與用戶定義功能之間的聯(lián)系。

動態(tài)內(nèi)容安裝句柄:

addDynamicContent("temperature",&getTemper);

表單安裝句柄:

addDynamicHandler("/control",&myHandler);

其中,temperature和/control分別為網(wǎng)頁中的動態(tài)內(nèi)容標識和表單標識,getTemper和myHandler分別為動態(tài)內(nèi)容處理功能函數(shù)和表單分析處理函數(shù)。

這樣,每當有GET請求時,動態(tài)內(nèi)容處理功能函數(shù)的返回值將替代動態(tài)標志的值嵌入到內(nèi)容流中。每當有POST請求時,表單分析處理函數(shù)調(diào)用parseVarialbe功能,簡單地在內(nèi)容中查找變量名。一旦發(fā)現(xiàn),這個值便被復制到用戶緩沖器中,直到發(fā)現(xiàn)分界符“&”。POST構(gòu)造一個包括報體的HTTP請求報文,發(fā)送給Web服務器。該報文按照鍵值對其進行組裝,使用符號“&”分隔。

3.3 嵌入式Web服務器主程序

嵌入式Web服務器主程序流程如圖3所示。本設計中使用的Web服務器套接字是典型的TCP流套接字。通過socket()創(chuàng)建一個套接字,使用bind()將該套接字綁定在80端口上,通過listen()設定監(jiān)聽的連接數(shù),最后調(diào)用accept()等待Web客戶機的連接請求。一個套接字支持一個請求,不能支持永久型連接。當服務器接收到一個連接時,功能函數(shù)handleConnection()對用戶請求進行解析,根據(jù)返回的內(nèi)容關閉客戶機套接字,然后等待另一個套接字請求。

對handleConnection()功能函數(shù)(請求報文分析程序)分析如下:

①在HTTP請求報文中進行讀操作,從該套接字循環(huán)讀取,直到滿足以下兩個條件之一:查找到Content_Length報頭,確定報文報體大小;請求若為post方法,簡單地查找+QUERY文本。

②處理HTTP請求類型。對請求報文的第一個令牌進行識別。如果為GET請求,則從中分析請求的文件名,使用lookupFilename()功能函數(shù)查找該文件名,若沒有則發(fā)送適當?shù)臓顟B(tài)碼給請求者,若有則調(diào)用 returnFile原語通過套接字來發(fā)送請求文件。如果為 HTTP POST請求,則再次分析文件名,然后通過callDynamicHandle功能函數(shù)調(diào)用一個用戶定義的功能處理請求。若既非GET請求,也非POST請求,則返回狀態(tài)碼“not implemented”。

圖3 嵌入式Web服務器主程序流程

4 應用程序文件系統(tǒng)的構(gòu)造

本設計使用一個特殊的buildfs應用程序?qū)⒕W(wǎng)頁文件編譯為順序的數(shù)據(jù)結(jié)構(gòu),它將網(wǎng)頁文件所在的目錄路徑作為變量,將這個變量作為內(nèi)容樹的根。遍歷內(nèi)容樹,將遇到的每個文件累計到應用程序文件系統(tǒng)結(jié)構(gòu)中,并寫入文件filedata.c。文件filedata.c作為工程文件的一部分,一同被編譯、下載到硬件上。buildfs生成的應用程序文件系統(tǒng)結(jié)構(gòu)如表1所列。當定位一個文件時,只需找到文件報頭,將文件項目的文件名和源文件名進行比較。若文件匹配,則可將后來檢索的元素調(diào)出。

表1 應用程序文件系統(tǒng)結(jié)構(gòu)

本設計采用HTM L語言設計的嵌入式網(wǎng)頁文件如圖4所示。使用buildfs應用程序生成該網(wǎng)頁文件的數(shù)據(jù)結(jié)構(gòu),如圖5所示。

圖4 Web瀏覽器打開的網(wǎng)頁文件

5 測試HTTP服務器的應用實例

本設計的軟件平臺構(gòu)成如圖6所示。硬件平臺由NXP公司的32位ARM7微處理器LPC2210和RTL8019AS網(wǎng)卡芯片構(gòu)成,如圖7所示。LPC2210是基于一個支持實時仿真和嵌入跟蹤的32/16位ARM7TDMI-S CPU。

圖5 網(wǎng)頁文件數(shù)據(jù)結(jié)構(gòu)

圖6中TCP/IP協(xié)議棧使用周立功公司提供的ZLG/IP軟件包。修改軟件包中的cfg_net.h文件,子網(wǎng)掩碼設置為與PC機相同,IP地址設置為192.168.0.174(與PC機同一網(wǎng)段),網(wǎng)關設為PC機的IP地址。用雙絞線將PC機與RJ45以太網(wǎng)接口相連,啟動微處理器 LPC2210。在PC機上打開Web瀏覽器,在地址欄輸入http://192.168.0.174/server.html,將出現(xiàn)如圖4所示的網(wǎng)頁文件。此時,測得的室內(nèi)溫度為26℃。在Parameters Setting欄中輸入預設溫度和開關的開或關,單擊 Upload按鈕,在Web服務器的表單分析程序中會將預設值和開關值復制到用戶緩沖器中,從而進行相應的處理。

圖6 服務器實例軟件平臺構(gòu)成

圖7 服務器實例硬件平臺構(gòu)成

結(jié) 語

本文介紹了基于ARM7微處理器LPC2210的嵌入式Web服務器的設計方法,并用一個應用實例對其進行了驗證。結(jié)果表明,該方法是可行的,可用于對嵌入式設備進行遠程監(jiān)控的應用中。

[1]Jones M Tim.嵌入式系統(tǒng)TCP/IP應用層協(xié)議[M].北京:電子工業(yè)出版社,2003.

[2]周立功,等.ARM與嵌入式系統(tǒng)基礎編程,2004.

[3]周立功,等.嵌入式系統(tǒng)軟件開發(fā)實例[M].北京:北京航空航天大學出版社,2004.

猜你喜歡
客戶機表單報文
基于J1939 協(xié)議多包報文的時序研究及應用
電子表單系統(tǒng)應用分析
CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
淺析反駁類報文要點
淺談網(wǎng)頁制作中表單的教學
ATS與列車通信報文分析
動態(tài)表單技術在教學管理中的應用*
基于Java可視化測繪生產(chǎn)流程表單的設計及實現(xiàn)
瘦客戶機:安全與便捷的選擇
升騰瘦客戶機借神碼翱翔“云端”
延长县| 兴业县| 久治县| 博野县| 临夏市| 汝南县| 长海县| 海南省| 中超| 巴彦县| 渑池县| 囊谦县| 通辽市| 凤城市| 云和县| 湘阴县| 双牌县| 县级市| 尉犁县| 渭南市| 全州县| 大足县| 桂平市| 惠来县| 蒙阴县| 民县| 屏东县| 沙雅县| 桂林市| 辽宁省| 红河县| 扬中市| 随州市| 清涧县| 兰坪| 科技| 东辽县| 即墨市| 淅川县| 滁州市| 潞城市|