<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è) > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的機房遠程監測系統研究

基于嵌入式Linux的機房遠程監測系統研究

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

3. 2 ZC0301 攝像頭視頻采集程序設計

Video4linux 是 內核里支持影像設備的一組API,配合適當的采集卡與相關(guān)驅動(dòng)程序,可以實(shí)現視頻采集。驅動(dòng)視頻采集設備完成視頻采集和處理,需要相應的驅動(dòng)程序和視頻流采集程序。視頻采集程序的內容主要包括攝像頭的初始化、打開(kāi)、關(guān)閉、參數設置以及數據讀取等。

Video4linux 視頻采集的實(shí)現過(guò)程如下:

( 1) 初始化程序,包括打開(kāi)視頻設備文件,讀取視頻采集設備信息以及設備緩沖區信息等; 初始化攝像頭參數主要通過(guò)init_videoIn 函數來(lái)完成。

( 2) 打開(kāi)視頻采集設備。初始化工作完成后,通過(guò)V4L_open 函數檢查攝像頭設備是否加載,如能夠檢測到攝像頭設備,使用open 調用以只讀的方式打開(kāi)視頻設備。

( 3) 獲取視頻設備信息和圖像信息。通過(guò)調用設備I /O 通道管理函數ioctl 中的VIDIOCGCAP 參數獲取視頻采集設備的名稱(chēng)、類(lèi)型、通道數、圖像寬度和高度等信息參數,調用ioctl 函數中的VIDIOCGPICT 參數讀取視頻采集設備緩沖video_picture 信息。

( 4) 視頻采集。在V4L 體系下,采用內存映射方式采集視頻。內存映射方式視頻讀取的具體操作如下:

①首先使用ioctl 調用VIDOOCGMBUF 命令獲取攝像頭存儲緩沖區的幀信息,之后初始化video_mbuf,修改video_mmbuf 設置。

②映射設備文件到內存。

③截取圖像,有單幀截取和連續幀截取兩種方式。進(jìn)行單幀截取需先準備內存空間; 然后調用ioctl 函數的VIDIOCMCAPTURE 命令,以非阻塞形式開(kāi)始一幀圖像截??; 接著(zhù)調用ioctl( fd,VIDIOCSYNC,&frame)函數判斷該幀是否截取完畢; 最后就可將圖像數據寫(xiě)入到Frame Buffer 中。若進(jìn)行連續幀截取,則需通過(guò)循環(huán)語(yǔ)句中,使用VIDIOCMCAPTURE 和VIDIOCSYNC 函數判斷是否完成截取,并給采集到的每幀圖像賦地址。

( 5) 關(guān)閉攝像頭。視頻采集完成以后,最后的工作是關(guān)閉視頻采集設備。以?xún)却嬗成涞姆椒ǐ@取視頻數據,需要在視頻采集任務(wù)完成之后關(guān)閉內存映射,然后調用close_v4l 函數關(guān)閉視頻設備。關(guān)閉視頻設備需要判斷視頻獲取方式: 如是內存映射方式,則通過(guò)munmap 函數。

4 Web 監控的實(shí)現

Web 監控的實(shí)現包括了Boa 服務(wù)器移植、CGI 網(wǎng)頁(yè)交互程序設計兩個(gè)部分。

4. 1 Boa 服務(wù)器移植

監控中,Web 服務(wù)器的性能對系統的整體性能具有直接影響,因此Web 服務(wù)器的選擇和設計尤為重要。高效率的Web 服務(wù)器,才能使監控系統的能得到充分的發(fā)揮。

Boa 是一款單任務(wù)的HTTP 服務(wù)器,它支持CGI 技術(shù),且具有自動(dòng)生成目錄和解壓文件等功能。在運行效率方面,由于其只為CGI 程序創(chuàng )建新的進(jìn)程,因此具有很高的HTTP 請求處理速度。故選用Boa 來(lái)構建嵌入式服務(wù)器。

服務(wù)器主要作用是為整個(gè)系統提供了一種網(wǎng)絡(luò )接入和信息服務(wù)方式。系統通過(guò)應用HTTP 協(xié)議聯(lián)網(wǎng),調用具有數據請求和控制功能的CGI 程序,實(shí)現服務(wù)器對客戶(hù)端瀏覽器請求的處理,最終實(shí)現信息在瀏覽器的動(dòng)態(tài)顯示,達到監控的目的。

4. 2 CGI 網(wǎng)頁(yè)交互程序設計

CGI 技術(shù)即通用網(wǎng)關(guān)接口( Common Network Interface) 技術(shù),它支持WEB 數據動(dòng)態(tài)刷新、轉換和顯示。

CGI 接口設計的程序運行在WEB 服務(wù)器端,像其他類(lèi)型程序設計一樣,其必須通過(guò)CGI 標準格式進(jìn)行編寫(xiě)。CGI 程序的運行由瀏覽器端的輸入觸發(fā),它的任務(wù)就是執行指令,將所需數據轉換為環(huán)境變量進(jìn)行處理,并回傳處理結果。WEB 服務(wù)器與CGI 程序之間通過(guò)四種途徑進(jìn)行通信: 環(huán)境變量、命令行、標準輸入和標準輸出。

CGI 的基本工作過(guò)程為: 根據瀏覽器的請求,CGI 程序通過(guò)執行Boa 服務(wù)器指令,調用其它應用程序進(jìn)行處理,最后將處理結果以HTML 形式反饋給瀏覽器顯示。CGI 工作流程示意圖如圖3 所示。

圖3 CGI 工作流程示意圖
圖3 CGI 工作流程示意圖

4. 3 系統測試

本系統的測試工作主要是在實(shí)驗室的局域網(wǎng)環(huán)境下進(jìn)行的。

其中下位機為以S3C2440 處理器為核心的嵌入式目標板,配合ZC0301 攝像頭和數字溫度傳感器DS18B20,通過(guò)構建 操作系統并移植Boa,將其配置成為嵌入式服務(wù)器; 下位機采用通用的PC 機,通過(guò)瀏覽器與服務(wù)器進(jìn)行交互。上位機監控端和下位機嵌入式服務(wù)器通過(guò)網(wǎng)線(xiàn)和上位機相連接,構建成為局域網(wǎng)開(kāi)發(fā)環(huán)境。

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


評論


相關(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>