999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

QNX下低成本視頻監(jiān)控方案及實(shí)現(xiàn)

2015-01-13 02:19:14蔣俊銘
化工自動化及儀表 2015年9期
關(guān)鍵詞:設(shè)備

蔣俊銘

(上海交通大學(xué)自動化系,上海 200240)

控制系統(tǒng)中,在進(jìn)行實(shí)時控制的同時,常常還希望能夠得到被控對象的視頻監(jiān)控圖像,這時就必須使用到攝像頭。USB攝像頭作為市場上廣泛使用的設(shè)備,具有價格低廉、運(yùn)用廣泛及技術(shù)成熟等特點(diǎn)[1]。使用USB攝像頭可以加速系統(tǒng)開發(fā),同時還能保證系統(tǒng)的穩(wěn)定性和可靠性。然而QNX操作系統(tǒng)卻沒有提供對于UVC(USB Video Class)攝像頭的支持,為了在QNX控制系統(tǒng)中引入視頻監(jiān)控,筆者介紹了在resource manager框架[2]下UVC標(biāo)準(zhǔn)攝像頭驅(qū)動程序的編寫。

與傳統(tǒng)的操作系統(tǒng)不同,QNX操作系統(tǒng)是一個完全的微內(nèi)核實(shí)時操作系統(tǒng)[3],在其內(nèi)核中,只提供了線程服務(wù)、信號服務(wù)、消息傳輸服務(wù)、同步服務(wù)、時間服務(wù)、調(diào)度服務(wù)和進(jìn)程管理服務(wù)[3]。而常見的網(wǎng)絡(luò)協(xié)議棧、文件系統(tǒng)、設(shè)備驅(qū)動及UI接口等都是作為獨(dú)立的進(jìn)程存在于操作系統(tǒng)中的。QNX充分發(fā)揮了虛擬內(nèi)存技術(shù)的優(yōu)勢,保證了系統(tǒng)中各個模塊的獨(dú)立,同時也保證了系統(tǒng)各個進(jìn)程的安全。QNX系統(tǒng)的內(nèi)核架構(gòu)如圖1所示。

圖1 QNX系統(tǒng)內(nèi)核架構(gòu)

2 驅(qū)動程序框架

為了便于實(shí)現(xiàn)QNX操作系統(tǒng)下驅(qū)動程序的編寫和多進(jìn)程程序的模塊化,系統(tǒng)提供了resource manager框架。該框架使用了POSIX接口來實(shí)現(xiàn)服務(wù)進(jìn)程和客戶端進(jìn)程的通信,還提供了類似于LINUX文件系統(tǒng)模型的設(shè)備訪問接口。這在提高系統(tǒng)靈活性的同時也降低了開發(fā)難度。resource manager的結(jié)構(gòu)框架如圖2所示。

圖2 resource manager結(jié)構(gòu)框架

在該框架下,可以方便地使用open()、read()及write()[2]等函數(shù)對QNX下的設(shè)備進(jìn)行簡單而快捷的操作。具體的操作流程為:客戶端向驅(qū)動程序發(fā)送IPC信息(調(diào)用open()等函數(shù)時產(chǎn)生),驅(qū)動程序端的消息等待函數(shù)從阻塞等待狀態(tài)醒來,然后再到resource manager層搜索相關(guān)的函數(shù)來處理該信息;待處理過程結(jié)束后,消息等待函數(shù)重新回到消息等待狀態(tài)。為了實(shí)現(xiàn)完整的resource manager功能,在編寫驅(qū)動程序時,需要提供相應(yīng)的消息處理函數(shù)。本驅(qū)動程序在io_open()函數(shù)(處理由客戶端open()函數(shù)向resource manager發(fā)送的io_open消息)中實(shí)現(xiàn)了UVC攝像頭描述符解析、配置及啟動等功能,在io_read()函數(shù)中實(shí)現(xiàn)了同步查詢式的圖像幀數(shù)據(jù)傳輸?shù)裙δ埽鴌o_close()函數(shù)則用于取消數(shù)據(jù)傳輸及關(guān)閉設(shè)備等。

3 UVC標(biāo)準(zhǔn)與USB攝像頭操作

USB設(shè)備支持熱插拔,標(biāo)準(zhǔn)統(tǒng)一,同時還有很好的通用性,越來越多的廠商愿意在自己的設(shè)備中加入對USB標(biāo)準(zhǔn)的支持。然而隨著越來越多廠商實(shí)現(xiàn)了各自的USB攝像頭,USB攝像頭的控制協(xié)議也變得越來越紛亂,為了實(shí)現(xiàn)對USB攝像頭的標(biāo)準(zhǔn)化,USB標(biāo)準(zhǔn)化組織制定了UVC標(biāo)準(zhǔn)協(xié)議。

