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

基于Qt/Embedded的嵌入式數字監控系統控制界面的實現

2011-06-06 08:13:50于幫偉鄧華秋
電視技術 2011年24期
關鍵詞:嵌入式界面設置

于幫偉,鄧華秋

(華南理工大學 理學院,廣東 廣州 510640)

0 引言

在監控系統中,屏幕顯示(On Screen Display,OSD)是實現人機對話的基礎。目前為止,在簡單的硬件平臺上實現OSD主要有兩種途徑:一種實現方法是提取視頻的行場同步信號,并以此控制字符發生電路,通過開關在原視頻信號中嵌入字符信號,這種實現方法比較復雜,而且穩定性差;第二種方法是通過OSD專用集成芯片實現,這種方法相對于前一種實現較簡單,但是會增加系統的成本[1]。對于嵌入式系統來說,成本是必須考慮的重要方面。本文在以S3C6410為主控芯片的Linux嵌入式平臺上,在沒有增加硬件外設的條件下,利用Qt/Embed?ded4.5.3實現了人機交互界面,能夠準確響應自定義鍵盤信號。

1 系統介紹

S3C6410是一款16/32位RISC微處理器,以ARM1176JZF-S為核心,提供了強大的視頻處理能力和豐富的內部設備。操作系統為Linux2.6.24,作為穩定的開源系統,Linux為開發工作提供了很強的自主性和便利性。

界面開發工具是諾基亞公司提供的開源工具包Qt/Embedded4.5.3,使用C++作為開發語言。Qt/Embedded為界面開發提供了豐富的控件類、界面修飾工具和字體庫。Qt/Embedded的應用程序還可以直接寫內核緩沖幀。同時,作為嵌入式平臺專用庫,Qt/Embedded提供了自定義鍵盤和鼠標驅動接口,占用資源較少,裁剪方便,隨著更高版本的推出,移植到嵌入式平臺也越來越簡單,開發人員有更多的精力集中在界面的設計和優化上。Qt代碼可以一次編寫,多次編譯實現跨平臺應用,基本界面調試在PC上就可以進行,提高開發效率。系統整體框架如圖1所示。

2 視頻窗口疊加的實現

選擇在S3C6410上實現控制界面功能,在于S3C6410可以同時輸出5層視頻窗口,最終的視頻輸出是5層視頻窗口通過α疊加和Color Key綜合作用的結果,疊加方式是可編程的[2]。本文通過設置Color Key寄存器實現控制界面的隱藏和顯示。

在實際的顯示中,最外層視窗0(window0)顯示Qt/Embedded界面,視窗1(window1)顯示RGB565格式的視頻。視窗0和視窗1通過Color Key的疊加過程如圖2所示。

具體操作從硬件寄存器的設置和Linux應用程序兩個方面來說明。

2.1 Color Key的主要功能寄存器

在硬件層面主要是通過設置window1的Color Key控制寄存器W1KEYCON0實現的,W1KEYCON0的功能位如表1所示。

表1 window1的Color Key控制寄存器[2]

KEYBLEN位選擇是否使用alpha疊加功能疊加非關鍵區域,在使用Color Key實現疊加功能時,該位保持默認值。KEYEN_F是Color Key的開關位;實驗證明DIR?CON位是疊加效果控制位,當DIRCON為1時,window0中RGB值與COMPKEY相匹配的視頻數據將被window1中相應位置的視頻數據疊加掉;當DIRCON設置為0時,window0中的內容將被視window1完全疊加掉,相當于隱藏了視窗0中的內容,這時操作界面將隱藏。系統主要通過改變DIRCON的值來實現控制界面的隱藏與顯示。COMPKEY是window0中將被疊加掉的RGB值。

2.2 軟件實現

在Linux操作系統中,主要通過Linux內核提供的系統調用函數ioctl()實現對W1KEYCON0的設置[3],其原型為int ioctl(int handle,int cmd,[int*argdx,int argcx])。

ioctl是對設備進行簡單操作的方法。其中,參數ar?gcx一般為控制設備的參數指針。隨S3C6410一起發布的Linux內核在Frame Buffer的驅動中實現了ioctl()函數接口,在用戶層通過系統調用函數ioctl()即可實現對W1KEYCON0的設置,從而實現視窗的疊加。其中,ioctl()設置寄存器W1KEYCON0的參數是如下結構體變量:

其中,direction用來設置W1KEYCON0中的DIRCON值。3個顏色分量用來設置COMPKEY的值。為了便于COMPKEY的設置,控制界面除有效區域外都設置成黑色。因此,COMPKEY 3個RGB分量應都為0。由于Col?or Key的顏色分量默認為RGB888格式的視頻格式,而文中使用的是RGB565格式的視頻,所以,在設置COMP?KEY時,紅色分量compkey_red和藍色分量compkey_blue的低3位需置位,綠色分量compkey_green的低2位需置位。

因此,顯示操作界面的Color Key的成員變量如下:

關閉或隱藏操作界面的結構體變量初始化如下:

3 界面的實現

