新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線的嵌入式Web服務器設計

        CAN總線的嵌入式Web服務器設計

        作者: 時間:2011-04-29 來源:網絡 收藏

        2 嵌入式Web服務器軟件設計與實現

        2.1 以太網接口驅動程序的實現

        要將嵌入式Web服務器接入以太網,就要對RTL8019AS進行編程,完成以太網幀的數據收發,相當于實現PC機中網卡的驅動程序功能。以太網控制器驅動程序用于設置RTL8019AS的工作狀態和工作方式,分配收發數據的緩沖區,通過對地址及數據口的讀寫來完成以太網幀的接收與發送。首先要對RTL8019AS進行復位,并將其設置為跳線模式;然后對RTL8019AS的工作參數進行設置,以使其開始工作;接下來就讀寫RTL8019AS的RAM以完成數據包的接收和發送。程序流程如圖3所示。

        2.2 嵌入式Web服務器TCP/IP協議棧的實現

        TCP/IP協議棧是SX虛擬外設的一個重要實現,是基于SX處理器的應用系統與Internet實現互聯的基礎。通過這些協議棧,可以更加方便地開發基于Internet的嵌入式應用系統。

        以太網數據的傳輸是采用MAC地址來識別的,而ARP協議提供IP地址和數據鏈路層使用MAC地址之間的轉換功能。為了保證系統在太網的通信,首先要實現ARP協議。由于嵌入式Web服務器要能在Internet上通信,在網絡層一定要實現IP協議,還要實現能報告數據傳送差錯等情況的ICMP協議。在應用層,主要實現遠端主機通過瀏覽器的訪問控制方式,所以要實現HTTP協議;而HTTP協議是基于TCP協議實現傳輸的,加上TCP協議是面向可靠的數據流的傳輸,基于應用的需要對可靠性的要求,在傳輸層采用TCP協議,并對TCP協議進行了簡化處理,主要針對HTTP協議開發TCP協議。

        圖4為TCP/IP協議棧主流程圖。系統初始化后,進入主程序循環部分。主程序循環包括兩大部分:對接收到的以太網數據幀進行解包和對欲發送的數據進行封裝并發送。對接收到的以太網數據幀進行解包,供應用程序使用;對欲發送的數據進行打包,將數據以以太網數據幀的格式發送出去,使采用TCP/IP協議的以太網內所有計算機能收到此數據幀。

        圖4

        工業現場數據經嵌入式Web服務器上傳到以太網才能被用戶利用,因此網絡用戶和Web服務器之間通信程序的開發也是本課題中很重要的一部分。課題中嵌入式Web服務器實現的功能主要是現場實時數據發布功能。實時數據包括溫度、設備運行狀態信息、通信狀態信息、時鐘信息等。嵌入式Web服務器將實時數據以網頁形式發布到Internet上,遠方客戶通過接入Internet瀏覽該服務器發布的工業現場實時信息。本設計采用Brower/Server(簡稱B/S)開發模式。用這種方式開發嵌入式Web服務器應用程序具有很多優點。比如降低客戶端的要求,方便客戶端的分布使用,客戶端的開發和維護費用降低等。但是因為SX單片機的資源有限,在用單片機搭建的服務器上編程實現實時動態數據的瀏覽任務較重。在服務器端運行程序,速度也受到限制,加上網頁界面或程序結構的單方面調整都將導致整個系統全盤修改,系統的靈活性與可擴展性差。在設計中,如果僅僅采用B/S訪問方式,其功能是難以完全完成的。針對應用傳統B/S模式開發Web服務器應用軟件的弊端,提出了改進方案。

        為克服傳B/S訪問模式的弊端,做了以下兩點改進。

        ①采用套接字編程,實現部分服務器程序在客戶端運行,在客戶端瀏覽器實現動態網頁顯示實時數據。在改進方案中,實現動態數據的實時瀏覽采用了Java applet技術。

        ②不再將HTML語言寫入匯編程序,在瀏覽器端解板成網頁,而是利用嵌入式Web服務器擴展的EEPROM24C256與SX52相連,用來存儲要瀏覽的Web文件。當瀏覽器與Web服務器交互時,利用HTTP協議通過統一資源定位器URL來確定Web服務器應該為瀏覽器提供哪些資源。

        這種改進方案在訪問模式上還是通過瀏覽器訪問嵌入式Web服務器,在通信模式上卻利用了C/S(Client/Server)模式,其于套接字來編程,即所謂的B/S和C/S相結合模式。圖5為B/S和C/S結合模式的原理。

        通過B/S方式訪問Web服務器上的靜態網頁,在個網頁中嵌有Java applet文件。客戶端的IE瀏覽器瀏覽這個網頁時,會把網頁中標識的Java applet源程序下載到客戶端執行。在Java applet源程序中,創建了一個套接字來完成與服務器的通信(前提是在Web服務器上同時運行一個相應的服務器監聽程序),主要是獲取實時數據,用于在瀏覽器中顯示。事實上,Java applet中的Socket通信是一個典型的C/S訪問方式。

        通過這種B/S和C/S相結合的訪問方式,能夠很好的實現實時數據的動態瀏覽。特別是這種實現方式秉承了B/S和C/S兩者的優點,具有很大的靈活性。

        以下是服務器與客戶端applet通信具體實現過程。

        ①創建Socket。用tcbLocalPortMSB和tcbLocalPortLSB設置服務器監聽端口號,具體設為8080;用myIP3~0設置服務器IP址,具體設為192.168.1.111。

        tcp/ip相關文章:tcp/ip是什么




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 襄汾县| 九寨沟县| 龙游县| 乌什县| 建平县| 江门市| 丹棱县| 彭山县| 谷城县| 厦门市| 临江市| 大宁县| 安康市| 利川市| 双城市| 陵水| 合山市| 平山县| 明溪县| 武威市| 罗平县| 额济纳旗| 彩票| 滨州市| 遂溪县| 江华| 河北省| 鲁山县| 叙永县| 青神县| 米易县| 屏山县| 罗平县| 兰州市| 兴仁县| 武功县| 施秉县| 淮北市| 甘南县| 裕民县| 丹江口市|