摘 要: 為了實(shí)現(xiàn)智能安防系統(tǒng)人機(jī)界面的友好性和提高人機(jī)交互效率,采用三星S3C6410為核心的硬件平臺(tái)和以嵌入式Linux系統(tǒng)為核心的軟件平臺(tái),,并在此基礎(chǔ)上使用開(kāi)放源代碼的圖形界面庫(kù)Qt和處理視頻模塊的Linphone庫(kù),,開(kāi)發(fā)了智能安防系統(tǒng)的應(yīng)用系統(tǒng)。經(jīng)測(cè)試,,基本上達(dá)到了設(shè)計(jì)要求,,并在跨平臺(tái)性、可擴(kuò)展性等方面得到了顯著提高,。
關(guān)鍵詞: Linux,;Qt;Linphone,;家居安防系統(tǒng)
電子信息技術(shù),、集成電路技術(shù),、通信技術(shù)、軟件開(kāi)發(fā)技術(shù)的發(fā)展,,帶動(dòng)了一系列現(xiàn)有電子產(chǎn)品的更新?lián)Q代,。家居安防系統(tǒng)終端由最簡(jiǎn)單的點(diǎn)擊按鍵到集成模塊的出現(xiàn),由普通的液晶顯示到觸摸顯示的實(shí)現(xiàn),,極大地方便了用戶的使用,。在當(dāng)前的安防系統(tǒng)中,為了使用戶更好地實(shí)現(xiàn)與系統(tǒng)的交互,,達(dá)到系統(tǒng)控制的現(xiàn)代化,、智能化、人性化,,需要一個(gè)操作簡(jiǎn)單,、運(yùn)行可靠、占用資源少的人機(jī)交互界面,。
從20世紀(jì)90年代開(kāi)始,,嵌入式系統(tǒng)就開(kāi)始引入圖形化的用戶設(shè)計(jì)系統(tǒng)。目前在嵌入式界面設(shè)計(jì)中,,比較流行的有MiniGUI[1],、Qt\Embedded[2]、OpenGUI[3]等,。但相比較而言,,Qt[4]是一個(gè)跨平臺(tái)的C++圖形界面應(yīng)用程序框架,它實(shí)際上是一個(gè)類庫(kù),,里面包括了大量的重要類,,完全面向?qū)ο螅瑩碛辛己玫臄U(kuò)展性與穩(wěn)定性,,并支持模塊化編程。在設(shè)計(jì)界面的過(guò)程中,,可以充分利用Qt高度面向?qū)ο蠛湍K化的特征,,從繁瑣的X編程中解脫出來(lái),專注于程序本身的內(nèi)容,,這樣使在Linux系統(tǒng)下界面設(shè)計(jì)成為一件非常輕松的事,。且現(xiàn)在廣泛應(yīng)用的4.7版本支持界面設(shè)計(jì)與編寫(xiě)代碼分開(kāi)的設(shè)計(jì)模式,可以極大地方便開(kāi)發(fā)人員設(shè)計(jì)相對(duì)性能更高的界面,,大大地提高了開(kāi)發(fā)周期,。更重要的是,這樣的設(shè)計(jì)理念,,可以為產(chǎn)品的后期維護(hù)提供極大地保障,。
本文基于此提出了在嵌入式Linux系統(tǒng)下,基于Qt和Linphone[5]庫(kù)的安防系統(tǒng)的開(kāi)發(fā),其中Qt主要要求設(shè)計(jì)界面簡(jiǎn)單的通信,,Linphone主要用來(lái)對(duì)視頻的處理,,而把三星S3C6410作為該系統(tǒng)的控件器兼處理器。
1 硬件組成及工作原理
本方案的硬件開(kāi)發(fā)平臺(tái)主要由終端機(jī),、攝像頭,、電話機(jī)、管理中心,、大堂主機(jī),、路由器、智能家居模塊,、防區(qū)模塊等組成,,具體如圖1所示。
其中終端機(jī)采用ARM11架構(gòu)的S3C6410作為處理器,,其上的顯示屏采用彩色數(shù)字TFT-LCD,,觸摸屏為數(shù)字電阻式,且它們的大小為10寸,、分辨率為1 000×600,。攝像頭通過(guò)USB接口與終端機(jī)連接,完成視頻圖像的采集,,實(shí)現(xiàn)可視功能,。電話機(jī)通過(guò)RVVP6X0.5屏蔽線與終端機(jī)連接,完成音頻的采集,,實(shí)現(xiàn)對(duì)講功能,;防區(qū)模塊主要獲取用戶比較感興趣的信息,如門(mén)禁信息,、報(bào)警信息,、煙霧信息等;智能家居模塊主要包含燈光,、電視,、窗簾、電源,、煤氣等模塊,。最后終端機(jī)通過(guò)交換機(jī)分別與大堂主機(jī)、管理中心連接,,前者可以實(shí)現(xiàn)呼叫室內(nèi)終端機(jī),、管理中心、門(mén)禁開(kāi)鎖等功能,,后者主要用來(lái)統(tǒng)一管理各終端機(jī),、大堂主機(jī)等,。智能家居模塊和防區(qū)模塊是終端機(jī)主要處理的信息模塊,也是終端機(jī)界面將要顯示與交互的數(shù)據(jù)內(nèi)容,,本文分別設(shè)計(jì)了與其連接的無(wú)線接收與有線接收,。無(wú)線采用WiFi協(xié)議進(jìn)行連接,有線采用RVV3X0.5屏蔽線進(jìn)行連接,。
由于終端機(jī)直接與用戶接觸,,它的好壞直接影響到安防系統(tǒng)的接受度,所以本文主要介紹終端機(jī)的界面顯示與通信模塊,。
2 軟件設(shè)計(jì)與實(shí)現(xiàn)
2.1 功能模塊
整個(gè)終端系統(tǒng)的軟件部分如圖2所示,,采用3層模型的設(shè)計(jì)思想,主要利用Qt提供的信號(hào)與槽機(jī)制來(lái)實(shí)現(xiàn),,在顯示部分,,采用Qt的Model/View[6]模型,它類似于Smalltalk的MCV模型,,即數(shù)據(jù),、控制、顯示分開(kāi)處理,。View是Model對(duì)象的屏幕顯示,,即用來(lái)顯示數(shù)據(jù),Model是應(yīng)用程序?qū)ο?,它?duì)外部數(shù)據(jù)和View對(duì)象進(jìn)行溝通,,引入的Delegate用來(lái)定制數(shù)據(jù)項(xiàng)的渲染和編程。
第1層為主控層:主控層包含1個(gè)主界面,。它是一個(gè)管理程序,,負(fù)責(zé)對(duì)其他各個(gè)功能部分的管理協(xié)調(diào)以及和外部通信。在主界面,,除了包含第2層的功能圖標(biāo)外,,還包含時(shí)間顯示功能,方便用戶查看實(shí)時(shí)時(shí)間,,另外,,還設(shè)計(jì)一個(gè)報(bào)警信息圖標(biāo),顯示當(dāng)前新產(chǎn)生的防區(qū)信息數(shù),。
第2層為功能層:該層主要有5個(gè)功能界面組成,呼叫,、報(bào)警,、設(shè)置、門(mén)禁和對(duì)講界面,。(1)呼叫界面主要用于呼通對(duì)講,,除了具有一般的呼叫功能外,,還設(shè)計(jì)了群呼的功能,當(dāng)群呼成功后,,整幢樓的所有分機(jī)均響鈴,;(2)門(mén)禁信息界面主要顯示一些與門(mén)禁相關(guān)的信息,如刷卡開(kāi)鎖,、無(wú)效刷卡,、控制開(kāi)鎖(分機(jī)或管理機(jī))等;(3)報(bào)警信息界面,,主要用來(lái)顯示一些報(bào)警信息,,如報(bào)警時(shí)間、報(bào)警設(shè)備號(hào),、報(bào)警類型等,;(4)對(duì)講信息界面,主要用來(lái)顯示一些呼叫相關(guān)的信息,,如呼叫時(shí)間,、呼叫方、是否接聽(tīng)等,;(5)設(shè)置界面,,主要用來(lái)設(shè)置一些與系統(tǒng)的控制顯示信息,具體有7項(xiàng)相關(guān)內(nèi)容,。
第3層為細(xì)節(jié)層:該層主要是設(shè)置界面的子界面,,主要分為7個(gè)部分,分別是功能設(shè)置,、時(shí)間設(shè)置,、視頻調(diào)節(jié)、鈴聲設(shè)置,、觸摸校準(zhǔn),、鈴聲設(shè)置、密碼設(shè)置,,默認(rèn)顯示的是系統(tǒng)功能設(shè)置界面,。
2.2 主要模塊設(shè)計(jì)
2.2.1 視頻模塊
視頻模塊主要完成對(duì)視頻的捕獲和對(duì)視頻的播放兩部分功能。
視頻捕獲流程如圖3所示,,首先打開(kāi)攝像頭設(shè)備,,然后設(shè)置視頻信道,初始化設(shè)備信息,,接著調(diào)用Linphone庫(kù)中的viewCam_start()開(kāi)始捕獲視頻,,當(dāng)捕獲完成后,關(guān)閉設(shè)備,。當(dāng)需要停止捕獲視頻時(shí),,調(diào)用庫(kù)中的viewCam_stop()來(lái)完成,。
視頻的播放主要通過(guò)調(diào)用自定義的Video_Play來(lái)實(shí)現(xiàn),具體的流程如圖4所示,。首先進(jìn)行相關(guān)變量的初始化,,然后調(diào)用Qt庫(kù)中QFile變量avi_file的open()方法獲取播放文件,接著調(diào)用Linphone庫(kù)中的ms_snd_card_manager_get_card()初始化播放管理器,,然后再分別調(diào)用avi_start()和avi_set_audio_level()播放文件和設(shè)置音量,。另外,在需要停止的時(shí)候,,調(diào)用庫(kù)中的avi_stop()即可實(shí)現(xiàn),。
2.2.2 通信模塊
該模塊主要接收來(lái)自防區(qū)設(shè)備的實(shí)時(shí)信息。但在Qt中并沒(méi)有特定的串口控制類,,現(xiàn)在大部分使用的是第三方寫(xiě)的QExtserialport類,,在此采用Qt提供的線程控制類和其特有的信號(hào)與槽機(jī)制并結(jié)合SELECT[7]機(jī)制來(lái)完成通信功能。
Select機(jī)制可以使進(jìn)程檢測(cè)同時(shí)等待的多個(gè)I/O設(shè)備,,當(dāng)沒(méi)有設(shè)備準(zhǔn)備好時(shí),,Select阻塞,其中任一設(shè)備準(zhǔn)備好時(shí),,Select就返回,,Select的原型為:
int select(int nfds,
fd_set*readfds,,fd_set*writefds,,fd_set*exceptfds,
const struct timeval*timeout)
在本系統(tǒng)中,,首先調(diào)用Select的FD_SET,、FD_CLR和FD_ERROR 3個(gè)宏設(shè)置描述符屏蔽位,然后再調(diào)用Select后,,使用FD_ISSET檢測(cè)文件描述符fdset中對(duì)應(yīng)于文件描述符fd的位置是否被設(shè)置,。如果被設(shè)置,則開(kāi)始接收數(shù)據(jù),。
由于數(shù)據(jù)來(lái)自不同的I/O設(shè)備,,定義通信協(xié)議如圖5所示。
2.3.2 終端通信測(cè)試
為了測(cè)試通信的運(yùn)行效果,,在此輸入如下的報(bào)警命令:f8 0c 07 01 0c 01 0d 06 0a 01 02 39,。其中,f8表示接收信息的數(shù)據(jù)頭,,0c表示該數(shù)據(jù)的長(zhǎng)度為12字長(zhǎng),,07表示從防區(qū)接收?qǐng)?bào)警信息,01 0c 01 0d 06 0a 01 02表示接收來(lái)自防區(qū)號(hào)為12的分機(jī)1306A向1201的主機(jī)發(fā)出的報(bào)警命令,,39表示檢驗(yàn)碼,。最后的效果圖如圖8所示,即表示終端接收到了一條報(bào)警信息,。
本文針對(duì)當(dāng)前安防系統(tǒng)中界面人機(jī)互動(dòng)的需要,,設(shè)計(jì)了嵌入式硬件平臺(tái),并利用目前比較流行的Qt庫(kù)設(shè)計(jì)了界面,,在此基礎(chǔ)上,,采用Select通信機(jī)制實(shí)現(xiàn)了串口數(shù)據(jù)通信,采用第三方庫(kù)Linphone實(shí)現(xiàn)了視頻模塊的開(kāi)發(fā),。該系統(tǒng)在實(shí)現(xiàn)用戶的界面需要,、節(jié)省系統(tǒng)開(kāi)發(fā)周期、提高系統(tǒng)可維護(hù)性,、界面友好性,、可移植性等方面,與傳統(tǒng)的界面設(shè)計(jì)方法相比,,都具有明顯的優(yōu)勢(shì),。并對(duì)在嵌入式Linux系統(tǒng)下使用Qt/Embedded開(kāi)發(fā)其他嵌入式GUI程序具有一定的指導(dǎo)意義。
參考文獻(xiàn)
[1] 安成錦,,孫茂陽(yáng).基于嵌入式Linux系統(tǒng)的MiniGUI圖形界面開(kāi)發(fā)[J].現(xiàn)代電子技術(shù),,2005(20):108-110,113.
[2] 于幫偉,,鄧華秋.基于Qt/Embedded的嵌入式數(shù)字監(jiān)控系統(tǒng)控制界面的實(shí)現(xiàn)[J].電視技術(shù),,2011,35(24):25-28.
[3] 趙辛晨,,吳仲光.基于Qt/Embedded的數(shù)碼一體化圖形界面設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2011,30(7):9-12,,15.
[4] 閆鋒欣,,曾泉人.C++ GUI Qt4編程[M].第2版.北京:電子工業(yè)出版社,2012.
[5] 葉林輝.張春紅.基于嵌入式平臺(tái)SIP終端的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),,2006(25):361-364.
[6] 蔡志明,,盧傳富.精通Qt4編程[M].第2版.北京:電子工業(yè)出版社,2011.
[7] 李梅.嵌入式Linux下的串口通信程序設(shè)計(jì)[J].可編程控制器與工廠自動(dòng)化,,2009(10):68-71.