新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式Windows CE5.O的無線視頻監(jiān)控系統(tǒng)

基于嵌入式Windows CE5.O的無線視頻監(jiān)控系統(tǒng)

作者: 時(shí)間:2014-09-10 來源:網(wǎng)絡(luò) 收藏

  (2)創(chuàng)建項(xiàng)目。根據(jù)WinCE無線監(jiān)控系統(tǒng)的要求,在定制系統(tǒng)的過程中選擇合適的組件來實(shí)現(xiàn)。其中包括的組件有:支持應(yīng)用程序開發(fā)的MFC組件和支持網(wǎng)絡(luò)的相關(guān)組件等。

本文引用地址:http://butianyuan.cn/article/262768.htm

  (3)編譯項(xiàng)目:點(diǎn)擊菜單“Build OS”→“Sysgen”開始編譯項(xiàng)目。

  (4)下載運(yùn)行時(shí)映像,調(diào)試成功后啟動(dòng)。編譯成功后會(huì)在目WinCES00PBWorkspacestestlRelDirsmdk2 440_ARMV4I_Release下生成nk.bin和nk.nb0等文件,將nk.nb0下載到硬件平臺(tái)上運(yùn)行。

  4 驅(qū)動(dòng)程序的開發(fā)

  4.1 攝像頭驅(qū)動(dòng)的開發(fā)

  攝像頭驅(qū)動(dòng)開發(fā)是設(shè)計(jì)中的一個(gè)難點(diǎn),也是一個(gè)關(guān)鍵部分。由于攝像頭采集的視頻數(shù)據(jù)可以當(dāng)作數(shù)據(jù)流來處理,所以對(duì)于攝像頭的驅(qū)動(dòng)將采用流式接口的方法來開發(fā)。

  (1)在Platform Builder中打開前面定制的操作系統(tǒng)工程,然后在新建一個(gè)WIN32 DLL項(xiàng)目,添加2個(gè)C++的源文件,即:camera.cpp和IIc.cpp,其中camer—a.cpp包含驅(qū)動(dòng)的入口函數(shù)DLLMain();驅(qū)動(dòng)的前綴為“CIS”,IIc.cpp包含通過ICC接口對(duì)攝像頭相關(guān)寄存器進(jìn)行配置的函數(shù)。

  (2)根據(jù)前面的硬件電路和OV9650芯片的工作時(shí)序,通過編寫流接口的CIS_Init函數(shù)實(shí)現(xiàn)OV9650初始化。主要包括以下3步:調(diào)用InterruptInitialize(SYSINTR_CAM,CameraEvent,NULL,0)函數(shù)通知系統(tǒng)注冊(cè)中斷;調(diào)用 CreateEvent()函數(shù)創(chuàng)建一個(gè)CameraEvent事件;調(diào)用CreateThread()函數(shù)創(chuàng)建CameraThread線程。在 Camera Capture Thread服務(wù)函數(shù)中調(diào)用WaitForSingleObject(CameraEvent,Dis—play Time)函數(shù)等待Camera Event事件的發(fā)生。此事件由與其關(guān)聯(lián)的SYSINTR_CAM中斷來觸發(fā)。此外還有其它流接口函數(shù)(CIS_IOControl等)也可以以類似的方法實(shí)現(xiàn)。

  (3)編寫DLL的導(dǎo)出函數(shù)定義文件.DEF。.DEF文件定義了DLL的導(dǎo)出函數(shù)類表。.DEF文件可以就用一般的記事本編輯,保存時(shí)后綴名改為.DEF即可,關(guān)于本攝像頭驅(qū)動(dòng)的.DEF文件內(nèi)容如下:

  

程序

 

  (4)為驅(qū)動(dòng)程序配置注冊(cè)表。在platform.reg中添加以下注冊(cè)項(xiàng)即可:

  

程序

 

  在攝像頭驅(qū)動(dòng)開發(fā)完成后,通過編寫應(yīng)用程序在嵌入式終端的觸摸屏上顯示出來,如圖10所示。首先通過CreateWindow這個(gè)API函數(shù)創(chuàng)建一個(gè)用來顯示圖像的窗體,然后創(chuàng)建回調(diào)函數(shù)CaptureThreadProc的線程,在回調(diào)函數(shù)中根據(jù)不同的操作向操作系統(tǒng)發(fā)送不同的消息值,處理圖像的讀取、顯示等。測(cè)試結(jié)果如圖11所示。

  

編寫應(yīng)用程序在<a href=http://embed.21ic.com/e/sch/index.php?stype=kucun&keyboard=%C7%B6%C8%EB%CA%BD&Submit.x=47&Submit.y=17&Submit=image target=_blank class=infotextkey>嵌入式</a>終端的觸摸屏上顯示出來

 

  

