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

?

嵌入式Web的遠(yuǎn)程數(shù)據(jù)交互式設(shè)計(jì)

2013-10-10 01:57:20吳輝侯思祖
關(guān)鍵詞:服務(wù)器端瀏覽器網(wǎng)頁(yè)

吳輝,侯思祖

(華北電力大學(xué) 電氣與電子工程學(xué)院,保定071003)

引 言

隨著物聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,進(jìn)一步推動(dòng)了嵌入式系統(tǒng)網(wǎng)絡(luò)化進(jìn)程,使得嵌入式系統(tǒng)變得越來(lái)越智能。由于芯片制造工藝的顯著提高,各種高性能的處理器相繼推出,使用嵌入式系統(tǒng)接入Internet成為一種趨勢(shì)[1]。把 Web技術(shù)用于遠(yuǎn)程監(jiān)控或其他嵌入式系統(tǒng)中,用戶通過(guò)瀏覽器就可以對(duì)遠(yuǎn)程設(shè)備進(jìn)行控制和監(jiān)測(cè),使得用戶能夠?qū)崟r(shí)地了解設(shè)備的運(yùn)行情況。

1 嵌入式Web服務(wù)器

嵌入式系統(tǒng)是一種專用的計(jì)算機(jī)系統(tǒng),是為某種應(yīng)用而定制的計(jì)算機(jī)系統(tǒng)。嵌入式Internet是指設(shè)備通過(guò)嵌入式模塊接入Internet,以Internet作為傳輸介質(zhì)實(shí)現(xiàn)信息的交互與訪問(wèn)。一個(gè)帶有微處理器并且能夠連接Internet的設(shè)備就是一個(gè)嵌入式Internet系統(tǒng)??梢酝ㄟ^(guò)Web進(jìn)行信息交互的嵌入式Internet系統(tǒng)被稱作嵌入式Web服務(wù)器。嵌入式Web服務(wù)器具有體積小、成本低、功能簡(jiǎn)單等特點(diǎn)。

嵌入式Web服務(wù)器以LM3S8962為核心,LM3S8962集成豐富的片上資源:含有256KB單周期Flash、64KB單周期訪問(wèn)的SRAM、4個(gè)通用定時(shí)模塊、1個(gè)10/100M以太網(wǎng)控制器、三個(gè)可編程UART接口等。LM3S8962以太網(wǎng)控制器遵循IEEE802.3規(guī)范,完全支持10BASE-T和100BASE-TX標(biāo)準(zhǔn),含有100BASE-TX擾碼器、解碼器,支持全功能的自協(xié)商協(xié)議,支持全雙工、半雙工和掉電模式,而且具有可編程MAC地址。采用LM3S8962可省略網(wǎng)絡(luò)控制芯片。溫度采集主要由LM3S8962內(nèi)部溫度傳感器實(shí)現(xiàn),采樣率可達(dá)500 000sps。光強(qiáng)采集由小塊的太陽(yáng)能電板代替光傳感器,太陽(yáng)能電板根據(jù)光強(qiáng)的變化改變輸出電壓。通過(guò)A/D轉(zhuǎn)換器檢測(cè)電壓的變化來(lái)判斷光強(qiáng)的變化。LED亮度通過(guò)調(diào)節(jié)輸出PWM的占空比來(lái)改變。嵌入式Web交互式框圖如圖1所示。

圖1 嵌入式Web交互式框圖

2 嵌入式Web交互式原理

Web通信是基于TCP協(xié)議進(jìn)行的,但它與一般的TCP協(xié)議不同的是,在TCP通信的基礎(chǔ)之上經(jīng)過(guò)HTTP協(xié)議傳輸??蛻舳送ㄟ^(guò)Web頁(yè)面請(qǐng)求數(shù)據(jù),嵌入式Web服務(wù)器收到客戶端發(fā)送的HTTP請(qǐng)求時(shí),作出對(duì)應(yīng)的響應(yīng),從而完成客戶端與嵌入式Web服務(wù)器之間數(shù)據(jù)的動(dòng)態(tài)交互。

2.1 CGI和SSI

CGI(Common Gateway Interface)是一段程序,運(yùn)行在嵌入式Web服務(wù)器上,提供與瀏覽器HTML頁(yè)面的接口。簡(jiǎn)單地說(shuō)就是用戶在客戶端(瀏覽器)中輸入信息,瀏覽器把這些信息傳輸?shù)角度胧絎eb服務(wù)器CGI目錄下對(duì)應(yīng)的CGI程序中,于是CGI程序在嵌入式Web服務(wù)器上按照預(yù)定的方法進(jìn)行處理。然后,CGI程序給客戶端發(fā)送一個(gè)信息,表示請(qǐng)求的任務(wù)已經(jīng)結(jié)束。

