• 
    

    
    

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

      ?

      一種基于Qt的被動(dòng)雷達(dá)顯控軟件設(shè)計(jì)

      2014-09-08 11:53:18練學(xué)輝
      雷達(dá)與對(duì)抗 2014年3期
      關(guān)鍵詞:開(kāi)窗視圖內(nèi)存

      練學(xué)輝

      (海軍駐南京地區(qū)雷達(dá)系統(tǒng)軍事代表室, 南京 210003)

      一種基于Qt的被動(dòng)雷達(dá)顯控軟件設(shè)計(jì)

      練學(xué)輝

      (海軍駐南京地區(qū)雷達(dá)系統(tǒng)軍事代表室, 南京 210003)

      提出了一種基于Qt的圖形視圖框架下的被動(dòng)雷達(dá)信息顯示的方法。圖形用戶界面能夠?qū)崟r(shí)刷新顯示被動(dòng)雷達(dá)信息。采用Qt Designer工具和Qt的樣式表使得圖形界面風(fēng)格設(shè)計(jì)簡(jiǎn)單,界面友好。

      Qt;被動(dòng)雷達(dá)信息顯示;圖形視圖框架;Qt Designer;樣式表

      0 引 言

      雷達(dá)信息顯示在雷達(dá)中占有重要的地位。雷達(dá)探測(cè)到目標(biāo)后,通過(guò)數(shù)據(jù)處理將信息傳送到終端上,終端將獲取的目標(biāo)信息以有效、直觀的方式呈現(xiàn)給觀察者,同時(shí)通過(guò)指令精準(zhǔn)地控制雷達(dá)[1-2]。

      近年來(lái),隨著微電子技術(shù)和軟件技術(shù)的發(fā)展,人們開(kāi)始大量采用通用微型計(jì)算機(jī)來(lái)完成雷達(dá)顯控終端的設(shè)計(jì)。本文設(shè)計(jì)的雷達(dá)終端的雷達(dá)信息顯示軟件也在通用微型計(jì)算機(jī)上實(shí)現(xiàn)。鑒于Qt跨平臺(tái)以及良好的圖形界面設(shè)計(jì)優(yōu)勢(shì)[3-4],本設(shè)計(jì)采用Qt軟件工具包,在windows平臺(tái)下實(shí)現(xiàn)被動(dòng)模式下的雷達(dá)信息圖像顯示。被動(dòng)模式下雷達(dá)獲取的信息主要是脈沖描述字(PDW)統(tǒng)計(jì)信息、目標(biāo)信息等。采用Qt的圖形視圖框架下的GraphicsView/Item機(jī)制將該信息繪制到圖元上并實(shí)時(shí)更新。對(duì)于操作界面,可以利用Qt Designer進(jìn)行設(shè)計(jì)并利用Qt Style sheet進(jìn)行美化。

      1 Qt圖形視圖框架

      Qt的圖形視圖框架提供了一種基于圖像對(duì)象的方式來(lái)實(shí)現(xiàn) model-view的編程模式。這一點(diǎn)很像例程 InterView中的輔助類 QTableView、 QTreeView和QListView。不同的視圖可以顯示一個(gè)場(chǎng)景,場(chǎng)景則包含了不同的幾何形狀的對(duì)象[3]。

      圖形視圖(Graphics View)提供了支持大量自定義的二維圖形對(duì)象(Item,譯為“對(duì)象”)交互(Interaction)的管理器,以及一個(gè)支持縮放和旋轉(zhuǎn)操作的視圖widget用于顯示這些元素。

      該框架包含了事件(Event,在Windows下可以理解為“消息”)傳播的框架,支持場(chǎng)景管理器中精確的交互能力,以雙精度浮點(diǎn)數(shù)表示對(duì)象位置、大小等屬性的變化。圖形元素還能處理鍵盤事件、鼠標(biāo)按下/移動(dòng)/釋放和雙擊的時(shí)間,同時(shí)也能跟蹤鼠標(biāo)移動(dòng)。

      圖形視圖使用BSP樹(shù)(Binary Space Partitioning,二叉空間分割)提供對(duì)圖形對(duì)象的快速查找??梢韵胂?,即使是包含數(shù)以百萬(wàn)計(jì)對(duì)象的超大場(chǎng)景也能夠進(jìn)行實(shí)時(shí)顯示。

      1.1 場(chǎng)景

      QGraphicsScene提供了圖形視圖的場(chǎng)景管理器。場(chǎng)景管理器有如下職責(zé):提供一個(gè)用于管理大量對(duì)象的快速接口;將事件傳遞到每個(gè)對(duì)象上;管理對(duì)象的狀態(tài);提供未進(jìn)行坐標(biāo)變換的渲染功能,主要用于打印。

      場(chǎng)景管理器是圖形對(duì)象 QGraphicsItem的容器。調(diào)用QGraphicsScene::addItem()將對(duì)象添加到場(chǎng)景中后,用戶可以通過(guò)調(diào)用場(chǎng)景管理器中不同的查找函數(shù)來(lái)查找其中的圖形對(duì)象。QGraphicsScene::items()函數(shù)及其重載函數(shù)可以返回所有通過(guò)點(diǎn)、矩形多邊形或路徑等不同方式選中的所有對(duì)象。QGraphicsScene::itemAt()返回在指定點(diǎn)位置上最上面的對(duì)象。

      1.2 視圖

      QGraphicsView提供了視圖widget,將場(chǎng)景中的內(nèi)容顯示出來(lái)??梢杂脦讉€(gè)不同的視圖來(lái)觀察同一個(gè)場(chǎng)景,從而實(shí)現(xiàn)對(duì)于同一數(shù)據(jù)集的不同viewport。該Widget同時(shí)也是scroll area,為大場(chǎng)景提供滾動(dòng)條。如果要啟用OpenGL支持,可調(diào)用QGraphicsView::setViewport。QGLWidget設(shè)置為其viewport。視圖接受鍵盤和鼠標(biāo)消息,并將這些消息轉(zhuǎn)換成場(chǎng)景事件(同時(shí)將視圖坐標(biāo)轉(zhuǎn)換為場(chǎng)景坐標(biāo)),然后將事件發(fā)送給可見(jiàn)視圖。

      1.3 對(duì)象

      QGraphicsItem 是場(chǎng)景中所有圖形獨(dú)享的基類。圖形視圖提供了幾種標(biāo)準(zhǔn)的對(duì)象:矩形(QGraphicsRectItem)、橢圓(QGraphicsEllipseItem)和文本對(duì)象(QGraphicsTextItem)。但是,QGraphicsItem最強(qiáng)大的功能是支持定制的圖形對(duì)象。

      QGraphicsItem支持如下特征:鼠標(biāo)按下、移動(dòng)、釋放和雙擊事件,同時(shí)還支持鼠標(biāo)懸浮事件、滾輪事件和上下文菜單事件;鍵盤輸入焦點(diǎn)和鍵盤事件;拖放;組合(通過(guò)父對(duì)象--子對(duì)象進(jìn)行組合,或者通過(guò)QGraphicsItemGroup組合);碰撞檢測(cè)。

      1.4 Qt Designer

      Qt Designer是一個(gè)GUI工具,可以幫助加快Qt程式的開(kāi)發(fā)速度。利用Qt Designer這種所見(jiàn)即所得的方式來(lái)產(chǎn)生Qt程式的GUI介面的程式碼。通過(guò)增加一些功能就可以完成一個(gè)程式。利用Qt Designer可以非??旖?、簡(jiǎn)便地設(shè)計(jì)出顯示界面。

      對(duì)于窗口或者是控件的效果,可以使用style sheet來(lái)進(jìn)行設(shè)計(jì)和控制。

      2 雷達(dá)信息顯示設(shè)計(jì)

      本雷達(dá)的信息顯示主要包括主顯示區(qū)、開(kāi)窗放大顯示區(qū)、操作控制區(qū)和狀態(tài)信息顯示區(qū),如圖1所示。

      圖1 被動(dòng)雷達(dá)信息顯示界面

      主顯示區(qū)主要是顯示基于前端處理得到的PDW統(tǒng)計(jì)信息量化得到的頻率-方位能量圖以及重點(diǎn)目標(biāo)的信息。開(kāi)窗放大區(qū)主要是對(duì)主顯示區(qū)中的用戶感興趣的方位范圍和頻率范圍進(jìn)行放大,便于用戶獲取該范圍的相關(guān)信息。操作控制區(qū)主要是為用戶控制開(kāi)窗放大參數(shù)提供良好的人機(jī)接口。狀態(tài)顯示區(qū)主要是顯示當(dāng)前的雷達(dá)工作模式信息以及系統(tǒng)時(shí)間等信息。

      2.1 PDW頻率分布統(tǒng)計(jì)信息及重點(diǎn)目標(biāo)顯示

      對(duì)于PDW頻率分布統(tǒng)計(jì)信息顯示,從基類QGraphicsItem繼承生成的一個(gè)PDWShownItem類,基于對(duì)外接口獲取PDW頻率分布統(tǒng)計(jì)信息數(shù)據(jù),將其存儲(chǔ)至開(kāi)辟的一段內(nèi)存緩沖區(qū)中。PDWShownItem類讀取該內(nèi)存緩沖區(qū),將內(nèi)存緩沖區(qū)的內(nèi)存存儲(chǔ)值基于顏色映射表映射成對(duì)應(yīng)的顏色值,同時(shí)根據(jù)內(nèi)存緩沖區(qū)的地址相對(duì)值映射成為對(duì)應(yīng)的頻率和方位,最終生成能量圖。QT提供了底層的繪制類QPainter,繪制出該能量圖像在屏幕上顯示出來(lái)。該過(guò)程流程如圖2。

      圖2 能量圖顯示流程

      通過(guò)重寫(xiě)QGraphicsItem::paint函數(shù),在該函數(shù)中調(diào)用繪制函數(shù)類QPainter就能夠在所需要的位置上繪制出需要顯示的頻率-方位能量圖,對(duì)于坐標(biāo)軸等也通過(guò)此類繪制。圖3中給出了能量圖的生成與顯示的過(guò)程。該過(guò)程涉及到兩組映射,一是內(nèi)存緩沖區(qū)的圖像數(shù)據(jù)首先通過(guò)映射和轉(zhuǎn)換生成一個(gè)QImage對(duì)象,然后調(diào)用QPainter類對(duì)象的drawImage函數(shù)就能在顯示區(qū)域的指定區(qū)域繪制能量圖。該過(guò)程關(guān)鍵是通過(guò)一定的函數(shù)關(guān)系將內(nèi)存中的數(shù)據(jù)映射到數(shù)值為[0,255]區(qū)間的數(shù)值,然后基于顏色映射表將內(nèi)存的數(shù)值轉(zhuǎn)換成為一幅偽彩色圖像。

      圖3 內(nèi)存圖像數(shù)據(jù)顯示到屏幕的映射

      另外一組映射是將實(shí)際的數(shù)據(jù)范圍與顯示的范圍形成一定映射關(guān)系。假定顯示的頻率范圍為[RFMin,RFMax],顯示的方位范圍為[AziMin,AziMax],顯示區(qū)域?qū)挒镾crX,顯示區(qū)域高為ScrY。由于顯示區(qū)域的物理坐標(biāo)是以屏幕的左頂點(diǎn)為原點(diǎn),向右和向下為正方向。若以顯示區(qū)域的左底點(diǎn)P0(x,y)為原點(diǎn),顯示區(qū)域?qū)挒榉轿挥成?,顯示區(qū)域高為頻率映射。對(duì)于實(shí)際屬于該頻率與方位的一點(diǎn)(RF1,Azi1),映射到顯示區(qū)域的坐標(biāo)點(diǎn)P1(x1,y1)為

      (1)

      (2)

      通過(guò)式(1)、(2)就能夠得到實(shí)際的數(shù)值與顯示的值的映射關(guān)系。

      對(duì)于重點(diǎn)目標(biāo)顯示,從基類QGraphicsItem中繼承生成一個(gè)類。該類的成員變量用于存儲(chǔ)目標(biāo)的相關(guān)信息,通過(guò)重寫(xiě)QGraphicsItem::paint可以將需要顯示的信息顯示出來(lái)。由于目標(biāo)類是需要在頻率-方位能量圖上顯示,需要設(shè)置目標(biāo)類的父類為PDWShownItem。通過(guò) QGraphicsItem::setPos函數(shù),基于式(1)和(2),可以將目標(biāo)類在顯示區(qū)域的正確位置上顯示出來(lái)。

      2.2 開(kāi)窗放大顯示

      對(duì)于開(kāi)窗放大顯示,圖4給出了其顯示的一個(gè)簡(jiǎn)單的過(guò)程。其顯示的過(guò)程同1.2節(jié)的顯示頻率-方位能量圖類似,區(qū)別在于實(shí)際的數(shù)據(jù)范圍的映射是基于輸入的開(kāi)窗參數(shù)得到的。目標(biāo)類的顯示也與主顯示區(qū)的實(shí)現(xiàn)過(guò)程一致。

      圖4 開(kāi)窗放大內(nèi)存圖像數(shù)據(jù)顯示到屏幕的映射

      2.3 操作控制區(qū)顯示和狀態(tài)信息顯示

      對(duì)于操作控制區(qū)顯示和狀態(tài)信息顯示,采樣的是基本的窗口部件QWidget和QPushButton等。點(diǎn)擊操作控制區(qū)的頻率分布顯示控制,通過(guò)QLineEdit::text函數(shù)和QString::toDouble獲取QLineEdit中輸入的放大參數(shù),通過(guò)函數(shù)映射將參數(shù)映射到顯示緩沖區(qū)的內(nèi)存區(qū)域,開(kāi)窗放大顯示獲取對(duì)應(yīng)的內(nèi)存區(qū)域值,最終得到頻率-方位能量圖。對(duì)于狀態(tài)信息顯示區(qū)的鼠標(biāo)信息,重寫(xiě)QGraphicsItem::hoverMoveEvent獲取鼠標(biāo)的位置信息。利用Qt特有的信號(hào)與槽方式,狀態(tài)信息顯示區(qū)得到鼠標(biāo)的位置信息并顯示。

      3 應(yīng)用實(shí)例

      在某項(xiàng)目上采用Qt4.7.0進(jìn)行雷達(dá)信息顯示,其界面如圖5所示。圖中,主顯示區(qū)域的虛線框表示為開(kāi)窗區(qū)域,右上角的開(kāi)窗顯示區(qū)域顯示的為開(kāi)窗區(qū)域的圖像信息。整體顯示畫(huà)面逼真,運(yùn)行速度快,操作簡(jiǎn)便。

      圖5 基于Qt的被動(dòng)雷達(dá)信息顯示示例

      4 結(jié)束語(yǔ)

      本文所給出的基于Qt的被動(dòng)雷達(dá)信息顯示設(shè)計(jì)已經(jīng)在某型設(shè)計(jì)中進(jìn)行了測(cè)試。試驗(yàn)的結(jié)果表明,基于Qt 的雷達(dá)界面設(shè)計(jì),界面設(shè)計(jì)與美化簡(jiǎn)單快捷,雷達(dá)信息的顯示與實(shí)時(shí)刷新能夠滿足雷達(dá)信息顯示的要求。

      [1] 陳麗娟. Qt和OpenGL在雷達(dá)顯示控制終端設(shè)計(jì)中的應(yīng)用[J].電子工程師, 2006,32(10):5-7.

      [2] 安良,劉揚(yáng),莫紅飛.基于Qt的雷達(dá)信息顯示設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(11):26-28.

      [3] 鄭阿奇,陳超.Qt4開(kāi)發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2011.

      [4] Jasmin Blanchette,Mark Summerfiled. C++ GUI Qt4編程[M].閆鋒欣,曾泉人,等譯.北京:電子工業(yè)出版, 2008 .

      Design of display and control software of passive radar based on Qt

      LIAN Xue-hui

      (Military Representatives Office of Radar System of the PLA Navy in Nanjing, Nanjing 210003)

      A method of displaying information of passive radars is proposed under the graphics view framework based on the Qt. Graphic user interface (GUI) can refresh and display the information of passive radars in real-time. The adoption of the Qt Designer and the Qt style sheet makes the GUI simple and friendly.

      Qt; information display of passive radar; graphics view framework; Qt Designer; style sheet

      2014-04-15

      練學(xué)輝(1965-),男,高級(jí)工程師,研究方向:雷達(dá)總體技術(shù)。

      TN957.522

      A

      1009-0401(2014)03-0061-04

      猜你喜歡
      開(kāi)窗視圖內(nèi)存
      “春夏秋冬”的內(nèi)存
      生火取暖要開(kāi)窗
      5.3 視圖與投影
      視圖
      初秋入睡前關(guān)好窗
      女子世界(2017年9期)2017-09-08 00:27:43
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      希望
      基于內(nèi)存的地理信息訪問(wèn)技術(shù)
      凤冈县| 库车县| 庄浪县| 丰顺县| 财经| 仪陇县| 贡觉县| 平果县| 江北区| 临城县| 车致| 精河县| 盖州市| 凤山市| 揭东县| 林芝县| 资源县| 伊金霍洛旗| 福安市| 中超| 宁夏| 崇信县| 无锡市| 深州市| 井研县| 乌兰察布市| 阿城市| 会东县| 贞丰县| 伊金霍洛旗| 广宗县| 孟连| 上虞市| 涿鹿县| 合江县| 宁晋县| 大厂| 鄂伦春自治旗| 建昌县| 莒南县| 祁阳县|