顧榮軍,周志增,王在立,劉朝陽
(中國洛陽電子裝備試驗(yàn)中心,河南 洛陽 471003)
?
電子裝備虛擬組件測試平臺軟件設(shè)計(jì)與實(shí)現(xiàn)
顧榮軍,周志增,王在立,劉朝陽
(中國洛陽電子裝備試驗(yàn)中心,河南 洛陽 471003)
針對某型電子裝備的射頻信號輔助測試平臺開發(fā)需求,基于VC++與Flash聯(lián)合的設(shè)計(jì)方法,充分利用VC++的運(yùn)行效率和Flash的多媒體豐富表現(xiàn)力,在Flash平臺中進(jìn)行電子裝備主要組件的虛擬化設(shè)計(jì)和人機(jī)交互設(shè)計(jì),在VC++程序中嵌入Flash并實(shí)現(xiàn)虛擬儀器的數(shù)據(jù)通信。結(jié)果表明,裝備保障人員可通過該軟件平臺形象直觀地分析或復(fù)現(xiàn)各主要測試節(jié)點(diǎn)的信號特性。
虛擬組件;測試平臺;Flash;VC++
虛擬組件測試軟件平臺的開發(fā),不僅需要注重其功能的強(qiáng)大,組件的虛擬化和交互界面的設(shè)計(jì)也應(yīng)當(dāng)做到逼真美觀。在應(yīng)用軟件開發(fā)項(xiàng)目中,常用的開發(fā)平臺為VC++,它提供了多種現(xiàn)成的界面控件,簡化了Windows應(yīng)用程序的開發(fā)工作,但VC++在界面設(shè)計(jì)方面的功能相對現(xiàn)行的流行技術(shù)仍有不足[1]。Flash技術(shù)誕生于20世紀(jì)90年代,經(jīng)過多年的發(fā)展,F(xiàn)lash已經(jīng)由簡單的動畫制作工具發(fā)展成功能強(qiáng)大的軟件開發(fā)技術(shù)平臺[2-3],擁有面向?qū)ο蟮木幊陶Z言集成開發(fā)環(huán)境、運(yùn)行引擎、通信協(xié)議、開發(fā)框架、虛擬機(jī)。Flash具有跨平臺的能力,以及出色的圖形處理能力、豐富的畫面表現(xiàn)力和優(yōu)秀的交互性能[4-6]。
依據(jù)某型電子裝備虛擬組件測試平臺開發(fā)項(xiàng)目的軟件設(shè)計(jì)需求,文中采用VC++與Flash聯(lián)合開發(fā)的方法,發(fā)揮VC++和Flash開發(fā)環(huán)境的優(yōu)點(diǎn),方法高效、快捷。
在VC++程序內(nèi)嵌Flash的相關(guān)文獻(xiàn)[7-8]中,通常僅利用Flash技術(shù)來顯示一些文字或者數(shù)據(jù)信息,沒有實(shí)現(xiàn)實(shí)時(shí)響應(yīng)用戶操作的功能,缺乏交互性。在進(jìn)行軟件交互性設(shè)計(jì)時(shí),F(xiàn)lash不僅可以操作數(shù)據(jù)和顯示信息,還可通過它控制VC++程序的行為。圖1所示為軟件平臺的功能設(shè)計(jì)示意圖,VC++程序負(fù)責(zé)平臺中的程序框架和數(shù)據(jù)通信,F(xiàn)lash則用來實(shí)現(xiàn)各類信息的輸入和顯示,且兩者之間具備數(shù)據(jù)交互能力。
圖1 軟件功能示意圖
在進(jìn)行軟件平臺開發(fā)時(shí),通過在VC++環(huán)境下調(diào)用Shockwave Flash控件,完成組件測試的虛擬化,組件面板及器件在Flash環(huán)境中完成虛擬設(shè)計(jì)。如果在VC++與Flash,則不需要進(jìn)行交互操作,只需插入Flash控件,設(shè)置調(diào)用的Flash文件路徑即可[6]。分析虛擬組件測試平臺軟件開發(fā)需求,VC++與Flash之間存在消息傳遞,需要實(shí)現(xiàn)VC++與Flash間的交互,軟件設(shè)計(jì)流程如圖2所示。
圖2 虛擬組件測試軟件設(shè)計(jì)流程圖
2.1 Flash環(huán)境下的虛擬組件構(gòu)建
圖3 虛擬組件構(gòu)建環(huán)境
虛擬組件構(gòu)建使用Macromedia Flash Professional CS3開發(fā)環(huán)境,在軟件開發(fā)過程中,F(xiàn)lash程序和VC++程序設(shè)計(jì)同等重要。要構(gòu)建一個(gè)Flash程序,通常需要執(zhí)行以下步驟[9-11]:(1)分析軟件開發(fā)需求,確定應(yīng)用程序要執(zhí)行哪些基本任務(wù);(2)創(chuàng)建并導(dǎo)入媒體元素,如圖像、視頻、聲音、文本等,并在舞臺和時(shí)間軸中排列這些媒體元素,以定義它們在程序中顯示的時(shí)間和顯示方式;(3)根據(jù)需要對媒體元素應(yīng)用特殊效果,應(yīng)用ActionScript語言編寫代碼以控制媒體元素的行為方式,包括這些元素對用戶交互的響應(yīng)方式;(4)測試程序,確定是否按預(yù)期方式工作,并發(fā)布程序?yàn)?.swf文件。
在本項(xiàng)目中主要制作的媒體元素為某型電子裝備組件模塊中的器件模型、結(jié)構(gòu)模型,以及狀態(tài)指示燈、開關(guān)按鈕等,圖4所示為虛擬組件中的部分器件模型,它們存放在Flash的組件庫中。
圖4 器件模型
在Flash場景中,導(dǎo)出組件庫中設(shè)計(jì)完成的器件模型、結(jié)構(gòu)模型,以及狀態(tài)指示燈、開關(guān)按鈕等,將它們依照實(shí)際的組件構(gòu)成進(jìn)行組合,可以進(jìn)一步構(gòu)建各組件單元模型。圖5所示為構(gòu)建完成的部分虛擬組件。
圖5 組件模型
在構(gòu)建虛擬組件模型時(shí),需根據(jù)功能需求編寫ActionScript代碼來實(shí)現(xiàn)與用戶的交互響應(yīng)。Flash中可以通過FSCommand命令向VC++發(fā)送命令參數(shù),其基本語法為fscommand(cmd, args),其中,cmd為所要執(zhí)行的命令名,arg為該指令所用到的參數(shù)[12]。
2.2 應(yīng)用程序設(shè)計(jì)及數(shù)據(jù)信息交互
應(yīng)用程序?yàn)閂C++環(huán)境下的MFC對話框程序,通過Shockwave Flash控件加載Flash文件,該控件的CShockwaveFlash類[13]提供了幾十種方法函數(shù)實(shí)現(xiàn)與Flash間的交互。
要實(shí)現(xiàn)VC++與Flash的交互,首先要在VC++工程中聲明消息映射宏,在xunizujianDlg.cpp文件中添加如下消息映射宏
BEGIN_EVENTSINK_MAP(CXunizujianDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CXunizujianDlg)
ON_EVENT(CXunizujianDlg,IDC_SHOCKWAVEFLASH,150/*FSCommand*,
OnFSCommandShockwaveflash, VTS_BSTR VTS_BSTR)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
其中,IDC_SHOCKWAVEFLASH為控件的ID號。在xunizujianDlg.h文件中添加:afx_msg void OnFSCommandShockwaveflash(LPCTSTR command, LPCTSTR args);使用CShockwaveFlash類的LoadMovie()函數(shù)可以導(dǎo)入指定路徑下的Flash文件,SetVariable()函數(shù)和GetVariable()可以設(shè)置和讀取Flash中的變量。
VC++中接收由Flash發(fā)送的命令,并處理作出響應(yīng),如在另一個(gè)Shockwave Flash中加載相應(yīng)的測試視頻,在編輯控件中顯示相應(yīng)節(jié)點(diǎn)的標(biāo)準(zhǔn)值和提示信息。這些交互通過消息響應(yīng)函數(shù)OnFSCommandShockwaveFlash(LPCTSTR command, LPCTSTR args) 實(shí)現(xiàn),兩個(gè)參數(shù)即為在Flash中使用FSCommand命令向VC++傳遞的參數(shù)。在消息響應(yīng)函數(shù)中,對兩個(gè)參數(shù)進(jìn)行處理,即進(jìn)行字符串比較,根據(jù)不同的字符串判斷用戶進(jìn)行了何種操作,從而做出相應(yīng)的響應(yīng)。
例如,用戶在虛擬組件的某個(gè)接口處單擊鼠標(biāo),F(xiàn)lash就向VC++發(fā)送一個(gè)命令字符串“ml_1”,在VC++中通過strcmp函數(shù)將收到的命令字符串與預(yù)先定義的單擊此接口會發(fā)送的命令進(jìn)行比較,判斷用戶是否點(diǎn)擊了此接口,如果是,則加載此接口相應(yīng)的所有信息,包括信號參數(shù)值、波形視頻、頻譜視頻等。各接口的信號參數(shù)值存儲在配置文件中,利用GetPrivateProfileString()函數(shù)[14]讀取配置文件中不同接口的參數(shù)值并顯示。在消息響應(yīng)函數(shù)中,還要通過ShellExecute()函數(shù)[15]來鏈接相應(yīng)組件的Word文檔資料,方法為:ShellExecute(NULL,_T("open"),strpath,NULL,NULL,SW_SHOW);其中,strpath為打開文檔路徑,在switch語句中,根據(jù)Flash傳送的不同命令字符串,賦給strpath相應(yīng)的文檔路徑。
虛擬測試平臺需要與虛擬儀器進(jìn)行通信實(shí)現(xiàn)數(shù)據(jù)交互,可以利用網(wǎng)絡(luò)套接字CSocket派生類CSocketUdp:實(shí)現(xiàn)本地UDP通信,接收虛擬儀器發(fā)送的實(shí)際測量數(shù)據(jù)信息,并與配置文件中的標(biāo)準(zhǔn)值進(jìn)行實(shí)時(shí)對比顯示。
各接口信號的波形和頻譜視頻除了在父窗口顯示,還可彈出大窗口顯示。其實(shí)現(xiàn)方法是:在父窗口類函數(shù)中將相應(yīng)的命令賦值給全局變量,然后在彈出窗口類中設(shè)置定時(shí)器函數(shù)來監(jiān)聽父窗口操作命令的變化,并執(zhí)行相應(yīng)的響應(yīng),切換顯示不同節(jié)點(diǎn)的信號波形或頻譜視頻。
2.3 測試平臺軟件實(shí)現(xiàn)結(jié)果
圖6所示為測試平臺軟件運(yùn)行界面,主要實(shí)現(xiàn)不同虛擬組件的加載顯示以及各類信息交互功能。組件中各檢測點(diǎn)能夠接受用戶操作并作出正確的響應(yīng),在窗口中顯示信號的頻譜以及波形;可以控制啟動虛擬儀器,并通過網(wǎng)絡(luò)接收顯示基于虛擬儀器的各測試點(diǎn)信號參數(shù)測試數(shù)據(jù);可以鏈接顯示所選擇組件的詳細(xì)文檔資料。
圖6 軟件運(yùn)行界面
項(xiàng)目所實(shí)現(xiàn)的虛擬測試平臺,有助于裝備保障人員快速、準(zhǔn)確完成射頻信號主要參數(shù)自動化測量,并形象直觀地分析或復(fù)現(xiàn)各主要測試節(jié)點(diǎn)的信號特性,可以為裝備故障檢修及任務(wù)過程中異?,F(xiàn)象分析提供參考,對于裝備保障培訓(xùn)和指標(biāo)測試技術(shù)研究具有借鑒意義。經(jīng)過測試效果可以看出,基于VC++與Flash聯(lián)合開發(fā)的方法,在保證VC++程序運(yùn)行效率的同時(shí),充分發(fā)揮了Flash在多媒體方面豐富的表現(xiàn)能力,達(dá)到了系統(tǒng)設(shè)計(jì)需求。
[1] 何小鋒,石偉鋒. Flash技術(shù)在雷達(dá)顯控軟件設(shè)計(jì)中的應(yīng)用[J].雷達(dá)與對抗,2005(3):57-59.
[2] 呼婧.基于Flash的近地告警系統(tǒng)功能研究[J].電子設(shè)計(jì)工程,2013,21(20):183-186.
[3] 陳國,顧和和.基于Flash的陀螺經(jīng)緯儀逆轉(zhuǎn)點(diǎn)定向教學(xué)模擬平臺實(shí)現(xiàn)[J].測繪通報(bào),2015(9):128-130.
[4] 張立遠(yuǎn).基于Flash ActionScript的森林滅火系統(tǒng)火控軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].信息通信,2013(3):52-54.
[5] 肖瑞,金吉成,袁昱緯.基于Flash實(shí)現(xiàn)Skyline的飛行座艙儀表顯示[J].電子科技,2013,26(1):142-143,149.
[6] 王述運(yùn),呂明.Flash 技術(shù)在航空儀表虛擬實(shí)習(xí)系統(tǒng)中的應(yīng)用[J].電腦知識與技術(shù),2009,5(30):8030-8031,8039.
[7] 胡云琴,周瑋.海警艦艇雷達(dá)回波識別仿真訓(xùn)練系統(tǒng)研究[J].信息與電腦:理論版,2014(8):163-164.
[8] 趙冬利.基于Flash技術(shù)的NMR虛擬實(shí)驗(yàn)室的構(gòu)建[D].大連:大連理工大學(xué),2013.
[9] 魏祥英,湯明.VC+Flash技術(shù)在多線切割設(shè)備人機(jī)交互中的應(yīng)用[J].電子工業(yè)專用設(shè)備,2013,42(12):39-40.
[10] 顧榮軍,楊建斌,周志增,等.基于Flash技術(shù)的雷達(dá)模擬訓(xùn)練軟件設(shè)計(jì)[J].電子科技,2010,23(10):110-113.
[11] 廖立新,金秀娥.基于Flash的熱傳導(dǎo)綜合實(shí)驗(yàn)儀的模擬軟件設(shè)計(jì)[J].吉首大學(xué)學(xué)報(bào):自然科學(xué)版,2013,34(6):22-25.
[12] 員永生,張飛馬.仿真軟件中的虛擬儀表的建模及應(yīng)用[J].電腦知識與技術(shù),2013,9(29):6647-6649,6653.
[13] 禤世麗.基于Visual C++的數(shù)據(jù)結(jié)構(gòu)經(jīng)典演示系統(tǒng)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(8):244,246.
[14] 唐振軍. VC++讀寫軟件配置參數(shù)的若干方法[J].電腦編程技巧與維護(hù),2010(9):31-37.
[15] 潘星.VC中ShellExecute函數(shù)的研究與應(yīng)用[J].太原大學(xué)教育學(xué)院學(xué)報(bào),2004,22(S1):132-133.
Design and Implementation of Virtual Testing Platform Software for Electronic Equipment
GU Rongjun, ZHOU Zhizeng, WANG Zaili, LIU Chaoyang
(Luoyang Electronic Equipment Test Center of China, Luoyang 471003, China)
A virtual testing platform software for electronic equipment is proposed combining VC++ and Flash. The virtualization of the main modules of an electronic device is achieved with the man-machine interaction function designed, which realizes data communication between VC++ and virtual instrument. Results show that the proposed platform offers the support personnel a friendly interface for analyzing the signal characteristics.
virtual module; test platform; Flash; VC++
2016- 05- 25
顧榮軍(1978-),男,碩士,工程師。研究方向:雷達(dá)對抗試驗(yàn)技術(shù)。
10.16180/j.cnki.issn1007-7820.2017.06.036
TP391;TP277
A
1007-7820(2017)06-128-03