SSI(Server Side Include,服務(wù)器端包含)是一種類似于ASP的基于服務(wù)器的網(wǎng)頁(yè)制作技術(shù)。在將內(nèi)容發(fā)送到瀏覽器之前,可以使用“服務(wù)器端包含 (SSI)”指令將文本、圖形或應(yīng)用程序信息包含到網(wǎng)頁(yè)中。服務(wù)器接收到一個(gè)請(qǐng)求后,會(huì)在網(wǎng)頁(yè)數(shù)據(jù)中搜索<?。?tag-->格式標(biāo)記,并記錄這些tag標(biāo)志,在嵌入式Web服務(wù)器處理完請(qǐng)求后需要返回給用戶數(shù)據(jù)時(shí),找出系統(tǒng)已經(jīng)注冊(cè)的tag,并在相應(yīng)的tag-->后添加所需要的數(shù)據(jù)。最后,把更新的數(shù)據(jù)發(fā)送給用戶,從而實(shí)現(xiàn)了用戶與嵌入式Web服務(wù)器之間的動(dòng)態(tài)交互過(guò)程。

2.2 XMLHTTPRequest

XMLHTTPRequest是由一組方法和屬性組成的對(duì)象,是AJAX技術(shù)的核心,所謂的異步交互和局部刷新都是建立在XMLHTTPRequest基礎(chǔ)之上的。XMLHTTPRequest可以在提供不重新加載頁(yè)面的情況下更新網(wǎng)頁(yè),XMLHTTPRequest對(duì)象提供了對(duì)HTTP協(xié)議的完全的訪問(wèn),包括做出POST和HEAD請(qǐng)求以及普通的GET請(qǐng)求的能力。利用JavaScript來(lái)創(chuàng)建XMLHTTPRequest對(duì)象,當(dāng)對(duì)象成功創(chuàng)建以后,調(diào)用open方法來(lái)指定請(qǐng)求的服務(wù)網(wǎng)頁(yè)以及請(qǐng)求方式,然后通過(guò)send方法將請(qǐng)求發(fā)送出去,最后就可以在客戶端接收服務(wù)器端返回的數(shù)據(jù)。

3 嵌入式Web交互式實(shí)現(xiàn)

嵌入式Web服務(wù)器監(jiān)聽(tīng)用戶的請(qǐng)求,根據(jù)用戶遞交的請(qǐng)求提供與之對(duì)應(yīng)的服務(wù),嵌入式Web服務(wù)器端收到用戶請(qǐng)求后,把存儲(chǔ)在嵌入式Web服務(wù)器中對(duì)應(yīng)的數(shù)據(jù)或網(wǎng)頁(yè)發(fā)送給瀏覽器,完成數(shù)據(jù)的動(dòng)態(tài)交互。嵌入式Web數(shù)據(jù)交互式可以通過(guò)CGI/SSI和XMLHTTPRequest方式實(shí)現(xiàn)。

3.1 CGI實(shí)現(xiàn)過(guò)程

CGI是基于標(biāo)準(zhǔn)HTML表單遞交數(shù)據(jù),嵌入式Web服務(wù)器上對(duì)應(yīng)的CGI函數(shù)響應(yīng)客戶端的請(qǐng)求,CGI方式數(shù)據(jù)交互將導(dǎo)致整個(gè)頁(yè)面重新加載。HTML中表單格式如下:

CGI交互式過(guò)程如圖2所示。用戶通過(guò)Internet向嵌入式Web服務(wù)器請(qǐng)求一個(gè)HTML文檔。嵌入式Web服務(wù)器向用戶發(fā)送一個(gè)表單頁(yè)面。用戶填入對(duì)應(yīng)的數(shù)據(jù)信息并提交給嵌入式Web服務(wù)器。服務(wù)器接收用戶請(qǐng)求,交給嵌入式Web服務(wù)器上CGI程序處理。嵌入式Web服務(wù)器將更新的HTML文檔發(fā)送給用戶。

圖2 瀏覽器與嵌入式Web通過(guò)CGI交互

當(dāng)用戶向嵌入式Web服務(wù)器提交數(shù)據(jù)時(shí),采用的是GET方式。輸入的信息以字符串的形式附加action所給定義的URL后面,中間用“?”隔開(kāi),各個(gè)變量之間用“&”分開(kāi),變量與其對(duì)應(yīng)的值之間用“=”連接,空格用“+”代替,特殊意義的字符用“&”表示。在嵌入式 Web服務(wù)器端對(duì)URL進(jìn)行解碼,當(dāng)遇到字符“+”時(shí),將它轉(zhuǎn)換成空格;當(dāng)遇到字符“&”時(shí),表示下一個(gè)變量開(kāi)始;當(dāng)遇到“=”時(shí)表示變量名部分結(jié)束[2]。由于GET請(qǐng)求的內(nèi)容附加在URL后面,而URL的長(zhǎng)度是有限制的,所以一次請(qǐng)求的內(nèi)容不能太多,而嵌入式系統(tǒng)由于其本身就是資源受限系統(tǒng),數(shù)據(jù)的交互不可能太多,所以GET方法用于此是合適的。

