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