UVC標(biāo)準(zhǔn)的基本思想為:將USB攝像頭的基本信息(設(shè)備描述符)按一定的格式寫在設(shè)備自身內(nèi)部,當(dāng)USB攝像頭接入系統(tǒng)時,標(biāo)準(zhǔn)的USB協(xié)議棧能夠正確地識別該設(shè)備所屬的子類,然后將設(shè)備注冊到相應(yīng)的驅(qū)動程序,設(shè)備對應(yīng)的驅(qū)動程序解讀存儲于設(shè)備內(nèi)部的設(shè)備描述符,并根據(jù)描述符提供的信息,按UVC協(xié)議完成對設(shè)備的控制和圖像的獲取。設(shè)備描述符如圖3所示。

圖3 設(shè)備描述符結(jié)構(gòu)

在獲取了以上描述符并成功注冊設(shè)備之后,驅(qū)動程序便可以根據(jù)UVC操作流程對攝像頭進(jìn)行操作了。

UVC對于攝像頭的控制主要有視頻控制請求和視頻流請求兩種。這兩種請求都是通過設(shè)置請求(set request)和獲取請求(get request)兩種操作來實(shí)現(xiàn)的。設(shè)置請求和獲取請求的操作參數(shù)分別見表1、2。

表1 設(shè)置請求操作參數(shù)

表2 獲取請求操作參數(shù)

由表1和表2的比較可知設(shè)置請求操作和獲取請求操作的區(qū)別是bmRequestType和bRequest兩個參數(shù)不同,bmRequestType指明了具體的操作類型,bRequest指明了要獲取或者設(shè)置的參數(shù)項(xiàng),這些參數(shù)項(xiàng)所對應(yīng)的實(shí)體和實(shí)體內(nèi)的對象分別由wIndex和wValue指定。需注意的是在同種操作中,針對實(shí)體(接口通常被視為虛擬實(shí)體)和端點(diǎn)的請求類型碼是不同的。在以上兩個操作的基礎(chǔ)上,UVC標(biāo)準(zhǔn)協(xié)議定義了具體的視頻控制請求和視頻流請求。當(dāng)攝像頭能夠自動調(diào)節(jié)參數(shù)時,處理好視頻流請求操作便可以控制攝像頭了。

視頻流請求最重要的操作是參數(shù)探測、參數(shù)確認(rèn)和接口切換,這些操作是啟動視頻流傳輸必須的步驟,圖4為具體的視頻啟動流程。在啟動視頻的過程中,需要進(jìn)行3次設(shè)置操作和一次獲取操作。在探測過程中,需要設(shè)置的參數(shù)主要有格式編號、幀索引編號及幀間隔等,其中幀格式編號指明了所使用圖像的格式,如MJPG,幀索引編號用于設(shè)定分辨率,而幀間隔用于設(shè)定幀率。當(dāng)獲取的默認(rèn)設(shè)置不能滿足要求時需要設(shè)置以上參數(shù)。

圖4 視頻啟動流程

4 QNX下程序的實(shí)現(xiàn)

UVC驅(qū)動程序的主要工作包括兩個部分:與QNX系統(tǒng)USB協(xié)議棧進(jìn)行數(shù)據(jù)交互和建立resource manager處理來自用戶的信息。與QNX系統(tǒng)USB協(xié)議棧進(jìn)行數(shù)據(jù)交互的過程如圖5所示。該圖詳細(xì)描述了UVC驅(qū)動程序與其他程序的交互順序。USB協(xié)議棧隨操作系統(tǒng)啟動后處于服務(wù)狀態(tài),然后UVC驅(qū)動進(jìn)程啟動并向USB棧注冊該驅(qū)動所處理設(shè)備的類型(UVC設(shè)備子類型在USB標(biāo)準(zhǔn)中為0x0e)和相應(yīng)的回調(diào)函數(shù)。

圖5 與QNX系統(tǒng)USB協(xié)議棧進(jìn)行 數(shù)據(jù)交互的過程

完成注冊后,當(dāng)有UVC標(biāo)準(zhǔn)的攝像頭接入系統(tǒng)時,QNX下USB協(xié)議棧會主動通知UVC驅(qū)動程序。具體為圖5中“設(shè)備接入通知”所示。要啟動視頻流傳輸,還需要客戶端啟動相應(yīng)的程序,如圖5中“打開設(shè)備”所示。因?yàn)閞esource manager支持POSIX標(biāo)準(zhǔn),所以可以很方便地使用open()、read()及close()等POSIX標(biāo)準(zhǔn)函數(shù)實(shí)現(xiàn)設(shè)備的操作。

圖像數(shù)據(jù)的傳輸是通過同步查詢的方式實(shí)現(xiàn)的。USB下數(shù)據(jù)的傳輸需要建立URB(Usb Request Block)[4],然后用如下函數(shù)向USB協(xié)議棧提交URB和數(shù)據(jù)傳輸請求:

int usbd_setup_isochronous(

struct usbd_urb * urb, //URB指針

uint32_t flags,//請求傳輸類型

int32_t frame,//特定幀編號

void * addr,//緩沖區(qū)地址

uint32_tlen );//緩沖區(qū)長度

