CAN總線的嵌入式Web服務(wù)器設(shè)計
2 嵌入式Web服務(wù)器軟件設(shè)計與實現(xiàn)
2.1 以太網(wǎng)接口驅(qū)動程序的實現(xiàn)
要將嵌入式Web服務(wù)器接入以太網(wǎng),就要對RTL8019AS進行編程,完成以太網(wǎng)幀的數(shù)據(jù)收發(fā),相當于實現(xiàn)PC機中網(wǎng)卡的驅(qū)動程序功能。以太網(wǎng)控制器驅(qū)動程序用于設(shè)置RTL8019AS的工作狀態(tài)和工作方式,分配收發(fā)數(shù)據(jù)的緩沖區(qū),通過對地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收與發(fā)送。首先要對RTL8019AS進行復(fù)位,并將其設(shè)置為跳線模式;然后對RTL8019AS的工作參數(shù)進行設(shè)置,以使其開始工作;接下來就讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。程序流程如圖3所示。
2.2 嵌入式Web服務(wù)器TCP/IP協(xié)議棧的實現(xiàn)
TCP/IP協(xié)議棧是SX虛擬外設(shè)的一個重要實現(xiàn),是基于SX處理器的應(yīng)用系統(tǒng)與Internet實現(xiàn)互聯(lián)的基礎(chǔ)。通過這些協(xié)議棧,可以更加方便地開發(fā)基于Internet的嵌入式應(yīng)用系統(tǒng)。
以太網(wǎng)數(shù)據(jù)的傳輸是采用MAC地址來識別的,而ARP協(xié)議提供IP地址和數(shù)據(jù)鏈路層使用MAC地址之間的轉(zhuǎn)換功能。為了保證系統(tǒng)在太網(wǎng)的通信,首先要實現(xiàn)ARP協(xié)議。由于嵌入式Web服務(wù)器要能在Internet上通信,在網(wǎng)絡(luò)層一定要實現(xiàn)IP協(xié)議,還要實現(xiàn)能報告數(shù)據(jù)傳送差錯等情況的ICMP協(xié)議。在應(yīng)用層,主要實現(xiàn)遠端主機通過瀏覽器的訪問控制方式,所以要實現(xiàn)HTTP協(xié)議;而HTTP協(xié)議是基于TCP協(xié)議實現(xiàn)傳輸?shù)模由蟃CP協(xié)議是面向可靠的數(shù)據(jù)流的傳輸,基于應(yīng)用的需要對可靠性的要求,在傳輸層采用TCP協(xié)議,并對TCP協(xié)議進行了簡化處理,主要針對HTTP協(xié)議開發(fā)TCP協(xié)議。
圖4為TCP/IP協(xié)議棧主流程圖。系統(tǒng)初始化后,進入主程序循環(huán)部分。主程序循環(huán)包括兩大部分:對接收到的以太網(wǎng)數(shù)據(jù)幀進行解包和對欲發(fā)送的數(shù)據(jù)進行封裝并發(fā)送。對接收到的以太網(wǎng)數(shù)據(jù)幀進行解包,供應(yīng)用程序使用;對欲發(fā)送的數(shù)據(jù)進行打包,將數(shù)據(jù)以以太網(wǎng)數(shù)據(jù)幀的格式發(fā)送出去,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)所有計算機能收到此數(shù)據(jù)幀。
圖4
工業(yè)現(xiàn)場數(shù)據(jù)經(jīng)嵌入式Web服務(wù)器上傳到以太網(wǎng)才能被用戶利用,因此網(wǎng)絡(luò)用戶和Web服務(wù)器之間通信程序的開發(fā)也是本課題中很重要的一部分。課題中嵌入式Web服務(wù)器實現(xiàn)的功能主要是現(xiàn)場實時數(shù)據(jù)發(fā)布功能。實時數(shù)據(jù)包括溫度、設(shè)備運行狀態(tài)信息、通信狀態(tài)信息、時鐘信息等。嵌入式Web服務(wù)器將實時數(shù)據(jù)以網(wǎng)頁形式發(fā)布到Internet上,遠方客戶通過接入Internet瀏覽該服務(wù)器發(fā)布的工業(yè)現(xiàn)場實時信息。本設(shè)計采用Brower/Server(簡稱B/S)開發(fā)模式。用這種方式開發(fā)嵌入式Web服務(wù)器應(yīng)用程序具有很多優(yōu)點。比如降低客戶端的要求,方便客戶端的分布使用,客戶端的開發(fā)和維護費用降低等。但是因為SX單片機的資源有限,在用單片機搭建的服務(wù)器上編程實現(xiàn)實時動態(tài)數(shù)據(jù)的瀏覽任務(wù)較重。在服務(wù)器端運行程序,速度也受到限制,加上網(wǎng)頁界面或程序結(jié)構(gòu)的單方面調(diào)整都將導(dǎo)致整個系統(tǒng)全盤修改,系統(tǒng)的靈活性與可擴展性差。在設(shè)計中,如果僅僅采用B/S訪問方式,其功能是難以完全完成的。針對應(yīng)用傳統(tǒng)B/S模式開發(fā)Web服務(wù)器應(yīng)用軟件的弊端,提出了改進方案。
為克服傳B/S訪問模式的弊端,做了以下兩點改進。
①采用套接字編程,實現(xiàn)部分服務(wù)器程序在客戶端運行,在客戶端瀏覽器實現(xiàn)動態(tài)網(wǎng)頁顯示實時數(shù)據(jù)。在改進方案中,實現(xiàn)動態(tài)數(shù)據(jù)的實時瀏覽采用了Java applet技術(shù)。
②不再將HTML語言寫入?yún)R編程序,在瀏覽器端解板成網(wǎng)頁,而是利用嵌入式Web服務(wù)器擴展的EEPROM24C256與SX52相連,用來存儲要瀏覽的Web文件。當瀏覽器與Web服務(wù)器交互時,利用HTTP協(xié)議通過統(tǒng)一資源定位器URL來確定Web服務(wù)器應(yīng)該為瀏覽器提供哪些資源。
這種改進方案在訪問模式上還是通過瀏覽器訪問嵌入式Web服務(wù)器,在通信模式上卻利用了C/S(Client/Server)模式,其于套接字來編程,即所謂的B/S和C/S相結(jié)合模式。圖5為B/S和C/S結(jié)合模式的原理。
通過B/S方式訪問Web服務(wù)器上的靜態(tài)網(wǎng)頁,在個網(wǎng)頁中嵌有Java applet文件。客戶端的IE瀏覽器瀏覽這個網(wǎng)頁時,會把網(wǎng)頁中標識的Java applet源程序下載到客戶端執(zhí)行。在Java applet源程序中,創(chuàng)建了一個套接字來完成與服務(wù)器的通信(前提是在Web服務(wù)器上同時運行一個相應(yīng)的服務(wù)器監(jiān)聽程序),主要是獲取實時數(shù)據(jù),用于在瀏覽器中顯示。事實上,Java applet中的Socket通信是一個典型的C/S訪問方式。
通過這種B/S和C/S相結(jié)合的訪問方式,能夠很好的實現(xiàn)實時數(shù)據(jù)的動態(tài)瀏覽。特別是這種實現(xiàn)方式秉承了B/S和C/S兩者的優(yōu)點,具有很大的靈活性。
以下是服務(wù)器與客戶端applet通信具體實現(xiàn)過程。
①創(chuàng)建Socket。用tcbLocalPortMSB和tcbLocalPortLSB設(shè)置服務(wù)器監(jiān)聽端口號,具體設(shè)為8080;用myIP3~0設(shè)置服務(wù)器IP址,具體設(shè)為192.168.1.111。
tcp/ip相關(guān)文章:tcp/ip是什么
評論