王冰山,郝延剛,王遠(yuǎn)斌
(1.中國(guó)電子科技集團(tuán)公司第二十八研究所,江蘇南京 210007;2.海軍駐南京地區(qū)雷達(dá)系統(tǒng)軍事代表室,江蘇 南京 210003)
雷達(dá)顯控終端是雷達(dá)系統(tǒng)中人機(jī)交互的主要接口。鑒于在其他平臺(tái)下進(jìn)行圖形界面(GUI)開發(fā)的成本較高,MicroSoft 公司的源代碼具有保密性、軍品對(duì)保密的需求還有外貿(mào)對(duì)知識(shí)產(chǎn)權(quán)的嚴(yán)格要求,目前,嵌入式版的Linux 操作系統(tǒng)在實(shí)際應(yīng)用中越來(lái)越受到用戶的歡迎;在眾多的軍用雷達(dá)終端當(dāng)中,小型化、成本低適合于小型船只應(yīng)用的雷達(dá)中,可靠穩(wěn)定的嵌入式導(dǎo)航雷達(dá)終端也有一定的市場(chǎng)需求。因此,選擇Qt 進(jìn)行嵌入式界面開發(fā)是一個(gè)較好的方案。
Qt 是由奇趣公司開發(fā)的標(biāo)志性產(chǎn)品,目前流行的Linux 桌面環(huán)境KDE 模式就是由Qt 開發(fā)的,Qt 具有如下特點(diǎn):Qt 是類MFC 的面向?qū)ο蟮腃++開發(fā)包;具有信號(hào)與槽的事件驅(qū)動(dòng)機(jī)制;另外,Qt 是一種跨平臺(tái)的開發(fā)工具,其環(huán)境下編寫的源代碼,只有稍加修改或不修改就可以在不同的環(huán)境下進(jìn)行編譯運(yùn)行;它提供了豐富的類庫(kù)以及靈活易用的Qt Designer 工具開發(fā)界面。
本軟件主要工作是實(shí)現(xiàn)DSP 與ARM 的配合工作,由DSP高速處理雷達(dá)采集到的數(shù)據(jù),ARM 的角色則是擔(dān)任整個(gè)系統(tǒng)的控制器,負(fù)責(zé)應(yīng)用程序中多個(gè)任務(wù)的控制和調(diào)度。對(duì)獲取的水上目標(biāo)信息實(shí)時(shí)的顯示和記錄,為雷達(dá)參數(shù)設(shè)置提供圖形接口。除此之外,為了實(shí)現(xiàn)ARM 與DSP 之間的通信,自定義了通信協(xié)議格式,通過(guò)多個(gè)串口傳輸數(shù)據(jù),為開發(fā)過(guò)程中的程序調(diào)試和通信數(shù)據(jù)的可靠傳輸提供了強(qiáng)力保障。
(1)圖形框架。Qt 的Graphics View 框架使用MVC 模式,適合對(duì)大量2D 圖元的管理。Graphics View 框架中包括3 個(gè)主要的類:QGraphicsScene、QGraphicsView 和QGraphcsItem,分別是場(chǎng)景、視圖和圖元。場(chǎng)景是QGraphicsItem 對(duì)象的容器。QGraphics View 是視圖窗口部件,它使場(chǎng)景的內(nèi)容可視化,QGraphicsItem 是圖元基類。
(2)界面布局和風(fēng)格。Qt Designer 是Qt GUI 編程語(yǔ)言一系列工具中的一個(gè),該工具提供了Qt 基本的可繪制窗口的部件。在設(shè)計(jì)器中通過(guò)鼠標(biāo)直接拖放這些窗口部件,能夠高效、快速地實(shí)現(xiàn)GUI 界面的整體框架設(shè)計(jì),界面直觀形象。在使用Qt Designer 設(shè)計(jì)GUI 時(shí),可以使用樣式表定制控件的外觀,快速而高效地設(shè)計(jì)窗口部件的風(fēng)格。
Qt 設(shè)計(jì)器簡(jiǎn)化了用戶界面設(shè)計(jì)手段,它提供了大量的封裝好的工具和接口。用戶可以輕而易舉地通過(guò)拖拽的方式布控Qt 界面控件,另外還可以調(diào)用Qt 設(shè)計(jì)器的Layout 控件對(duì)界面進(jìn)行布局和排版,控件的移動(dòng)和縮放都變得非常簡(jiǎn)單,最后達(dá)到用戶所要求的風(fēng)格,在布局完畢之后,可以通過(guò)簡(jiǎn)單的方式對(duì)各個(gè)窗口控件以及界面風(fēng)格進(jìn)行相應(yīng)的參數(shù)設(shè)置。另外,信號(hào)與槽的機(jī)制在Qt 設(shè)計(jì)器中也可以手動(dòng)設(shè)置,加大了界面上窗口部件的通信效率。總之,Qt Designer 為雷達(dá)顯示控制終端的界面設(shè)計(jì)提供了便捷的方式和靈活的接口。
本軟件使用Qt 設(shè)計(jì)器設(shè)計(jì)了終端主界面上的部件和窗口,并在人機(jī)交互的過(guò)程中采用了信號(hào)與槽的機(jī)制。該雷達(dá)顯示控制終端除了界面上飛車美觀人性化,而且使得對(duì)雷達(dá)的控制操作變得非常簡(jiǎn)單,響應(yīng)時(shí)間快。
(3)自定義繪圖。QGraphics View 框架下Qt 提供大量的繪圖接口,每個(gè)繪圖對(duì)象都可以被看作為一個(gè)QGraphicsItem,每個(gè)圖元都由它自己的繪制函數(shù),繪制完畢之后可以調(diào)用addItem()函數(shù)將繪制好的圖元一一加入到場(chǎng)景中,使得Qt 繪圖非常易于模塊化,對(duì)單個(gè)圖形對(duì)象進(jìn)行增減都非常方便,只需要調(diào)用Qt 接口removeItem()即可將一個(gè)繪圖對(duì)象輕易刪除,對(duì)圖元進(jìn)行管理和操作的接口都非常豐富。但在嵌入式平臺(tái)下,大量的自定義繪圖會(huì)對(duì)整個(gè)平臺(tái)的資源占用較大,出現(xiàn)卡頓或者死機(jī)的現(xiàn)象。鑒于此,本軟件引進(jìn)了OpenGL 圖形加速,通過(guò)ARM 芯片上的PowerVR 模塊對(duì)整個(gè)圖形界面進(jìn)行加速顯示,大大減少處理器的負(fù)擔(dān),使得整個(gè)界面變得非常流暢。
OpenGL(Open Graphics Library)作為圖形硬件的一個(gè)軟件接口,它也是該領(lǐng)域的工業(yè)標(biāo)準(zhǔn)。OpenGL 具有很好的移植性,它與硬件無(wú)關(guān),因這些優(yōu)勢(shì),OpenGL 為很多硬件和軟件開發(fā)人員都提供了很多便利。
Qt 為了使用OpenGL 繪制,可以通過(guò)QGLWidget 調(diào)用setViewport()函數(shù)來(lái)設(shè)置作為QGraphicsView 的視口。如果需要在OpenGL 中打開反鋸齒,可以通過(guò)調(diào)用QGLFormat::sampleBuffers()來(lái)使用OpenGL 的采樣緩沖區(qū)(sample buffer)。在目標(biāo)航跡和目標(biāo)點(diǎn)跡的繪制過(guò)程中,使用OpenGL 繪圖后,減輕了CPU 負(fù)擔(dān),大幅度提高應(yīng)用程序圖形繪制效率。
DSP 芯片具有快速RAM,通??赏ㄟ^(guò)獨(dú)立的數(shù)據(jù)總線在兩塊中同時(shí)訪問(wèn),可以并行執(zhí)行多個(gè)操作,可以低開銷或無(wú)開銷及跳轉(zhuǎn)的硬件支持,使得數(shù)據(jù)處理快速高效,固通常復(fù)雜大量的數(shù)據(jù)計(jì)算以及雷達(dá)采集處理過(guò)后的數(shù)據(jù)都由DSP 來(lái)進(jìn)行計(jì)算處理,再將計(jì)算結(jié)果通過(guò)串口發(fā)往ARM,ARM 再根據(jù)該結(jié)果在顯控界面上進(jìn)行相應(yīng)的圖形繪制。
在某項(xiàng)目中采用Qt4.8 進(jìn)行船用導(dǎo)航雷達(dá)的顯控界面的軟件開發(fā),如圖1 所示。通過(guò)開發(fā)過(guò)程中的模擬實(shí)驗(yàn)以及真實(shí)環(huán)境下的實(shí)際應(yīng)用,信息顯示、界面操控以及系統(tǒng)的穩(wěn)定性完全能滿足船用導(dǎo)航雷達(dá)各方面的需要。
本文中所利用的圖形化視圖框架以及OpenGL 圖形加速,Qt4.8 及其以后的版本才支持,要采用本文中所描述的方法進(jìn)行界面軟件設(shè)計(jì),必須要采用Qt4.8 以后的版本。通過(guò)實(shí)驗(yàn)?zāi)M和實(shí)際應(yīng)用發(fā)現(xiàn),使用Qt 對(duì)導(dǎo)航雷達(dá)顯控軟件進(jìn)行設(shè)計(jì)和開發(fā),不但具有很高的實(shí)時(shí)顯示性能和美觀的界面設(shè)計(jì),另外,雷達(dá)界面上的顯示功能及該系統(tǒng)性能完全滿足船用導(dǎo)航雷達(dá)終端的需求。
圖1 基于Qt 的船用導(dǎo)航雷達(dá)終端顯控界面
[1]蔡志明,盧傳富,李立夏.精通Qt4 編程[J].計(jì)算機(jī)工程,2010(1).
[2]Mark Summerfield.Advanced Qt Programming Creating Great Software with C++and Qt4[J].Prentice Hall,2010(6).
[3]周名陽(yáng),韓秀玲.基于Qt 的圖像數(shù)據(jù)網(wǎng)絡(luò)傳輸應(yīng)用研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011(6).
[4]Zeng Y,Xu,J,Peng D.Radar Velocity -measuring System Design and Computation Algorithm Based on ARM Processor[C].Proceedings of the 8th World Congress on Intelligent Control and Automation,2010.