CGI處理函數(shù)運(yùn)行于嵌入式Web服務(wù)器端,當(dāng)嵌入式Web服務(wù)器收到客戶端請(qǐng)求的URL之后,解析URL中的參數(shù),提交給對(duì)應(yīng)的CGI處理函數(shù)。字符文本提交的CGI函數(shù)如下:

當(dāng)在Web頁(yè)面中遇到格式為<!--#tag-->的SSI標(biāo)簽時(shí),調(diào)用SSI處理函數(shù),將SSI標(biāo)簽轉(zhuǎn)換成對(duì)應(yīng)的文本在網(wǎng)頁(yè)中顯示。SSI函數(shù)通過(guò)Switch選擇語(yǔ)句,解析Web頁(yè)面中的SSI標(biāo)簽。然后針對(duì)不同的標(biāo)簽內(nèi)容作出對(duì)應(yīng)的響應(yīng)。CGI/SSI數(shù)據(jù)交互流程如圖3所示。

圖3 CGI/SSI數(shù)據(jù)交互流程

3.2 XMLHTTPRequest實(shí)現(xiàn)過(guò)程

XMLHTTPRequest方式通過(guò)嵌入在HTML文檔中的JavaScript來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)的交互過(guò)程??蛻舳送ㄟ^(guò)運(yùn)行HTML文檔中的JavaScript程序發(fā)送HTTP請(qǐng)求。它是一種特殊的URL,嵌入式Web服務(wù)器去文件系統(tǒng)中查找URL中對(duì)應(yīng)的文件。如果查找到對(duì)應(yīng)的文件,嵌入式Web服務(wù)器提供相應(yīng)的響應(yīng),然后將嵌入式Web響應(yīng)返回到客戶端瀏覽器中,返回的狀態(tài)插入到對(duì)應(yīng)的<Div>標(biāo)簽中。XMLHTTPRequest方式只需要更新部分文本,而不需要刷新整個(gè)頁(yè)面,縮短了網(wǎng)絡(luò)延時(shí),提高了網(wǎng)絡(luò)效率。瀏覽器與嵌入式Web通過(guò)XMLHTTPRequest方式交互,如圖4所示。

圖4 瀏覽器與嵌入式Web通過(guò)HTTPRequest方式交互

JavaScript可以將Web服務(wù)器端的任務(wù)部分轉(zhuǎn)移到客戶端,使客戶端實(shí)現(xiàn)處理任務(wù)的功能。XMLHTTPRequest能實(shí)現(xiàn)嵌入式Web與瀏覽器之間的異步交互。JavaScript內(nèi)嵌到網(wǎng)頁(yè)中,使其成為HTML文件的一部分,并通過(guò)JavaScript解釋器完成解釋執(zhí)行。瀏覽器中溫度數(shù)據(jù)請(qǐng)求JavaScript函數(shù)如下:

上述代碼中,Temperature.readyState為HTTP請(qǐng)求的狀態(tài),當(dāng)XMLHttpRequest創(chuàng)建時(shí),其屬性為0。它一共有5個(gè)狀態(tài):Uninitialized(0)、Open(1)、Send(2)、Receiving(3)、Loaded(4)。當(dāng)屬性為4時(shí),表明已經(jīng)接收到完整的HTTP響應(yīng)。Temperature.responseText從服務(wù)器接收的響應(yīng)的溫度信息,當(dāng)Temperature.readyState小于3時(shí),其屬性為空字符串;當(dāng)Temperature.readyState為4時(shí),其中保存了完整的溫度信息,Temperature.status為服務(wù)器返回的狀態(tài)碼,200表示成功,404表示"Not Found"。Temperature.onreadystatechange為調(diào)用的事件句柄函數(shù),每次Temperature.readyState屬性改變時(shí)被調(diào)用。Temperature.open()為初始化 HTTP請(qǐng)求參數(shù),send()發(fā)送HTTP請(qǐng)求。

服務(wù)器端解析對(duì)應(yīng)文件名“/cgi-bin/Temperature-Get”,如果存在對(duì)應(yīng)的文件,則返回一個(gè)消息,客戶端接收到這個(gè)消息并且存儲(chǔ)溫度信息到對(duì)應(yīng)請(qǐng)求的響應(yīng)文本Temperature.response Text中,使用文本插入方法“document.getElementById("Temperaturestate").innerHTML= "<div>"+ TemperaturestateresponseText+ "</div>";”把消息在網(wǎng)頁(yè)中對(duì)應(yīng)的DIV位置處顯示。

