資料介紹
利用GoAhead構(gòu)建嵌入式web應(yīng)用
關(guān)鍵字:GoAhead, 嵌入式web服務(wù)器, web應(yīng)用
摘要:詳細(xì)介紹了開源嵌入式web服務(wù)器GoAhead的原理,并結(jié)合具體實(shí)例說明如何利用它構(gòu)建嵌入式web應(yīng)用。
Key words: GoAhead, embedded web server, web application
Abstract: This paper introduces the principle of open source embedded web server GoAhead, and explains how to build embedded web application using GoAhead combined with practical examples.
1 簡(jiǎn)介
廉價(jià)的硬件,功能強(qiáng)大的32操作系統(tǒng),以及無處不在的因特網(wǎng),它們一起促成了網(wǎng)絡(luò)應(yīng)用和設(shè)備的飛速增長(zhǎng)。大量的設(shè)備連接到網(wǎng)絡(luò)上,于是人們希望通過一種通用、熟悉、快捷的方式來訪問和控制它們。嵌入式web服務(wù)器正好迎合了這種需求,它們嵌入在網(wǎng)絡(luò)設(shè)備之中,使用標(biāo)準(zhǔn)的瀏覽器就可以遠(yuǎn)程訪問和控制它們。
然而,并不是所有的web服務(wù)器都可以擔(dān)當(dāng)如此重任,我們需要的是一個(gè)強(qiáng)大,安全,標(biāo)準(zhǔn)的,而且最好是久經(jīng)考驗(yàn)的嵌入式web服務(wù)器。這里將要介紹的GoAhead嵌入式web服務(wù)器能夠滿足所有這些需求,包括西門子,霍尼韋爾,惠普等大型企業(yè)都在使用GoAhead。
2 嵌入式web服務(wù)器的要求
2.1 易于與設(shè)備集成
易于與設(shè)備集成包含兩個(gè)方面的意思,其一是將Web應(yīng)用程序集成到實(shí)時(shí)操作系統(tǒng),其二是可以在Web應(yīng)用中輕松訪問硬件功能。由于GoAhead是開放源代碼的,因此這一點(diǎn)不難做到。
2.2 支持將Web頁面存儲(chǔ)在ROM中
許多嵌入式系統(tǒng)并沒有文件系統(tǒng),因此有必要將web頁面保存到ROM中。GoAhead支持對(duì)web頁面進(jìn)行編譯并將它們鏈接到最終的可執(zhí)行文件中。
2.3 加密和用戶管理
GoAhead服務(wù)器支持使用SSL進(jìn)行數(shù)據(jù)加密和認(rèn)證。同時(shí),它也支持摘要認(rèn)證機(jī)制,一種總是加密密碼的更安全的認(rèn)證機(jī)制。用戶管理功能允許不同的用戶具有不同級(jí)別的訪問權(quán)限。
除了上述要求之外,是否能夠快速、方便的生成動(dòng)態(tài)頁面是衡量一個(gè)嵌入式web服務(wù)器的重要指標(biāo)。GoAhead提供了多種方法編寫動(dòng)態(tài)頁面,包括asp過程、GoForms過程和embedded JavaScript。GoAhead主要利用asp過程動(dòng)態(tài)獲取系統(tǒng)信息然后顯示在頁面上,GoForms過程則主要用來處理用戶指令,例如控制設(shè)備和修改配置等。下面以一個(gè)動(dòng)態(tài)顯示系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程信息的小型web應(yīng)用程序?yàn)槔U述如何利用GoAhead構(gòu)建嵌入式web應(yīng)用程序,特別是asp和GoForms過程的使用方法。
3 動(dòng)態(tài)頁面支持
在嵌入式設(shè)備中,大部分web頁面都是動(dòng)態(tài)生成的。生成動(dòng)態(tài)頁面的方法主要有兩種,通過C代碼生成HTML標(biāo)簽和在HTML頁面中嵌入表達(dá)式標(biāo)簽。直接通過C代碼生成頁面的優(yōu)點(diǎn)是靈活,但是卻犧牲了友好性,因?yàn)椴坏介_始運(yùn)行程序的最后一刻,你不可能知道這個(gè)頁面看起來會(huì)是個(gè)什么樣子。相比之下,第二種方法更加直觀,你可以使用你所喜歡的工具以所見即所得的方式編輯頁面,在必要的地方添加占位符,運(yùn)行時(shí)它們會(huì)被動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)代替。GoAhead完全支持這兩種方式。
為了方便的創(chuàng)建具有高度交互性的動(dòng)態(tài)網(wǎng)頁,GoAhead提供了asp過程和GoForms過程兩種武器。它們實(shí)際上都與定義在服務(wù)器端的某個(gè)C函數(shù)綁定在一起,只是分工不同,asp過程用來生成顯示在頁面中的動(dòng)態(tài)數(shù)據(jù),而GoForms過程則用來處理用戶輸入和修改設(shè)置,它們一起構(gòu)成了GoAhead的核心。
3.1 ASP過程
ASP最初用于IIS中,它是微軟開發(fā)的生成動(dòng)態(tài)Web頁面的服務(wù)器端技術(shù)。現(xiàn)在已經(jīng)被移植到包括GoAhead的各種平臺(tái)中,使用ASP的網(wǎng)頁的后綴一般為“.asp”。為了在Web頁面中嵌入ASP腳本,只需使用特殊的標(biāo)簽“《%” 和 “%》”將腳本包裹起來。之所以使用ASP標(biāo)簽?zāi)康氖菫榱讼蛴脩麸@示動(dòng)態(tài)內(nèi)容,例如系統(tǒng)進(jìn)程信息等。因?yàn)閯?dòng)態(tài)內(nèi)容實(shí)際上是在執(zhí)行特定的C函數(shù)生成的,所以需要將web頁面中的ASP標(biāo)簽與特定的C函數(shù)聯(lián)系在一起。一般,整個(gè)過程大致可以分成以下三個(gè)步驟:
1. 設(shè)計(jì)web頁面,動(dòng)態(tài)內(nèi)容使用特定的asp過程名替代,也稱其為一個(gè)占位符。
2. 在某個(gè).c文件中定義與asp過程對(duì)應(yīng)的C函數(shù)
3. 在main.c文件中的initWebs函數(shù)中使用websAspDefine注冊(cè)asp過程
以清單1中的《% UpdateProcInfor(); %》標(biāo)簽為例,此標(biāo)簽的目的是為了顯示系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程的信息。獲取進(jìn)程信息實(shí)際上是由位于ui.c中的UpdateProcInfo函數(shù)完成的,詳見清單2,它負(fù)責(zé)獲取系統(tǒng)進(jìn)程信息,并格式化為HTML輸出。清單3中的websAspDefine函數(shù)將《% UpdateProcInfor(); %》標(biāo)簽與UpdateProcInfo函數(shù)關(guān)聯(lián)起來,這樣當(dāng)GoAhead解析home.asp頁面遇到《% UpdateProcInfor(); %》標(biāo)簽時(shí),控制權(quán)就會(huì)跳轉(zhuǎn)到UpdateProcInfor()函數(shù),在輸出以HTML格式表示的進(jìn)程信息后,控制權(quán)轉(zhuǎn)交給GoAhead繼續(xù)解析home.asp頁面。
注意:asp過程必須符合原型:int AspProcName (int ejid, webs_t wp, int argc, chart_t **argv);
其中,ejid參數(shù)作為JavaScript解釋器句柄可以用來調(diào)用JavaScript相關(guān)函數(shù),例如ejGetVar和ejSetResult。wp參數(shù)作為瀏覽器連接的句柄,可以用來調(diào)用很多有用的GoAhead服務(wù)器函數(shù),例如用來輸出HTML語句的websWrite等。argc和argv包含傳遞給asp過程的實(shí)參的個(gè)數(shù)和內(nèi)容。
//清單1:home.asp(省略了其它無關(guān)的部分,細(xì)節(jié)請(qǐng)參考附帶源代碼)
《html》
《head》
《% WriteMetaElement(); %》
《/head》
…
《form action=“/goform/UpdateConfig” method=“post”》
《input type=“text” name=“interval” value=“” size=“7” /》
《input type=“submit” name=“ok” value=“Update” /》
《input type=“reset” name=“cancel” value=“Reset” /》
《/form》
《% UpdateProcInfo(); %》
《/html》
//清單2:ui.c
#include “ui.h”
#include “。.\webs.h”
//以HTML格式輸出系統(tǒng)當(dāng)前進(jìn)程信息
int UpdateProcInfo(int ejid, webs_t wp, int argc, char_t *argv)
{
return WriteProcPage(wp);
}
//根據(jù)用戶輸入改變刷新間隔時(shí)間設(shè)置
void UpdateConfig(webs_t wp, char_t *path, char_t *query)
{
int tmpInterval=_ttoi(websGetVar(wp, L“interval”, L“-1”));
if(tmpInterval》3)
{
s_interval=tmpInterval;
}
websRedirect(wp, L“home.asp”);
}
//清單3:main.c文件中的initWebs()函數(shù)
#include “ui.h”
//關(guān)聯(lián)asp標(biāo)簽和C函數(shù)名字
websAspDefine(T(“UpdateProcInfo”), UpdateProcInfo);
websAspDefine(T(“WriteMetaElement”), WriteMetaElement);
//關(guān)聯(lián)GoForms標(biāo)簽和C函數(shù)名字
websFormDefine(T(“UpdateConfig”), UpdateConfig);
3.2 GoForms過程
GoAhead實(shí)現(xiàn)了稱為GoForms的標(biāo)準(zhǔn)的通用網(wǎng)關(guān)接口(CGI)處理用戶提交的表單。與傳統(tǒng)的CGI方法不同,GoForms過程不是為每個(gè)瀏覽器連接都創(chuàng)建一個(gè)新的進(jìn)程,而是通過與GoAhead服務(wù)器共享地址空間,于是可以直接訪問全部的請(qǐng)求上下文。GoForms處理器可以自動(dòng)解析和訪問所有的POST和查詢數(shù)據(jù),它也提供了一組API可以輕松訪問CGI變量。
GoForms過程與ASP過程不同,它主要用來響應(yīng)用戶輸入以更新系統(tǒng)設(shè)置或者執(zhí)行特定的動(dòng)作。在GoAhead中,GoForms實(shí)現(xiàn)為一個(gè)URL處理器,它會(huì)解釋以“/goform”開始的URLs。緊跟著“goform”之后的字符串定義了表單名字和用戶請(qǐng)求的細(xì)節(jié)。例如:“/goform/ UpdateConfig?interval=5”這個(gè)請(qǐng)求表示調(diào)用GoForms過程“ UpdateConfig ”,GoForms變量interval表示用戶設(shè)置的新刷新間隔時(shí)間。GoAhead對(duì)ASP過程和GoForms過程的處理十分類似,只是GoForms過程通過websFormDefine函數(shù)調(diào)用進(jìn)行關(guān)聯(lián),并且必須遵守原型“void GoFormsProcName(webs_t wp, char_t *path, char_t *query);”。完整的GoForms過程示例請(qǐng)參考列表1-3中的用來處理用戶請(qǐng)求的UpdateConfig過程。
- 嵌入式web服務(wù)器系統(tǒng),嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
- 嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),基于-ARM簡(jiǎn)單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計(jì).doc
- 嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
- 嵌入式web服務(wù)器
- 基于ARM的嵌入式Web服務(wù)器設(shè)計(jì)方案 20次下載
- 基于Android的嵌入式Web服務(wù)器設(shè)計(jì) 177次下載
- 基于CGI技術(shù)的嵌入式動(dòng)態(tài)Web的研究與實(shí)現(xiàn) 81次下載
- 嵌入式Web服務(wù)器的實(shí)現(xiàn)及其CGI應(yīng)用 79次下載
- 嵌入式系統(tǒng)的構(gòu)建教程
- 基于SOPC的嵌入式Web服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)
- 基于ARM的嵌入式Web服務(wù)器的研究與實(shí)現(xiàn)
- 基于嵌入式Web實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)
- 基于嵌入式WEB的AllLightSYS系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 由ARM 與μClinux 構(gòu)建的嵌入式Web Server
- 嵌入式Web 服務(wù)器的分析與研究
- 基于AMD、ARM、Intel和NVIDIA技術(shù)構(gòu)建的嵌入式工控機(jī) 574次閱讀
- 用C語言構(gòu)建高效的嵌入式程序 647次閱讀
- 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應(yīng)用 2565次閱讀
- 基于雙以太網(wǎng)處理器Jupiter實(shí)現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)的設(shè)計(jì) 3836次閱讀
- 基于ENC28J60芯片和TCP/IP協(xié)議棧實(shí)現(xiàn)微型嵌入式Web服務(wù)器的設(shè)計(jì) 3238次閱讀
- 基于WEB技術(shù)與嵌入式技術(shù)實(shí)現(xiàn)對(duì)設(shè)備的控制與診斷 705次閱讀
- 利用嵌入式系統(tǒng)與Internet相連接實(shí)現(xiàn)Web服務(wù)器的應(yīng)用 4458次閱讀
- 嵌入式Web服務(wù)器BOA移植與測(cè)試設(shè)計(jì)概述 1864次閱讀
- 基于嵌入式系統(tǒng)的Web服務(wù)器建立設(shè)計(jì) 3319次閱讀
- 基于MicroBlaze軟核處理器的嵌入式Web服務(wù)器設(shè)計(jì)詳解 1221次閱讀
- 基于Qtopia的嵌入式俄文環(huán)境詳解 1433次閱讀
- 關(guān)于嵌入式系統(tǒng)以及嵌入式平臺(tái)下的學(xué)科分工詳解 2025次閱讀
- 構(gòu)建eCos嵌入式系統(tǒng)的步驟教程 3987次閱讀
- 嵌入式視覺系統(tǒng)的構(gòu)建模塊 1644次閱讀
- 一種嵌入式Web服務(wù)器的設(shè)計(jì)方案 4306次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發(fā)板資料
- 34.89 MB | 1次下載 | 免費(fèi)
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
- 3.32 MB | 1次下載 | 免費(fèi)
- 8聯(lián)想A820t手機(jī)維修圖紙包括主板原理圖 尾板原理圖 點(diǎn)位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
- 0.50 MB | 94次下載 | 1 積分
- 4長(zhǎng)虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場(chǎng)效應(yīng)晶體管的數(shù)據(jù)手冊(cè)
- 0.11 MB | 28次下載 | 2 積分
- 8長(zhǎng)虹液晶彩電LS29機(jī)芯的技術(shù)資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論