• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式無(wú)線視頻小車的設(shè)計(jì)與實(shí)現(xiàn)

      2011-08-04 06:37:08孔翠香
      通信技術(shù) 2011年11期
      關(guān)鍵詞:服務(wù)器端內(nèi)核線程

      張 簡(jiǎn),孔翠香

      (①貴州大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽(yáng)550025;②井岡山大學(xué) 電子與信息工程學(xué)院,江西 吉安343009)

      0 引言

      傳統(tǒng)的視頻監(jiān)控技術(shù)受布局,環(huán)境等條件的影響較大,相對(duì)龐大的體積造成資源的嚴(yán)重浪費(fèi)。針對(duì)不同的應(yīng)用場(chǎng)合需求,無(wú)線視頻監(jiān)控逐漸成為市場(chǎng)的主流。該系統(tǒng)在此基礎(chǔ)上為加強(qiáng)系統(tǒng)靈活性在可移動(dòng)小車上搭載無(wú)線視頻監(jiān)控系統(tǒng),可用于軍事偵察、防污染等危險(xiǎn)與惡劣環(huán)境,由于其特殊應(yīng)用場(chǎng)合,所以特別要求這類小車具有成本低、運(yùn)動(dòng)靈活、使用可靠等特點(diǎn)。

      1 系統(tǒng)硬件平臺(tái)架構(gòu)

      本系統(tǒng)服務(wù)器端采用三星公司的 S3C2440A[1]嵌入式微處理器(外擴(kuò)64 MB內(nèi)存,128 MB NAND FLASH)作為系統(tǒng)處理核心,核心板搭載USB攝像頭和無(wú)線Wi-Fi模塊。通過(guò)在小車上安裝繼電器電路來(lái)控制小車運(yùn)動(dòng)方向和攝像頭旋轉(zhuǎn)方向。小車的電源部分采用鋰電池外接穩(wěn)壓芯片來(lái)提供5 V直流電源??蛻舳瞬捎肣t作為上位機(jī)監(jiān)控畫面和運(yùn)動(dòng)控制的平臺(tái),筆記本通過(guò)無(wú)線網(wǎng)卡和小車上的無(wú)線模塊交互數(shù)據(jù)。系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。

      圖1 系統(tǒng)硬件結(jié)構(gòu)

      2 系統(tǒng)軟件模塊設(shè)計(jì)

      2.1 操作系統(tǒng)模塊

      Linux操作系統(tǒng)是一種穩(wěn)定,高效的開(kāi)源操作系統(tǒng),作為整個(gè)系統(tǒng)的核心,起著調(diào)配軟硬件協(xié)同工作的作用。該系統(tǒng)采用2.6.28內(nèi)核版本[2],按照需求對(duì)該內(nèi)核進(jìn)行裁減,該版本的內(nèi)核對(duì)外設(shè)驅(qū)動(dòng)支持較好,在移植到嵌入式平臺(tái)時(shí)指定ARM架構(gòu),交叉編譯工具,修改硬件系統(tǒng)時(shí)鐘便可在圖形配置菜單中選中你所需要硬件驅(qū)動(dòng),該系統(tǒng)要求內(nèi)核支持Nand Flash,USB攝像頭,GPIO等驅(qū)動(dòng)[3]。編譯完成會(huì)在boot目錄下生成不到2MB的內(nèi)核鏡像。

      2.2 USB攝像頭采集模塊

      V4L(VideoForLinux)是Linux下用于獲取視頻和音頻數(shù)據(jù)的API接口,目前內(nèi)核支持的最新版本是V4L2[4]。該系統(tǒng)采用的攝像頭設(shè)備文件是/dev/video0,若采取多路攝像頭,設(shè)備文件名依次增加。V4L2支持2種方式捕獲圖像:內(nèi)存映射(mmap)和直接讀取方式(read)。這里采用速度較快的mmap方式,通過(guò)在應(yīng)用程序中調(diào)用相應(yīng)V4L2模塊的API接口實(shí)現(xiàn)攝像頭的采集和控制,在結(jié)構(gòu)體v4l2_capacity中包含設(shè)備信息,查詢完設(shè)備信息后,向驅(qū)動(dòng)中申請(qǐng)四幀緩沖對(duì)采集到的視頻信號(hào)進(jìn)行連續(xù)處理。部分源代碼操作如下:

      ①open(“/dev/video0”,O_RDWR|O_NONBLOCK,0)[5];以非阻塞方式打開(kāi)視頻設(shè)備 USB攝像頭,成功打開(kāi)后返回設(shè)備的文件描述符。

      ②xioctl (fd, VIDIOC_QUERYCAP, &cap);該函數(shù)會(huì)通過(guò)命令去讀取攝像頭基本屬性信息,返回信息存入結(jié)構(gòu)體變量cap中。并通過(guò)VIDIOC_S_FMT設(shè)置采集視頻格式,這里分辨率設(shè)置為640×480。

      ③xioctl (fd, VIDIOC_REQBUFS, &req);通過(guò)命令VIDIOC_REQBUFS向驅(qū)動(dòng)申請(qǐng) 4幀幀緩沖[6],其中req為v4l2_requestbuffers類型結(jié)構(gòu)體變量,然后通過(guò)內(nèi)存映射mmap()指令將申請(qǐng)到的幀緩沖映射到用戶空間。

      ④xioctl (fd, VIDIOC_QBUF, &buf);通過(guò)命令VIDIOC_QBUF將申請(qǐng)到的幀緩沖全部入隊(duì)列,成功后便可開(kāi)始采集。buf 是結(jié)構(gòu)體v4l2_buffer變量,代表驅(qū)動(dòng)中的一幀。

      ⑤讀取數(shù)據(jù)時(shí)通過(guò)命令VIDIOC_DQBUF將采到的幀數(shù)據(jù)出隊(duì)列,通過(guò)操作內(nèi)存中的緩存對(duì)采集到的視頻信號(hào)送入壓縮流程,最后將該緩存放入隊(duì)列。

      服務(wù)器將通過(guò)主線程為此采集程序開(kāi)辟一個(gè)子線程,另外將創(chuàng)建一個(gè)TCP傳輸子線程,實(shí)現(xiàn)數(shù)據(jù)流的有效交換。

      2.3 繼電器I/O模塊

      繼電器在此系統(tǒng)中主要控制小車的前后,左右移動(dòng)以及攝像頭的左右轉(zhuǎn)動(dòng),此模塊分為硬件電路和軟件電路。硬件主要通過(guò)經(jīng)過(guò)光耦隔離與放大后輸入給繼電器線圈,進(jìn)而通過(guò)繼電器控制前進(jìn)、后退電機(jī)、左右轉(zhuǎn)彎電機(jī)以及攝像頭旋轉(zhuǎn)電機(jī)。軟件主要通過(guò)修改Linux字符設(shè)備驅(qū)動(dòng)中的ioctl函數(shù),來(lái)實(shí)現(xiàn)小車的兩鍵組合運(yùn)動(dòng)。服務(wù)器端TCP線程負(fù)責(zé)接收來(lái)自客戶端的按鍵信息,并進(jìn)行相應(yīng)的電平設(shè)置。

      2.4 Wi-Fi驅(qū)動(dòng)模塊

      Wi-Fi模塊用來(lái)實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸,該系統(tǒng)采用USB接口的Wi-Fi[7]模塊ZD1211B,Linux內(nèi)核中有該模塊的驅(qū)動(dòng)源碼,進(jìn)行相應(yīng)的內(nèi)核配置后再將ZD1211的firmware文件拷貝到跟文件系統(tǒng)/lib/firmware/zd1211目錄下。要使系統(tǒng)啟動(dòng)后自動(dòng)配置Wi-Fi模塊的參數(shù),要在啟動(dòng)腳本中對(duì)無(wú)線網(wǎng)卡進(jìn)行配置,這里用到Linux下的配置工具wrieless-tools,將其交叉編譯后移植到文件系統(tǒng)中可通過(guò)命令對(duì)接入無(wú)線網(wǎng)絡(luò)的參數(shù)進(jìn)行設(shè)置。

      2.5 網(wǎng)絡(luò)傳輸模塊

      本系統(tǒng)中采用的是Socket線程循環(huán),Socket套接字是一種使用標(biāo)準(zhǔn) Unix文件描述符與其他程序通信的方式,用于實(shí)現(xiàn)不同主機(jī)之間的數(shù)據(jù)同步,發(fā)送端將要傳輸?shù)男畔懭胩捉幼种校邮斩藙t通過(guò)讀取套接字內(nèi)的數(shù)據(jù)獲得壓縮數(shù)據(jù),通信之前,服務(wù)器端先啟動(dòng)守護(hù)進(jìn)程來(lái)監(jiān)聽(tīng)服務(wù)器端某個(gè)有效Socket[8]端口。服務(wù)器端調(diào)用了accept函數(shù)后,客戶端才能與服務(wù)器端建立連接。該系統(tǒng)服務(wù)器與客戶端均采用TCP協(xié)議傳輸數(shù)據(jù),服務(wù)器端線程主要負(fù)責(zé)圖像數(shù)據(jù)發(fā)送,接收客戶端按鍵信號(hào)和設(shè)置小車移動(dòng)I/O電平,發(fā)送完后關(guān)閉該線程,重新進(jìn)入主線程循環(huán)建立發(fā)送線程,這樣循環(huán)建立發(fā)送線程使各幀之間的數(shù)據(jù)傳輸互不影響,防止某幀錯(cuò)誤導(dǎo)致其他數(shù)據(jù)傳輸錯(cuò)誤??蛻舳说腡CP線程主要用來(lái)接收?qǐng)D像數(shù)據(jù)和向服務(wù)器發(fā)送按鍵控制信息。

      2.6 QT模塊

      Qt是由TrollTech公司出品的跨平臺(tái)的C++圖形用戶界面庫(kù),QT/X11和QTE是它的兩個(gè)不同平臺(tái)的版本,前者基于X Windows系統(tǒng),后者基于嵌入式系統(tǒng),由于其跨平臺(tái)的特性,源碼經(jīng)過(guò)交叉編譯可在不同的目標(biāo)平臺(tái)上通用。該系統(tǒng)在PC端實(shí)現(xiàn)用戶界面控制,故安裝XP平臺(tái)下的開(kāi)發(fā)環(huán)境QT CREATOR即可,QT模塊分為2個(gè)線程:接收數(shù)據(jù)線程和控制線程,在數(shù)據(jù)接收主線程中對(duì)畫布進(jìn)行繪圖,并開(kāi)辟專門的QTCPsocket[9]線程接受來(lái)自服務(wù)器端的數(shù)據(jù),由于QT自帶處理JPEG數(shù)據(jù)API函數(shù),使得圖像數(shù)據(jù)的格式轉(zhuǎn)換變得簡(jiǎn)易??蛻舳说娜蝿?wù)還要負(fù)責(zé)按鍵信息的發(fā)送,通過(guò)筆記本上的按鍵將控制信號(hào)發(fā)送給服務(wù)器,這個(gè)任務(wù)是在QTCPsocket線程中實(shí)現(xiàn)。PC端控制平臺(tái)畫面如圖2所示。

      圖2 PC控制平臺(tái)界面

      3 系統(tǒng)運(yùn)行測(cè)試

      在實(shí)驗(yàn)室條件下對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試,系統(tǒng)測(cè)試效果如圖3所示。

      圖3 系統(tǒng)整體測(cè)試效果

      小車的電源部分由手機(jī)電池接5 V穩(wěn)壓芯片構(gòu)成。小車上電后通過(guò)在PC客戶端輸入小車的IP地址和端口號(hào),即可實(shí)現(xiàn)筆記本與小車的無(wú)線Wi-Fi連接。從PC控制平臺(tái)界面中可以看出小車服務(wù)器傳回的視頻畫面較為清晰和流暢。通過(guò)筆記本上的設(shè)置的六個(gè)按鍵即可實(shí)現(xiàn)小車的前后,左右移動(dòng)以及攝像頭的左右旋轉(zhuǎn),左前,右前等雙鍵組合鍵在小車上的實(shí)現(xiàn)效果也比較理想。該系統(tǒng)的不足之處在于小車的直流電機(jī)無(wú)法控制小車的移動(dòng)速度,后續(xù)將采用步進(jìn)電機(jī)改進(jìn)小車的整體性能。

      4 結(jié)語(yǔ)

      針對(duì)不同的市場(chǎng)需求,將嵌入式視頻服務(wù)器與無(wú)線可移動(dòng)小車緊密結(jié)合,實(shí)現(xiàn)了嵌入式應(yīng)用領(lǐng)域的創(chuàng)新,具有廣泛的應(yīng)用前景。該系統(tǒng)有些地方還需改進(jìn),在后期的研究中會(huì)逐漸完善其功能與穩(wěn)定性。

      [1] 王小紅,周淵平,方曉翠.嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].通信技術(shù),2011,44(06):105-109.

      [2] 楊宗德,鄧玉春. LINUX高級(jí)程序設(shè)計(jì)[M].北京:人民郵電出版社,2009:310-326.

      [3] 劉森.嵌入式接口技術(shù)與Linux驅(qū)動(dòng)開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2010:113-129.

      [4] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2010:115-134.

      [5] 位元文化. Linux C/C++入門與進(jìn)階[M].北京:科學(xué)出版社,2004:127-158.

      [6] KAY A R.UNIX System Programming[M].北京:機(jī)械工業(yè)出版社,2005:310-335.

      [7] 高揚(yáng),石秀民.基于嵌入式平臺(tái)的 WLAN實(shí)現(xiàn)[J].吉林大學(xué)學(xué)報(bào),2006,24(1):103-107.

      [8] 田澤.嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用實(shí)驗(yàn)教程[M].北京:北京航空航天大學(xué)出版社,2005:106-130.

      [9] 丁林松,黃麗琴.Qt4圖形設(shè)計(jì)與嵌入式開(kāi)發(fā)[M].北京:人民郵電出版社,2009:239-265.

      猜你喜歡
      服務(wù)器端內(nèi)核線程
      萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      淺談linux多線程協(xié)作
      在Windows中安裝OpenVPN
      Linux線程實(shí)現(xiàn)技術(shù)研究
      網(wǎng)頁(yè)防篡改中分布式文件同步復(fù)制系統(tǒng)
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      如皋市| 桦甸市| 营口市| 颍上县| 普宁市| 泗水县| 乌拉特后旗| 鄂温| 镇宁| 墨竹工卡县| 桑植县| 林西县| 炎陵县| 东城区| 格尔木市| 大新县| 获嘉县| 留坝县| 九龙县| 西丰县| 富民县| 运城市| 乌拉特前旗| 延边| 东台市| 抚远县| 贵溪市| 梁河县| 微山县| 临泽县| 分宜县| 清河县| 禄丰县| 县级市| 江油市| 花垣县| 福州市| 兴宁市| 元氏县| 壶关县| 鄂托克前旗|