本文所采用的平臺要求通過帶有4個方向鍵和回車鍵的鍵盤實現控制界面的操作。然而,默認情況下Qt/Embedded只支持個人PC的鍵盤模式,并且操作也不能完全由5個按鍵來完成,因此,需要子類化用到的控件類,得到自定義的控件組,使Qt/Embedded控件更適用于當前的嵌入式硬件系統。最后,為了實現與視頻信號疊加,需要對界面作一定的修飾。

3.1 實現正確的鍵盤響應

3.1.1 使Qt/Embedded響應自定義鍵盤信號

在內核層,鍵盤驅動通過每個按鍵的中斷處理函數產生一個唯一的16進制數表示的鍵值,定義的鍵值與5個按鍵的對應關系為:回車(0x1),上(0x2),下(0x3),右(0x4)和左(0x5),通過驅動程序的read()將該鍵值發送到Linux用戶層。

在Qt/Embedded中有自定義鍵盤接口類QWSKey?boardHandler,通過子類化該類可以讓Qt響應自定義鍵盤信號。實現自定義鍵盤用到的另一個關鍵類是QSocketNotifier。QSocketNotifier對象可以監聽Linux中的文件描述符,當關于該文件的指定事件發生時,QWS?KeyboardHandler對象將發送activated()信號,通過Qt的信號槽機制可以將Qt以外的事件整合到Qt事件循環隊列中[4],從而實現響應外部事件的效果。

通過在QWSKeyboardHandler子類的構造函數中創建QSocketNotifier對象,可以監聽鍵盤驅動的輸出信號,當檢測到鍵盤文件有輸出信號時,要做的工作如圖3所示[5]。

圖3 鍵盤信號處理流程

QWSKeyboardHandler的子類實現之后,便成功定義了Qt鍵盤驅動。調用上述鍵盤驅動,需要使用Qt服務進程管理類QWSServer。QWSServer可以封裝一個Qt服務進程,這里通過QWSServer::setKeyboardHandler(QWS?KeyboardHandler*)封裝上面的Qt鍵盤驅動。程序運行時,QWSServer將初始化鍵盤設備;當鍵盤產生中斷時,QWSServer讀取其中的鍵盤事件,并且將鍵盤事件傳送給相應的應用程序,從而實現Qt/Embedded應用程序響應自定義鍵盤信號。

3.1.2 讓Qt/Embedded控件正確響應鍵盤信號

得到Qt可以識別的鍵盤信號之后,要求使用這5個按鍵信號完成所有必要的操作。然而,默認情況下,Qt/Embedded中的控件只能響應典型的PC鍵盤信號。可以通過重定義Qt/Embedded控件類中的鍵盤事件響應函數keyPressEvent(QKeyEvent*event)來改變控件對鍵盤信號的響應[4],這是一個繼承于QWidget的虛函數,主要實現控件對鍵盤事件的響應。控制界面的多數工作是通過QComoboBox顯示和完成的,重定義后的QComoboBox的成員函數keyPressEvent(QKeyEvent*event)關鍵代碼如下:

其中,OSD_open為標示OSD界面顯示與否的全局變量,當OSD正在顯示時,OSD_open=1,否則OSD_open=0,這里QComboBox分兩種情況響應鍵盤事件:

1)當OSD_open=1時,可以控制圖像化的OSD界面。按下左右鍵,QComboBox中的文本元素循環顯示。通過控制上下鍵,主界面循環改變聚焦的控件,相當于PC上的Tab鍵的功能。

2)當OSD_open=0時,控制界面已經被視頻數據完全疊加,說明當前輸出的視頻沒有控制界面,但是仍能夠正常響應鍵盤事件,當回車鍵按下時,調用Display Con?troller的ioctl()函數可以重新顯示控制界面。

3.2 控制功能的實現

對其他應用程序的控制是通過Qt/Embedded的信號槽機制實現的。信號和槽是一種高級接口,應用于對象之間的通信,是Qt的核心特性,也是Qt區別于其他工具包的重要之處[6]。控件接收正確的鍵盤信號后,將發送信號,之后與該信號通過connect()函數建立連接的槽函數被執行,控制工作在槽函數中完成。例如本文的監控系統能夠實現視頻的黑白和彩色兩種輸出模式,之間的轉換通過信號槽機制實現如下:

connect(displaymode_combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(displaymode(int)));

其中,displaymode_combobox為選擇黑白或彩色的QComboBox對象,當通過左右鍵改變它的文本元素時,displaymode_combobox的信號currentIndexChanged(int)將被發送,該信號將觸發與其建立連接的槽函數display?mode(int),在該槽函數中實現黑白彩色的轉換。

3.3 控制界面的修飾

操作界面顯示時應盡量不影響視頻的顯示效果,盡量只顯示與控制相關的字符信息,因此,需要對界面進行必要的修飾。為了便于視頻窗的疊加,將主窗口的顏色設置為黑色:

pal.setColor(QPalette::Window,QColor(0x00,0xff,0x00,0x00));

widget->setPalette(pal);