攝像頭驅(qū)動(dòng)測(cè)試

 

  4.2 串口驅(qū)動(dòng)開發(fā)

  在中串口的驅(qū)動(dòng)實(shí)現(xiàn)是有固定模型的,基于流驅(qū)動(dòng)模型,采用分層結(jié)構(gòu)。串口驅(qū)動(dòng)的開發(fā)的步驟和上面攝像頭驅(qū)動(dòng)開發(fā)的步驟一樣,關(guān)鍵是實(shí)現(xiàn)流接口函數(shù),由于這里采用了分層的結(jié)構(gòu),MDD層的代碼可以參考微軟提供的源代碼在%WINCEROOT%PUBUCCOMMONOAKDRIVERSSERIALCOMMDD2目錄下,PDD層中的代碼是與硬件相關(guān)的代碼,需要針對(duì)不同的設(shè)備來編寫。MDD層中的代碼調(diào)用PDD層中的代碼來實(shí)現(xiàn)具體的硬件操作。串口驅(qū)動(dòng)的結(jié)構(gòu)如圖12所示。

  

串口驅(qū)動(dòng)的結(jié)構(gòu)

 

  5 PC機(jī)端監(jiān)控中心程序的開發(fā)

  監(jiān)控中心是無線的核心部分,它負(fù)責(zé)管理整個(gè)系統(tǒng)并顯示監(jiān)控的圖像。在該論文中,監(jiān)控中心的應(yīng)用程序?qū)崿F(xiàn)了實(shí)時(shí)監(jiān)控、定時(shí)錄像、抓拍等功能。在系統(tǒng)中監(jiān)控程序的開發(fā),同時(shí)使用了C#語言和WIN32 API,利用C#語言基于事件的編程方法,設(shè)計(jì)了程序圖形界面,利用VFW接口中的API函數(shù)基于消息機(jī)制設(shè)計(jì)了底層圖像數(shù)據(jù)的讀取和顯示。該系統(tǒng)中 API函數(shù)主要來自于VFW軟件工具包。VFW(Video forWindows)提供了一系列應(yīng)用程序編程接口(API),用戶可以通過它們很方便地實(shí)現(xiàn)視頻捕獲、視頻編輯及視頻播放等通用功能,還可利用回調(diào)函數(shù)開發(fā)更復(fù)雜的視頻應(yīng)用程序。其特點(diǎn)是播放視頻時(shí),不需要專用的硬件設(shè)備,而且應(yīng)用靈活,可以滿足視頻應(yīng)用程序開發(fā)的需要。監(jiān)控中心的程序調(diào)試運(yùn)行效果如圖13所示。

  

監(jiān)控中心的程序調(diào)試運(yùn)行效果

 

  6 視頻壓縮編碼和傳輸理論研究

  6.1 視頻壓縮編碼研究

  圖像和視頻包含巨大數(shù)量的信息,其傳輸和存儲(chǔ)需要很寬的帶寬,多媒體視頻數(shù)據(jù)在無線傳輸之前,必須進(jìn)行壓縮。常用的數(shù)字壓縮技術(shù)主要包括用于會(huì)議電視系統(tǒng)的H.261壓縮編碼,用于計(jì)算機(jī)靜止圖像壓縮的JPEG和用于活動(dòng)圖像壓縮的MPEG數(shù)字壓縮技術(shù)和近年來比較熱點(diǎn)的H.263和H.264 壓縮編碼技術(shù)。MPEG一4采用新一代視頻編碼技術(shù),它在視頻編碼發(fā)展史上第一次把編碼對(duì)象從圖像幀拓展到具有實(shí)際意義的任意形狀視頻對(duì)象,從而實(shí)現(xiàn)了從基于像素的傳統(tǒng)編碼向基于對(duì)象和內(nèi)容的現(xiàn)代編碼的轉(zhuǎn)變,因而引領(lǐng)著新一代智能圖像編碼的發(fā)展潮流。

  由于MPEG一4壓縮編碼系統(tǒng)比較復(fù)雜,在論文中將重點(diǎn)對(duì)MPEG一4壓縮編碼技術(shù)進(jìn)行研究,分析其在PC機(jī)上的壓縮編碼的源碼,為以后在ARM等嵌入式設(shè)備上的移植奠定基礎(chǔ)。對(duì)一幀圖像進(jìn)行MlPEG一4編碼的流程如圖14所示。

  

對(duì)一幀圖像進(jìn)行MlPEG一4編碼的流程
攝像頭相關(guān)文章:攝像頭原理


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