胡 楊,劉馨丹
(西安電子科技大學(xué) 電子信息攻防對抗與仿真重點(diǎn)實驗室,陜西 西安 710071)
?
基于Qt的雷達(dá)信號模擬器軟件界面設(shè)計與實現(xiàn)
胡楊,劉馨丹
(西安電子科技大學(xué) 電子信息攻防對抗與仿真重點(diǎn)實驗室,陜西 西安710071)
摘要針對雷達(dá)信號模擬器軟件部分的功能需求,在Windows操作系統(tǒng)下,采用Qt對雷達(dá)信號模擬器軟件界面進(jìn)行設(shè)計開發(fā)。具體通過對界面元素的生成及管理、界面通信機(jī)制、事件響應(yīng)等方面的設(shè)計,實現(xiàn)了基于Qt的雷達(dá)信號模擬器軟件界面,測試結(jié)果顯示雷達(dá)信號模擬器軟件界面的本地操作與遠(yuǎn)程控制均能正常工作,且運(yùn)行穩(wěn)定,滿足功能要求。
關(guān)鍵詞Qt;界面;雷達(dá)信號;模擬器
雷達(dá)信號模擬器在雷達(dá)調(diào)試、性能評估和設(shè)備維護(hù)等方面,是一種利用仿真技術(shù)模擬產(chǎn)生復(fù)雜雷達(dá)信號環(huán)境的簡便、靈活、高效、廉價的方法[1]。雷達(dá)信號模擬器的軟件界面則是人機(jī)交互的平臺[2],主要完成試驗場景描述、試驗過程狀態(tài)管理和參數(shù)記錄等工作。而Qt是一種多平臺的C++圖形用戶界面應(yīng)用程序框架[3],可用于Windows下的開發(fā),考慮到Qt在軟件界面開發(fā)過程中的優(yōu)良特性[4],本文選擇在Windows操作系統(tǒng)下使用Qt進(jìn)行對雷達(dá)信號模擬器軟件界面的設(shè)計與開發(fā)。
1開發(fā)技術(shù)
Qt是1991年由奇趣科技開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。其既可開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣?使用特殊的代碼生成擴(kuò)展以及一些宏,易于擴(kuò)展,允許組件編程。在設(shè)計開發(fā)過程中,Qt具有如下優(yōu)勢:優(yōu)良的跨平臺特性;面向?qū)ο?豐富的API;支持2D/3D圖形渲染,支持OpenGL;大量的開發(fā)文檔;XML支持[5]。
2設(shè)計與實現(xiàn)
2.1總體框架
圖1所示為雷達(dá)信號模擬器軟件界面的總體框架。其中,菜單欄和工具欄主要用于實現(xiàn)打開、保存、另存和關(guān)閉操作。主界面主要包括以下4部分:樹形結(jié)構(gòu)能快速選中界面上的不同設(shè)備及通道;設(shè)備窗口又包括設(shè)備狀態(tài)、設(shè)備選項和設(shè)備參數(shù)3部分,其中設(shè)備狀態(tài)用于顯示該設(shè)備當(dāng)前的工作狀態(tài),設(shè)備選項用于遠(yuǎn)程操作中發(fā)送命令或參數(shù),設(shè)備參數(shù)則用于在發(fā)送前設(shè)置雷達(dá)參數(shù);時間信息則是用于在主界面上實時顯示系統(tǒng)時間;輸出顯示則又包括信息輸出和警告輸出,起到在軟件界面工作過程中提示或者警告用戶的作用。
圖1 雷達(dá)信號模擬器軟件界面總體框架
2.2功能分析
(1)設(shè)置參數(shù)。該參數(shù)可有兩種設(shè)置方式:人工輸入式和下拉框選擇式。人工輸入時能以十進(jìn)制或十六進(jìn)制進(jìn)行輸入;下拉框選擇時只能按照界面預(yù)置的參數(shù)進(jìn)行選擇;(2)保存。用于保存當(dāng)前雷達(dá)參數(shù)至默認(rèn)路徑下;(3)另存。用于另存當(dāng)前雷達(dá)參數(shù)至用戶自主選擇的路徑下;(4)打開。用于打開已經(jīng)保存的雷達(dá)參數(shù)并加載其內(nèi)容至界面;(5)遠(yuǎn)程控制。向下級發(fā)送命令或雷達(dá)參數(shù),命令有系統(tǒng)自檢、詢問/應(yīng)答和功放開關(guān)。
2.3具體實現(xiàn)
本文所介紹雷達(dá)信號模擬器軟件界面的應(yīng)用程序框架是自頂向下的[6],圖2所示為本文介紹軟件界面實現(xiàn)的流程圖。首先是在main函數(shù)中產(chǎn)生一個QApplication類的實例app,然后再按照要求功能來編輯設(shè)計主窗口類mainWindow。軟件界面的主入口程序
int main(int argc,char *argv[])
{
QApplication app(argc,argv);//產(chǎn)生一個QApplication類的實例app
logWin=new MainWindow();//定義MainWindow類的對象logWin,繼承QMainWindow
int flag=app.exec();
return flag;
}
圖2 軟件界面設(shè)計主體流程
2.3.1界面生成與管理
(1)界面部件的生成。圖3所示為Qt開發(fā)的雷達(dá)信號模擬器軟件界面,由圖3看出,該界面可分為5部分,分別為工具欄、樹形結(jié)構(gòu)、時間信息、設(shè)備窗口以及輸出顯示,每部分均可認(rèn)為是一個窗口部件類,而這其中又分別包含了眾多子部件。
圖3 基于Qt的雷達(dá)信號模擬器軟件的界面及其功能說明
Qt的主要窗口部件包括:基礎(chǔ)窗口部件(QWidget)、對話框(QDialog)和其他窗口部件[7]。
本文以圖3中所示設(shè)備窗口QMyTab為例進(jìn)行說明,核心代碼為
class QMyTab:public QTabWidget
{
public:
StateFive *myState;//設(shè)備狀態(tài)欄
DeviceFive *myDevice;//設(shè)備選項欄
MainParameters *myPara;//設(shè)備參數(shù)欄
};
可以看出,QMyTab是編者自己設(shè)計的一個類,繼承自QTabWidget,其中包括設(shè)備狀態(tài)StateFive類、設(shè)備選項DeviceFive類及設(shè)備參數(shù)MainParameters類,構(gòu)成了圖3所示的設(shè)備窗口。再以其中設(shè)備狀態(tài)欄StateFive為例:
class StateFive:public QWidget
{
public:
QLabel *workLab;//建立標(biāo)簽
QLineEdit *workLabIn;//建立工作頻段編輯框
}
StateFive同樣是編者設(shè)計的類,繼承自QWidget類,為圖3所示的設(shè)備狀態(tài)欄,主要由子部件QLabel標(biāo)簽和QLineEdit編輯框組成,Qlabel可用于顯示各種信息,QLineEdit是單行文本框,用戶可輸入指定內(nèi)容,這兩個Qt類在本文介紹的軟件界面設(shè)計中得到了廣泛應(yīng)用;
(2)界面的布局管理。對于一個完善的軟件,布局管理是必不可少的。Qt中主要提供了QLayout類及其子類作為布局管理器[8]:基本布局管理器(QBoxLayout)、柵格布局管理器(QGridLayout)和表單布局管理器(QFormLayout)。
對于本文介紹的雷達(dá)信號模擬器軟件界面設(shè)計只用到了基本布局管理器和柵格布局管理器,核心部分代碼如下
//基本布局管理:垂直布局QVBoxLayout類(水平布局QHBoxLayout類與之類似)
FourLay=new QVBoxLayout;//將下述兩個標(biāo)簽垂直排列
FourLay→addWidget(workLab);//工作頻段標(biāo)簽
FourLay→addWidget(conIPLab);//IP地址標(biāo)簽
//柵格布局管理:QGridLayout類
stateLayout=new QGridLayout
stateLayout→addWidget(stateBox,0,0,1,2);//添加部件,第0行0列開始,占1行1列
另外,設(shè)置部件大小和移動部件位置分別用到size()、move()等函數(shù)。
2.3.2信號/槽機(jī)制
信號和槽機(jī)制是Qt的核心機(jī)制,是一種高級接口,應(yīng)用于對象之間的通信。圖4為Qt信號槽機(jī)制的連接圖:當(dāng)一個特定事件發(fā)生時,一個信號被發(fā)射,槽就是一個可被調(diào)用處理特定信號的函數(shù)[9],Qt的窗口部件有眾多預(yù)定義的槽,但通常編者可加入自己的槽,處理感興趣的信號。
圖4 Qt信號與槽連接圖
圖5所示為雷達(dá)信號模擬器軟件界面利用信號與槽機(jī)制建立的主要界面事件的響應(yīng)流程。在該機(jī)制下組件對象之間可在互相不認(rèn)識的情況下通信,因此設(shè)計出的組件可重用性較高。例如:通過Connect函數(shù),點(diǎn)擊界面上的更多設(shè)置按鈕,可產(chǎn)生如圖6所示的雷達(dá)參數(shù)設(shè)置界面,從而對雷達(dá)參數(shù)進(jìn)行設(shè)置。點(diǎn)擊更多設(shè)置按鈕,需要的Connect函數(shù)代碼如下
QDetectionDlg *dlg[12];//對話框類
connect(setBtn[0],SIGNAL(clicked()),this,SLOT(setChannel1()));//更多設(shè)置中確定按鈕響應(yīng)
void MainParameters::setChannel1()
{
dlg[0]→exec();//彈出參數(shù)設(shè)置的對話框
}
圖5 雷達(dá)信號模擬器軟件信號槽響應(yīng)流程
圖6 雷達(dá)參數(shù)設(shè)置
2.3.3事件響應(yīng)
Qt除了能通過信號和槽機(jī)制來實現(xiàn)一些動作外,還可用對象所帶的事件或者用戶自定義的事件來實現(xiàn)對象的一些行為處理。事件是對各種應(yīng)用程序需要知道的由其內(nèi)部或外部產(chǎn)生的事情或者動作的統(tǒng)稱。在Qt中使用一個對象來表示一個事件,繼承自QEvent類。QEvent類中包括幾個主要事件子類,有:鼠標(biāo)事件、滾輪事件、鍵盤事件、定時器事件和窗口關(guān)閉事件[10]。
本文介紹的雷達(dá)信號模擬器軟件界面主要用到了鼠標(biāo)事件和窗口關(guān)閉事件,代碼如下
//鼠標(biāo)雙擊事件
void ParseXml::mouseDoubleClickEvent(QMouseEvent *evt)
{
qDebug()< } //窗口關(guān)閉事件 void MainWindow::closeEvent(QCloseEvent *event)//根據(jù)情況判定是否要關(guān)閉,如保存取消 { qDebug()< } 3雷達(dá)信號模擬器軟件界面測試 該雷達(dá)信號模擬器軟件界面在正式使用之前,與顯示控制器、通信板、信號板一同進(jìn)行了系統(tǒng)性的聯(lián)調(diào)測試,并通過示波器、頻譜儀等設(shè)備進(jìn)行了產(chǎn)生雷達(dá)信號的觀測和記錄,結(jié)果顯示雷達(dá)信號模擬器軟件界面的本地操作與遠(yuǎn)程控制均能正常工作,且運(yùn)行穩(wěn)定、滿足功能要求。 4結(jié)束語 本文依據(jù)功能要求,以Windows為平臺,利用Qt組件,對雷達(dá)信號模擬器軟件界面進(jìn)行了構(gòu)架與實現(xiàn),該界面能較好地實現(xiàn)系統(tǒng)功能和滿足用戶需求。同時,Qt的優(yōu)良性能保證了本軟件界面的可靠性、高效性和跨平臺特性,且界面有較大的擴(kuò)展性,以后可根據(jù)實際要求進(jìn)行功能或界面外觀上的擴(kuò)展。 參考文獻(xiàn) [1]吳順君,梅曉春.雷達(dá)信號處理和數(shù)據(jù)處理技術(shù)[M].北京:電子工業(yè)出版社,2008. [2]任麗香,龍騰.一種通用雷達(dá)信號模擬器的設(shè)計與實現(xiàn)[J].現(xiàn)代雷達(dá),1998,23(6):53-59. [3]霍亞飛.Qt Creator快速入門[M].2版.北京:北京航空航天大學(xué)出版社,2014. [4]張波.Qt中的C++技術(shù)[M].北京:電子工業(yè)出版社,2012. [5]Blanchette J.C++ GUI Qt4編程[M].2版.閆鋒欣,曾泉人,張志強(qiáng),譯.北京:電子工業(yè)出版社,2013. [6]熊道輝.基于Qt的SCADA系統(tǒng)數(shù)據(jù)服務(wù)器軟件設(shè)計[D].成都:西南交通大學(xué),2011. [7]陸文周.Qt5開發(fā)及實例[M].北京:電子工業(yè)出版社,2014. [8]安曉輝.Qt Quick核心編程[M].北京:電子工業(yè)出版社,2015. [9]朱吉佳,蔡家麟.基于Qt的業(yè)務(wù)監(jiān)控系統(tǒng)界面設(shè)計與實現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展,2008,18(3):236-239,242. [10]顏理政,楊陽,彭力.基于Qt的電測量儀表校驗系統(tǒng)界面[J].計算機(jī)系統(tǒng)應(yīng)用,2014,23(5):241-244. 歡 迎 刊 登 廣 告 請訪問:www.dianzikeji.orgE-mail:dzkj@mail.xidian.edu.cn 聯(lián)系電話:029-88202440傳真:029-88202440 Design and Implement of Radar Signal Simulator Software Interface Based on Qt HU Yang,LIU Xindan (Key Laboratory of Electronic Information Countermeasure and Simulation,Xidian University,Xi’an 710071,China) AbstractA radar signal simulator software interface based on Qt is designed and implemented on the Windows operating system in this paper,including the generation and management of interface elements,the interface communication mechanism,and the event response.Tests show that both the local operation and remote control of the proposed software interface function correctly with good stability. KeywordsQt;interface;radar signal;simulator 中圖分類號TN957.51 文獻(xiàn)標(biāo)識碼A 文章編號1007-7820(2016)04-165-04 doi:10.16180/j.cnki.issn1007-7820.2016.04.044 作者簡介:胡楊(1991—),女,碩士研究生。研究方向:界面開發(fā)。劉馨丹(1991—),女,碩士研究生。研究方向:界面開發(fā)。 收稿日期:2015- 08- 16