<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于W3150A+的嵌入式Web服務(wù)器設計

基于W3150A+的嵌入式Web服務(wù)器設計

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

③瀏覽器POST:

用于瀏覽器客戶(hù)端與的信息交互。類(lèi)似報文如下:

其中,IPladdr=192.100.20.50IP2addr=192.100.1.200…為POST提交的表單正文。解析時(shí),“IPladdr”為變量名,“=192.100.20.50”為變量值,“”為變量分割符。據此可以得到從瀏覽器上輸入的參數值。

(2)HTTP協(xié)議的實(shí)現

根據HTTP報文的特點(diǎn),即HTTP請求、POST提交表單參數、HTTP應答等,提供解析函數:

bool HttpStringParse(uchaI*recvBuff);

對接收到的數據緩沖區recvBuff進(jìn)行解析,以得知是HTTP請求還是POST提交參數,然后根據情況進(jìn)行HTTP應答。

提交的表單參數解析則根據分隔符對變量及變量值進(jìn)行處理。

在響應某瀏覽器的請求后應及時(shí)關(guān)閉其TCP連接,以便其他瀏覽器能夠訪(fǎng)問(wèn)此。

為了編程方便,提供以下宏定義供參考:

其中:

HTTP_ACK_HEAD為Web服務(wù)器收到HTTP請求時(shí)進(jìn)行響應的正確應答頭。

HTTP_ACK_CONT_TYPE為通知瀏覽器Web服務(wù)器的應答報文格式為HTML格式。

HTTP_ACK_CONT_LEN為Web服務(wù)器的報文長(cháng)度。此長(cháng)度必須與正文長(cháng)度保持一致。

HTTP_ACK_CONNECT用于Web服務(wù)器在響應某瀏覽器的請求后關(guān)閉其TCP連接。

3.3 HTML語(yǔ)言編寫(xiě)網(wǎng)頁(yè)

由于未采用文件系統,系統的網(wǎng)頁(yè)內容也不多,因此可以開(kāi)辟1片RAM區,根據應用需要適當分配Web緩沖區。本應用中分配了20K WebBuf[]。

網(wǎng)頁(yè)的內容以字符串的形式保存在WebBuf[]中,在需要響應時(shí),按HTTP協(xié)議輸出RAM內容。

HTML語(yǔ)言教程,可參考Internet網(wǎng)上資料。

由于沒(méi)有文件系統,所有網(wǎng)頁(yè)都是以數據(字符數組)的形式存放在RAM中的。當有超鏈接請求時(shí),再重新生成響應數據同時(shí)刷新WebBuf[]。

這里提供一個(gè)簡(jiǎn)單的函數以實(shí)現html語(yǔ)言的編輯功能,供參考。

此函數實(shí)際上是利用sprintf()把html語(yǔ)言寫(xiě)的字符串存入RAM緩沖區WebBuf[],并得到數據正文的長(cháng)度。以同樣方法,將html語(yǔ)言網(wǎng)頁(yè)中的其他內容全部利用sprintf()函數寫(xiě)入WebBuf[]緩沖區。

3.4 Web服務(wù)器的應用層實(shí)現

本應用中使用μC/OS-II操作系統,建立一個(gè)任務(wù)taskWebServer()來(lái)實(shí)現相關(guān)Web的應用,負責管理Web相關(guān)處理事務(wù),如瀏覽器的訪(fǎng)問(wèn)請求、瀏覽器的參數提交等。

流程如圖2所示,任務(wù)taskWebServer()等待接收到報文事件的觸發(fā),未接收到瀏覽器請求時(shí)處于掛起狀態(tài)。當taskWebServer()收到HTTP請求后進(jìn)行報文解析,成功解析后根據報文類(lèi)型進(jìn)行相應的處理。輸出網(wǎng)頁(yè)時(shí),先進(jìn)行應答頭的處理,然后緊跟著(zhù)的是Web正文數據,此正文數據由HTML語(yǔ)言構成。在處理完成后對Flag標志復位,使任務(wù)taskWebServer()重新處于掛起狀態(tài),等待下一次瀏覽器請求或提交參數處。

3.5權限管理

在應用中往往需要對訪(fǎng)問(wèn)或參數的設置進(jìn)行權限管理。提供密碼機制是最簡(jiǎn)單有效的手段??梢栽诖a中加入JavaScript腳本。

用一些較簡(jiǎn)單的JavaScript腳本實(shí)現一些控制功能。此方面可參考一些相關(guān)資料。

4系統的擴展及延伸

當使用軟協(xié)議棧實(shí)現TCP/IP方式時(shí),對處理器提出了更高的要求。對于8/16位單片機,由于其所具有的資源和處理能力有限,不能保證最基本功能的TCP/IP協(xié)議棧和操作系統的有效運行。

選用+芯片來(lái)實(shí)現TCP/IP協(xié)議棧,可以大大降低主控微處理器在處理TCP/IP軟協(xié)議棧時(shí)的CPU消耗,以充分發(fā)揮微處理器對其他相關(guān)應用的處理能力。即使采用普通的單片機,也可滿(mǎn)足一般的應用需求。

當整個(gè)系統應用不復雜時(shí)也可不采用操作系統,以簡(jiǎn)化軟件架構和縮短軟件的開(kāi)發(fā)周期。

結語(yǔ)

芯片+實(shí)現的Web服務(wù)器功能,縮短了軟件的開(kāi)發(fā)周期并降低了TCP/IP的實(shí)現難度。嵌入式操作系統和高性能的ARM處理器相配合,充分發(fā)揮了系統的各方面性能。

對于一些不復雜的Web應用,不采用文件系統而采用RAM緩沖區的方法可以很好地實(shí)現Web服務(wù)器功能。在PC電腦上,通過(guò)在IE瀏覽器的地址欄中輸入裝置的IP地址,可以訪(fǎng)問(wèn)該裝置,顯示其運行參數、軟件版本,并進(jìn)行參數的配置或一些必要的說(shuō)明,等等。

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

tcp/ip相關(guān)文章:tcp/ip是什么



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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>