在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > XMLHttP對(duì)象在嵌入式Web實(shí)時(shí)系統(tǒng)中的應(yīng)用

            XMLHttP對(duì)象在嵌入式Web實(shí)時(shí)系統(tǒng)中的應(yīng)用

            作者: 時(shí)間:2011-11-15 來(lái)源:網(wǎng)絡(luò) 收藏


            2 HTTP服務(wù)器功能簡(jiǎn)介
            Microchip TCP/IP協(xié)議棧是一套服務(wù)于標(biāo)準(zhǔn)的、基于TCP/IP的程序,可于HTTP服務(wù)器、FTP服務(wù)器等,它遵循了TCP/IP參考模型,協(xié)議棧按照模塊化方式實(shí)現(xiàn)。Microchip整個(gè)TCP/IP協(xié)議棧的代碼全部用C語(yǔ)言編寫(xiě),每層的實(shí)現(xiàn)代碼駐留在一個(gè)獨(dú)立的C程序文件中,服務(wù)和程序編程接口則通過(guò)頭文件或C程序文件定義,協(xié)議棧可使用MCC18或HI—TECH PICC 18編譯,圖1對(duì)比了TCP/IP參考模型與Microchip TCP/IP協(xié)議棧。

            本文引用地址:http://www.biyoush.com/article/150063.htm

            g.jpg


            為實(shí)現(xiàn)HTTP服務(wù)器功能,協(xié)議棧所提供的相關(guān)文件主要有TCP.c與HTTP.c,它們分別處理客戶(hù)端與服務(wù)器端的連接及對(duì)HTTP請(qǐng)求的處理。在啟動(dòng)HTTP服務(wù)器時(shí),主程序首先調(diào)用兩個(gè)初始化函數(shù):StackInit()與HTTPInit()。前者初始化協(xié)議棧,包括MACInit()、ARPInit()、TCPInit();后者初始化HTTP服務(wù)器,使所有的HTTP連接處于監(jiān)聽(tīng)狀態(tài),受資源限制,實(shí)際支持的最大連接數(shù)默認(rèn)為3個(gè)。
            HTTP服務(wù)器主程序接下來(lái)的主要工作是在while(1)中循環(huán)調(diào)用HTTPServer()函數(shù),處理客戶(hù)端對(duì)HTTP服務(wù)器的請(qǐng)求并作出響應(yīng)。HTTPSer ver實(shí)際執(zhí)行的任務(wù)是循環(huán)掃描每個(gè)HTTP連接,并在每個(gè)連接上調(diào)用處理HTTP請(qǐng)求的函數(shù)HTTPProcess()。該函數(shù)對(duì)客戶(hù)端發(fā)送的控制命令串的處理及動(dòng)態(tài)文件的請(qǐng)求處理將分別通過(guò)回調(diào)函數(shù)HTTPExecCmd和HTTPGetVar完成,這兩個(gè)核心回調(diào)函數(shù)由主程序具體實(shí)現(xiàn)。

            3 動(dòng)態(tài)響應(yīng)XMLHttp請(qǐng)求的核心函數(shù)
            對(duì)于客戶(hù)端頁(yè)內(nèi)onClick事件與onLoad事件觸發(fā)的以下兩個(gè)調(diào)用示例,它們都基于XMLHttp,前者向HTTP服務(wù)器發(fā)送控制命令,后者請(qǐng)求動(dòng)態(tài)文件:
            ①Send_Ctrl_CMD(’0? 1=MOTOR’,’);
            ②RealTime_Monitoring();
            3.1 HTTPExecCmd函數(shù)
            HTTPExecCmd函數(shù)對(duì)客戶(hù)端發(fā)送的命令串解碼并執(zhí)行相應(yīng)的操作。函數(shù)聲明為:void HTTPExecCmd(BYTE**argv,BYTE argc)??疾炜蛻?hù)端函數(shù)調(diào)用所發(fā)送的控制命令串:“0?1=MOTOR”。HTTP服務(wù)器函數(shù)HTTPProcess在調(diào)用HTTPExecCMD之前已經(jīng)先通過(guò)HTTPParse函數(shù)由該命令串解析出“0”、“1”、“MOTOR”這三項(xiàng)內(nèi)容并賦給函數(shù)參數(shù)argv,所解析出的三項(xiàng)的具體定義由主程序設(shè)置。
            3.2 HTTPGetVar函數(shù)
            每當(dāng)HTTP服務(wù)器當(dāng)前所處理的CGI動(dòng)態(tài)文件Status.cgi中遇到變量碼“%xx”時(shí)即調(diào)用該函數(shù),處理動(dòng)態(tài)請(qǐng)求。HTTPGetVar函數(shù)聲明為:WORD HTTPGetVar(BYTE var,WORD ref,BYTE*val)。該函數(shù)的val參數(shù)是待解析處理的動(dòng)態(tài)文件內(nèi)的某個(gè)變量的標(biāo)識(shí)符,參數(shù)ref用于跟蹤返回值的狀況,參數(shù)val用于逐個(gè)返回?cái)?shù)據(jù)字節(jié)。
            以調(diào)用RealTime_Monitoring函數(shù)為例,它通過(guò)XMLHttp請(qǐng)求動(dòng)態(tài)文件Status.cgi,當(dāng)HTTP服務(wù)器接收到該請(qǐng)求時(shí),將從保存于EEPR OM的MPFS文件讀取Status.cgi文件,然后由HTTP.c的SendFile函數(shù)向客戶(hù)端XMLHttp對(duì)象回傳所請(qǐng)求的動(dòng)態(tài)文件。在回傳過(guò)程中,所遇到的動(dòng)態(tài)文件內(nèi)的變量將由主程序所實(shí)現(xiàn)的HTTPGetVar函數(shù)逐一進(jìn)行處理。動(dòng)態(tài)文件中的各種變量同樣將由HTTP服務(wù)器主程序進(jìn)行定義。以Status.cgi文件中表示AN0通道A/D轉(zhuǎn)換值的變量“%02”為例,由于主程序不僅循環(huán)調(diào)用HTTPServer函數(shù)響應(yīng)客戶(hù)請(qǐng)求并處理回應(yīng),在循環(huán)中還會(huì)分時(shí)處理外設(shè)操作,包括所需要執(zhí)行的AN0通道的A/D轉(zhuǎn)換操作。通常所有這些相關(guān)操作被集中放在處理I/O的函數(shù)ProccessIO()中實(shí)現(xiàn)?,F(xiàn)假定RA0引腳外接可變電阻器RV1,則AN0通道的A/D轉(zhuǎn)換具體實(shí)現(xiàn)如下:
            ADCON0=0B10000001;
            ADCON1=0B10001110;
            ADCON0bits.GO=1;
            while(ADCON0bits.GO);
            itoa(*((WORD*)(&ADRESL)),ANOString);
            每一次的A/D轉(zhuǎn)換值都被刷新保存在ANOString字符串中,以便發(fā)往客戶(hù)端顯示。當(dāng)HTTP服務(wù)器的HTTPProcess函數(shù)所調(diào)用的SendFile函數(shù)當(dāng)前遇到了變量“%02”,它會(huì)將其交由HTTPGetVar函數(shù)處理。所輸入的第1個(gè)參數(shù)var為2,它由變量“%02”轉(zhuǎn)換為BYTE類(lèi)型得到,用于標(biāo)識(shí)當(dāng)前變量要獲取的是AN0通道的A/D轉(zhuǎn)換值。
            現(xiàn)假設(shè)AN0String當(dāng)前獲取的A/D值為“709”,HTTPGetVar函數(shù)可通過(guò)以下關(guān)鍵語(yǔ)句返回A/D值:
            h.jpg
            其中ref初始時(shí)默認(rèn)為0。顯然,該函數(shù)將被連續(xù)調(diào)用3次,每次調(diào)用時(shí)ref遞增,直到通過(guò)*val返回最后一個(gè)字節(jié)以后,通過(guò)返回HTTP_ END_OF_VAR告知SendFile函數(shù)當(dāng)前變量處理結(jié)束。對(duì)于待返回到客戶(hù)端的數(shù)據(jù)字節(jié),HTTP將通過(guò)調(diào)用TCP層提供的函數(shù)TCPPut及TCPFlush,通過(guò)指定的Socket套接字將數(shù)據(jù)字節(jié)發(fā)往客戶(hù)端,由客戶(hù)端XMLHttp對(duì)象的異步回調(diào)函數(shù)通過(guò)responseText屬性讀取并刷新顯示在中的特定位置。

            結(jié)語(yǔ)
            通過(guò)仿真及實(shí)物電路測(cè)試表明,使用Ajax的XMLHttp對(duì)象及Microchip TCP/IP協(xié)議棧,可以很好地解決以太網(wǎng)環(huán)境下操作界面與嵌入式控制系統(tǒng)的交互問(wèn)題,實(shí)現(xiàn)對(duì)基于HTTP服務(wù)器模式的嵌入式系統(tǒng)進(jìn)行遠(yuǎn)程控制及監(jiān)測(cè),且能夠?qū)⑺邢嚓P(guān)操作保持在穩(wěn)定的瀏覽器窗口中執(zhí)行。

            linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

            tcp/ip相關(guān)文章:tcp/ip是什么



            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