同時,Qt/Embedded4.5.3在嵌入式Linux中默認的背景顏色為綠色,為了便于圖層疊加,將背景顏色設置為黑色,通過QWSServer來實現的。通過該類,將背景顏色設置為黑色的語句為:

QBrush*BackColor=new QBrush(QColor(0,0,0));

QWSServer::setBackground(*BackColor);

可以通過setStyleSheet()函數進一步對界面的細節進行修飾,以美化界面。

3.4 中英文顯示

為了滿足不同用戶的需要,界面實現了中英文顯示,并且能夠手動切換。英語作為Qt/Embedded的默認語言,只需要系統的字體庫就可以正常顯示。Qt/Embedded提供了大量的國際化工具[6],可以方便地生成自己的翻譯文件(.qm文件)。默認情況下,翻譯文件會在Qt/Em?bedded安裝目錄的/lib/fonts/下尋找對應的字體庫,只要將漢語字體庫放入該文件夾下,就可以通過翻譯文件實現中英文雙語顯示。

4 實驗驗證

得益于S3C6410的視頻疊加功能和Linux操作系統的支持,本文在S3C6410 Linux嵌入式平臺上使用Qt/Embedded 4.5.3,成功實現了視頻監控系統的控制界面功能,同時,利用自制的鍵盤流暢的控制界面。本文所述功能已經在監控攝像機中得到應用。效果如圖4所示。

[1] 王江,潘亞濤,陳健.DVB-C機頂盒中OSD功能的設計與實現[J].電視技術,2000,24(5):31-33.

[2]Samsung Electronics.S3C6410X_UM_Rev[EB/OL].[2011-03-25].http://download.csdn.net/download/dclx/2759785.

[3]CORBET J,RUBINI A,KROAH-HARTMAN G.Linux設備驅動程序[M].北京:中國電力出版社,2009.

[4]Nokia Corporation.Qt for Embedded Linux reference documentation[EB/OL].[2011-03-25].http://doc.qt.nokia.com/4.5/index.html.

[5]張萍,徐晶.Qt_embedded環境下嵌入式鍵盤驅動的實現[J].計算機工程,2007,33(11):254-258.

[6]BLANCHETTE J,SUMMERFIELD M.C++GUI programming with Qt 4[M].2nd ed.北京:電子工業出版社,2008.

猜你喜歡
嵌入式界面設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
搭建基于Qt的嵌入式開發平臺
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
人機交互界面發展趨勢研究
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 久久精品人妻中文视频| 成人av专区精品无码国产| 日韩毛片免费观看| 亚洲Aⅴ无码专区在线观看q| 五月婷婷丁香色| 免费看av在线网站网址| 亚洲第一天堂无码专区| 国产成人盗摄精品| 免费在线观看av| 又粗又硬又大又爽免费视频播放| 98精品全国免费观看视频| 中文字幕在线观看日本| 亚洲第一网站男人都懂| 激情综合网址| 伊伊人成亚洲综合人网7777| 国产男人的天堂| a级毛片网| 不卡视频国产| 国产精品区视频中文字幕| 超碰aⅴ人人做人人爽欧美 | 欧美一级一级做性视频| 青草免费在线观看| 欧洲极品无码一区二区三区| 久久精品中文字幕少妇| 国产va在线| 亚洲视频免费在线看| 午夜日b视频| 国产综合色在线视频播放线视| 91午夜福利在线观看精品| 欧美在线网| 九色综合伊人久久富二代| 日韩精品一区二区三区免费在线观看| 精品无码一区二区三区在线视频| 国产第一页免费浮力影院| 久夜色精品国产噜噜| 国产精品爽爽va在线无码观看| 午夜欧美理论2019理论| jizz在线观看| 国产精品99在线观看| 国产日韩欧美一区二区三区在线| 999精品色在线观看| 国产视频a| 日韩欧美国产精品| 自拍亚洲欧美精品| a级毛片免费看| 91精品亚洲| 亚洲AⅤ波多系列中文字幕| 毛片免费视频| 四虎永久免费地址| 91精品视频网站| 中文字幕在线观| 亚洲无码日韩一区| 欧美日韩在线国产| 性色生活片在线观看| 在线欧美一区| 伊人五月丁香综合AⅤ| 免费一级毛片在线播放傲雪网| 在线播放精品一区二区啪视频| 国产微拍一区| 免费中文字幕一级毛片| 操国产美女| 91人妻日韩人妻无码专区精品| 欧美伊人色综合久久天天| 久久无码av一区二区三区| 精品国产三级在线观看| 日韩精品一区二区三区中文无码| 日本一区二区不卡视频| 天天色综网| 亚洲人成亚洲精品| 伊人91视频| 国产欧美日韩18| 男女男免费视频网站国产| 欧美成人手机在线视频| 99视频在线精品免费观看6| 国产欧美在线| 中文字幕乱码二三区免费| 19国产精品麻豆免费观看| 国产男人的天堂| 亚洲看片网| 青青草国产免费国产| 九色91在线视频| 色窝窝免费一区二区三区 |