4 系統(tǒng)測(cè)試

系統(tǒng)測(cè)試分本機(jī)測(cè)試與局域網(wǎng)測(cè)試兩種方式。本機(jī)測(cè)試就是嵌入式Web服務(wù)器通過(guò)網(wǎng)線直接連接到PC,局域網(wǎng)測(cè)試則是將嵌入式Web服務(wù)器連接到局域網(wǎng)中的路由器上。復(fù)位嵌入式Web服務(wù)器,查看其IP地址,同時(shí)修改客戶端的IP,使其與嵌入式Web服務(wù)器處于同一網(wǎng)段中。在客戶端通過(guò)“ping 169.254.117.2”(嵌入式 Wb IP)查看網(wǎng)絡(luò)連接狀態(tài)。成功連接后,在客戶端瀏覽器中輸入“http://169.254.117.2”地址后,瀏覽器中會(huì)顯示嵌入式Web交互式頁(yè)面,如圖5所示。通過(guò)點(diǎn)擊對(duì)應(yīng)的按鈕,可以在瀏覽器中獲得各種請(qǐng)求數(shù)據(jù)。在文本框中輸入文本,將數(shù)據(jù)存入嵌入式Web服務(wù)器中,同時(shí)存入信息會(huì)在嵌入式Web的LCD上顯示出來(lái)。通過(guò)本地和局域網(wǎng)測(cè)試,系統(tǒng)性能良好,可應(yīng)用性強(qiáng)。

結(jié) 語(yǔ)

利用嵌入式系統(tǒng)及Internet技術(shù)可以實(shí)現(xiàn)Web動(dòng)態(tài)數(shù)據(jù)交互,通過(guò)CGI和XMLHTTPRequest方式,成功地在基于LM3S8962平臺(tái)上完成局域網(wǎng)內(nèi)Web頁(yè)面數(shù)據(jù)動(dòng)態(tài)交互,實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的嵌入式Web服務(wù)器的功能。嵌入式Web動(dòng)態(tài)交互技術(shù)在工業(yè)生產(chǎn)的過(guò)程控制、機(jī)房環(huán)境參數(shù)的監(jiān)測(cè)以及遠(yuǎn)程數(shù)據(jù)采集等方面都有廣泛的應(yīng)用需求。

圖5 瀏覽器端驗(yàn)證測(cè)試

[1]牛利兵.遠(yuǎn)程監(jiān)控嵌入式Web服務(wù)器的設(shè)計(jì)[D].山西:太原理工大學(xué),2011.

[2]李勇.CGI在嵌入式 WEB服務(wù)器中的應(yīng)用和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(10):110-112.

[3]彭偉.XMLHttp對(duì)象在嵌入式 Web實(shí)時(shí)系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(11):29-32.

[4]Texas Instruments.Stellaris LM3S8962Microcontroller DataSheet[EB/OL].[2013-01-06].http://www.ti.com/cn/litv/pdf/spms001h.

猜你喜歡
服務(wù)器端瀏覽器網(wǎng)頁(yè)
反瀏覽器指紋追蹤
電子制作(2019年10期)2019-06-17 11:45:14
基于CSS的網(wǎng)頁(yè)導(dǎo)航欄的設(shè)計(jì)
電子制作(2018年10期)2018-08-04 03:24:38
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
基于URL和網(wǎng)頁(yè)類型的網(wǎng)頁(yè)信息采集研究
電子制作(2017年2期)2017-05-17 03:54:56
環(huán)球?yàn)g覽器
再見(jiàn),那些年我們嘲笑過(guò)的IE瀏覽器
網(wǎng)頁(yè)制作在英語(yǔ)教學(xué)中的應(yīng)用
在Windows中安裝OpenVPN
10個(gè)必知的網(wǎng)頁(yè)設(shè)計(jì)術(shù)語(yǔ)
網(wǎng)頁(yè)防篡改中分布式文件同步復(fù)制系統(tǒng)
万荣县| 华宁县| 克东县| 姜堰市| 花莲县| 安远县| 武胜县| 垦利县| 阿鲁科尔沁旗| 孟连| 神农架林区| 双辽市| 神木县| 航空| 龙泉市| 新建县| 柘城县| 资兴市| 防城港市| 莎车县| 昔阳县| 鸡西市| 定远县| 徐汇区| 吉水县| 武安市| 九龙坡区| 福安市| 大名县| 巴中市| 淅川县| 凤山市| 米易县| 通化市| 瓮安县| 拜泉县| 叙永县| 旬阳县| 嘉峪关市| 通州市| 阜城县|