單片機(jī)嵌入式Internet技術(shù)的Web應(yīng)用實(shí)現(xiàn)
2.2 uIP驅(qū)動(dòng)底層網(wǎng)絡(luò)設(shè)備RTL8019AS
uIP是一個(gè)僅包含3層網(wǎng)絡(luò)層核心協(xié)議的協(xié)議棧,uIP自身不包含任何類型的底層網(wǎng)絡(luò)驅(qū)動(dòng)和上層應(yīng)用程序,它只提供接口函數(shù)供用戶開(kāi)發(fā)使用。因此為了完成與底層網(wǎng)絡(luò)設(shè)備的交互,用戶必須根據(jù)網(wǎng)絡(luò)設(shè)備的類型,在uIP中自行實(shí)現(xiàn)對(duì)底層網(wǎng)絡(luò)設(shè)備的驅(qū)動(dòng)。本文采用的網(wǎng)絡(luò)設(shè)備是RTL8019AS網(wǎng)卡,因此需要在uIP中實(shí)現(xiàn)對(duì)RTL8019AS網(wǎng)卡的驅(qū)動(dòng)[4]。
RTL8019AS驅(qū)動(dòng)程序包括:RTL8019AS芯片初始化、芯片復(fù)位以及數(shù)據(jù)的發(fā)送和接收。RTL8019AS芯片初始化可以通過(guò)初始化函數(shù)void init_8019(void)完成。芯片復(fù)位通過(guò)芯片上的RSTDRV引腳執(zhí)行復(fù)位操作,該引腳高電平有效。
3 單片機(jī)上嵌入式Web服務(wù)器的軟件實(shí)現(xiàn)
3.1 Web服務(wù)器的建立
在進(jìn)行以上的工作之后,用戶就可以建立Web服務(wù)器,通過(guò)uIP協(xié)議實(shí)現(xiàn)不同的微控制器或工作站之間的通信。Web服務(wù)器和客戶端瀏覽器間的通信采用HTTP協(xié)議。嵌入式系統(tǒng)經(jīng)常需要根據(jù)用戶的指令,采集系統(tǒng)的當(dāng)前數(shù)據(jù)信息傳送給客戶端瀏覽器,為實(shí)現(xiàn)這種客戶端瀏覽器和Web服務(wù)器的動(dòng)態(tài)交互,需要在服務(wù)器端采用通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)技術(shù)。CGI是一個(gè)在服務(wù)器上運(yùn)行的程序,它分析處理用戶發(fā)送到服務(wù)器上的數(shù)據(jù)信息,完成動(dòng)態(tài)文件資源的創(chuàng)建和處理,再將用戶信息返回給客戶端。
Web服務(wù)器初始化完成后,服務(wù)器等待客戶端的連接請(qǐng)求,客戶端瀏覽器輸入服務(wù)器的IP地址后發(fā)一個(gè)物理地址解析協(xié)議(ARP)請(qǐng)求包,服務(wù)器收到后進(jìn)行應(yīng)答??蛻舳耸盏綉?yīng)答包后發(fā)送超文本傳輸協(xié)議(HTTP)包,服務(wù)器收到HTTP包后開(kāi)始建立與客戶端的TCP連接并作出對(duì)此包的響應(yīng)。客戶端收到響應(yīng)包后即斷開(kāi)連接,服務(wù)器偵測(cè)到客戶端斷開(kāi)了連接也同時(shí)斷開(kāi)連接。
3.2 Web服務(wù)器數(shù)據(jù)處理流程
當(dāng)系統(tǒng)的網(wǎng)卡接收到從網(wǎng)絡(luò)傳送來(lái)的數(shù)據(jù)包后,首先分析目的地址是否與自己的物理地址一致,如果不一致,則丟棄此包;如果一致,則讀取網(wǎng)絡(luò)數(shù)據(jù)并分析。如果是ARP請(qǐng)求包,則轉(zhuǎn)入ARP處理程序,并發(fā)送一個(gè)ARP應(yīng)答包給客戶端。如果是IP包,則交由IP層處理,同時(shí)去掉以太網(wǎng)首部[4-5]。IP層根據(jù)IP首部的協(xié)議字段分析該IP包屬于什么數(shù)據(jù)包,如果是UDP包則,丟棄;如果是ICMP請(qǐng)求包,則發(fā)送一個(gè)ICMP應(yīng)答包給客戶端;如果是TCP包且IP地址和端口號(hào)正確,則接收數(shù)據(jù)包,數(shù)據(jù)解包后,將數(shù)據(jù)部分通過(guò)串口輸出,控制MAX232現(xiàn)場(chǎng)設(shè)備。反之,如果現(xiàn)場(chǎng)通過(guò)串口發(fā)送數(shù)據(jù)到單片機(jī),單片機(jī)將數(shù)據(jù)按照TCP協(xié)議格式打包,送入RTL8019AS,由RTL8019AS將數(shù)據(jù)發(fā)送到局域網(wǎng)中。根據(jù)需要還可以在收到串口數(shù)據(jù)時(shí),先完成數(shù)據(jù)預(yù)處理,再將處理好的數(shù)據(jù)送到局域網(wǎng)。具體的處理過(guò)程如圖2所示。本文引用地址:http://cafeforensic.com/article/173274.htm
3.3 單片機(jī)上的Web服務(wù)器編程
uIP協(xié)議棧提供了一個(gè)稱為宏的UIP_APPCALL的應(yīng)用程序接口供用戶設(shè)計(jì)應(yīng)用程序時(shí)使用[4]。要在單片機(jī)上實(shí)現(xiàn)Web Server服務(wù),首先將該宏定義為一個(gè)應(yīng)用程序函數(shù)名,然后在此函數(shù)中實(shí)現(xiàn)HTTP協(xié)議。完成后,用戶可以從局域網(wǎng)內(nèi)的任何客戶機(jī)訪問(wèn)該單片機(jī)Web服務(wù)器。如果分配一個(gè)公網(wǎng)IP地址,則也可以從Internet上訪問(wèn)此Web服務(wù)器。實(shí)現(xiàn)的程序如下:
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論