視頻傳輸啟動后,數(shù)據(jù)幀隨URB返回到驅(qū)動程序。當(dāng)獲取數(shù)據(jù)幀之后,需要將圖像數(shù)據(jù)從數(shù)據(jù)幀中提取出來。本程序中使用了MJPEG格式作為圖像幀格式,相應(yīng)的數(shù)據(jù)幀格式如圖6所示。當(dāng)URB收到數(shù)據(jù)并返回后,會同時返回數(shù)據(jù)幀的總長度,將幀頭長度減去之后,得到有效數(shù)據(jù)的長度,將有效圖像數(shù)據(jù)從數(shù)據(jù)幀中取出,并重新組裝成圖像幀,便可以成功獲取MJPEG圖像幀了。

5 結(jié)束語

選用了羅技C270型號的攝像頭作為圖像獲取設(shè)備,并在QNX平臺下成功實(shí)現(xiàn)了UVC標(biāo)準(zhǔn)下攝像頭驅(qū)動程序的編寫。該驅(qū)動程序能夠穩(wěn)定獲取320×240、30Hz的圖像,并能夠滿足對分辨率要求不高的環(huán)境下的監(jiān)控。因?yàn)樵摂z像頭驅(qū)動程序滿足UVC標(biāo)準(zhǔn),所以該驅(qū)動程序同時還具有很好的移植性,可以很方便地進(jìn)行移植。

圖6 數(shù)據(jù)幀格式

[1] 李涵.USB接口驅(qū)動的研究與設(shè)計[D].青島:山東科技大學(xué),2005.

[2] 徐竟青,黃俊峰,李一平.QNX設(shè)備驅(qū)動程序的編制[J].計算機(jī)工程,2003,29(12): 176~178.

[3] 任寧寧.多核平臺下強(qiáng)實(shí)時操作系統(tǒng)QNX調(diào)度機(jī)制的應(yīng)用研究[D].成都:西南交通大學(xué),2013.

[4] 楊偉,劉強(qiáng),顧新.Linux下USB設(shè)備驅(qū)動研究與開發(fā)[J].計算機(jī)工程,2006,32(19):283~285.

猜你喜歡
設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
調(diào)試新設(shè)備
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點(diǎn)滿滿的可穿戴智能設(shè)備
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
HTC斥資千萬美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 成人免费视频一区| 一本一本大道香蕉久在线播放| 熟妇丰满人妻av无码区| 亚洲色图欧美激情| 精品无码日韩国产不卡av| 少妇被粗大的猛烈进出免费视频| 香蕉综合在线视频91| 免费人成视频在线观看网站| 亚洲国内精品自在自线官| 国产拍揄自揄精品视频网站| 色吊丝av中文字幕| 福利国产在线| 精品成人一区二区| 亚洲精品无码不卡在线播放| 国产中文一区二区苍井空| 91口爆吞精国产对白第三集 | 国产一区二区丝袜高跟鞋| 99久久亚洲精品影院| 亚洲色图另类| 亚洲Va中文字幕久久一区| 伊人国产无码高清视频| 国产丰满大乳无码免费播放| 国产欧美在线观看视频| 日韩成人午夜| 香蕉在线视频网站| 亚洲欧美另类日本| 成人在线不卡视频| 精品国产99久久| 57pao国产成视频免费播放| 国产黑人在线| 日韩精品一区二区三区中文无码| 一本大道东京热无码av | 亚洲一区二区日韩欧美gif| 久久亚洲黄色视频| 国产流白浆视频| 久久免费精品琪琪| av在线手机播放| 亚洲欧美日韩另类在线一| 免费国产高清视频| 久久免费视频6| 91久久国产成人免费观看| 国产女人在线| 日本免费福利视频| 强奷白丝美女在线观看| 亚洲高清在线播放| 亚洲成年人网| 伊人久久久大香线蕉综合直播| 国产成人狂喷潮在线观看2345| 狠狠色噜噜狠狠狠狠色综合久| 成人另类稀缺在线观看| 国产视频你懂得| 国产高清在线观看91精品| 亚洲日韩精品欧美中文字幕| 国产日本一区二区三区| 亚洲欧美极品| 天堂网亚洲系列亚洲系列| 思思99思思久久最新精品| 国产jizzjizz视频| 精品一区二区三区水蜜桃| 国产在线欧美| 国产va免费精品观看| 国产亚洲欧美日韩在线观看一区二区| 无码专区第一页| 国产在线观看91精品亚瑟| 欧美人人干| 国产亚洲欧美另类一区二区| 欧美视频在线不卡| 国产第一页免费浮力影院| 亚洲经典在线中文字幕| 91区国产福利在线观看午夜 | 国产精品尹人在线观看| 午夜福利视频一区| 国产亚洲日韩av在线| 亚洲色图欧美视频| 日本91视频| 国产9191精品免费观看| 毛片最新网址| 亚洲中文字幕av无码区| 91精品专区| 波多野结衣视频一区二区| 亚洲一区免费看| 热热久久狠狠偷偷色男同|