<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種新型嵌入式遠程監控系統的設計開(kāi)發(fā)

一種新型嵌入式遠程監控系統的設計開(kāi)發(fā)

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

Web的應用層協(xié)議HTTP是Web的核心。HTTP協(xié)議實(shí)現的客戶(hù)機/服務(wù)器模式是一種請求/響應結構??紤]到系統實(shí)現時(shí)TCP協(xié)議同時(shí)支持的連接次數和安全性問(wèn)題,本文采用HTTP1.0協(xié)議,Web服務(wù)器每次發(fā)送完響應就斷開(kāi)連接。狀態(tài)碼的含義很多,本文使用了兩種:當請求網(wǎng)頁(yè)成功時(shí),返回狀態(tài)碼200,原因短語(yǔ)為OK;當所請求的網(wǎng)頁(yè)不存在時(shí),返回狀態(tài)碼404,原因短語(yǔ)為NOT FOUND。頭部字段名也是可選部分,但是本文使用了其中一個(gè)選項Content-Length:指出所發(fā)送對象的字節數,以方便程序調試。實(shí)體部分就是響應的具體內容,譬如一個(gè)HTML網(wǎng)頁(yè)或者一張圖片等等。

本文HTTP協(xié)議靜態(tài)頁(yè)面的實(shí)現需要完成如下內容:首先獲取URL中的文件名,接著(zhù)根據該文件名調用https_calculatehash()函數獲取文件句柄,即文件處理入口數據結構中的hash域值,根據該值查找文件的起始地址,然后將文件裝入TCP套接字發(fā)送緩沖區。當所發(fā)送的文件過(guò)長(cháng)而大于發(fā)送緩沖區的大小時(shí)則會(huì )發(fā)生緩沖區的溢出問(wèn)題,本文的解決辦法是:首先判斷文件的長(cháng)度,當文件過(guò)長(cháng)時(shí),將文件分割成多個(gè)不大于發(fā)送緩沖區大小的分段,然后循環(huán)發(fā)送出去。HTTP協(xié)議中靜態(tài)頁(yè)面處理的程序流程如圖2所示。

圖2 HTTP靜態(tài)頁(yè)面處理流程圖

4.2 CGI的設計與實(shí)現

在該中,除了支持靜態(tài)頁(yè)面,還必須支持動(dòng)態(tài)內容和動(dòng)態(tài)表單的處理,主要包括動(dòng)態(tài)生成實(shí)時(shí)采集數據頁(yè)面和處理控制命令表單。為了實(shí)現該功能,本文設計了CGI接口處理程序。

考慮到實(shí)際應用情況,本文無(wú)需在NE64中移植操作系統,因此為Web服務(wù)器創(chuàng )建CGI接口不能照搬標準CGI。首先,本文的Web服務(wù)器不能同時(shí)運行多個(gè)應用程序,每個(gè)應用程序的運行都會(huì )獨占CPU,直到完成才會(huì )釋放CPU。其次,本文未實(shí)現復雜的緩存機制,所以反復執行應用程序是個(gè)低速的過(guò)程。因此,本文對標準CGI進(jìn)行了裁減,設計了CGI(Embedded CGI),通過(guò)該方法實(shí)現了Web服務(wù)器的數據的采集和監控。其工作處理流程如圖3所示。

圖3 CGI處理流程

5 A/D采集子程序

為了實(shí)現不同精度、更多路的數據采集,系統既使用了NE64集成的A/D采集模塊,又使用了通過(guò)SPI外擴的專(zhuān)用的A/D采集芯片TLC2543。因此,A/D采集子程序包含了這兩部分的內容。在具體實(shí)現時(shí),本文通過(guò)變量TLCAD控制調用哪個(gè)采集子程序,當TLCAD=100時(shí),調用TLC2543采集子程序;當TLCAD=99時(shí),調用集成A/D采集子程序。系統在采集數據時(shí),模擬量輸入信號從最小的通道號依次接入,實(shí)際模擬量的個(gè)數由變量NE64ADNmb和TLCADNmb決定,分別表示采集精度為10位的模擬量個(gè)數以及采集精度為12位的模擬量個(gè)數。

在A(yíng)/D數據采集過(guò)程中,不可避免地會(huì )受到隨機噪聲的干擾,從而造成采集數據的不準確,進(jìn)而得出錯誤的結論。為了防止脈沖干擾該系統,本文作者采用了中值濾波的方法。在中值濾波的基礎上,為了保證采集數據的穩定性,本文作者采用了算術(shù)平均值濾波的方法。

6 模塊測試

軟件的主要功能是實(shí)現多路數據采集、網(wǎng)絡(luò )協(xié)議通信以及對象控制機制。模塊測試部分主要針對各模塊進(jìn)行軟件測試。由于篇幅限制,下面主要針對起數據采集部分介紹其測試部分。SD12-MCS共支持30路模擬量數據采集,其中8路10位精度的AD屬于NE64的A/D模塊,剩余22路屬于2片TLC2543采集芯片。為了驗證每個(gè)采集程序是否正確,本文設計了這樣一個(gè)測試用例:首先單獨運行其中一種精度的采集程序,發(fā)送所有通道采集到的數據,通過(guò)串行口發(fā)送給高端PC機,并由PC機的測試用例顯示,若顯示數據正確,則程序正確。在此基礎上,發(fā)送參數確定調用哪種子程序,同時(shí)控制采集多路模擬量,由于本文設置模擬量采集都是從第0通道開(kāi)始,并依此類(lèi)推,因此不需要設置究竟是采集哪個(gè)通道的模擬量,從而簡(jiǎn)化程序處理。

本文作者創(chuàng )新點(diǎn):

本文主要介紹了一種基于Web的嵌入式控制策略設計與實(shí)現。通過(guò)對各功能模塊測試顯示該監控系統性能良好,符合相關(guān)設計要求。

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

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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>