999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于GL Studio的虛擬儀器儀表設(shè)計與仿真

2015-06-08 08:20:35孫艷麗王玲玲陳佳琪
系統(tǒng)仿真技術(shù) 2015年2期
關(guān)鍵詞:設(shè)計

孫艷麗,王玲玲,陳佳琪

(1.海軍航空工程學院 基礎(chǔ)實驗部,山東煙臺264001;2.海軍航空工程學院 控制工程系,山東煙臺264001)

1 引 言

近年來本科學員、在職培訓及預選士官等教學任務(wù)逐年增大,但新參訓人員直接操作容易因誤操作導致?lián)p壞設(shè)備,增大維修成本,而且有限設(shè)備無法同時供應(yīng)大量人員使用,使得耗時較長,通過仿真軟件開發(fā)虛擬儀器儀表是提高效率,解決院校實驗教學、裝備培訓、部隊操練的重要途徑。

GL Studio是一個面向?qū)ο螅糜趧?chuàng)建實時的二維或三維、照片級交互式的圖形界面開發(fā)軟件。紋理工具可以導入數(shù)字照片,完成儀表仿真。GL Studio有內(nèi)建代碼生成器,把圖形設(shè)計器創(chuàng)建的文件生成可移植的VC代碼。可進行人機互動,實時顯示儀表之間的動態(tài)關(guān)聯(lián),效果直觀逼真[1-2]。GL Studio開發(fā)流程主要包括創(chuàng)建紋理、圖形界面設(shè)計、軟件設(shè)計、系統(tǒng)實現(xiàn)四大方面[3]。

2 創(chuàng)建紋理

紋理創(chuàng)建的好壞直接關(guān)系所創(chuàng)建虛擬儀表真實程度,紋理圖片的獲取是創(chuàng)建紋理的第一步,獲取紋理通常有兩種方法:① 用數(shù)碼相機直接拍攝真實的儀表,將所拍攝的照片經(jīng)過處理后作為紋理;② 用圖形編輯工具創(chuàng)建紋理[4]。目前,采用第一種方法獲得紋理比較常用。得到高質(zhì)量的實物照片后,去除照片中的背景,將所有能動部件(如儀表盤上指針、動態(tài)數(shù)字、開關(guān)、旋鈕、按鈕等)從主儀表板上逐個移除,并拷貝到新圖層中,最后保存紋理圖片。本文中根據(jù)不同需求電源柜的界面是由數(shù)碼照片處理而成,示波器的仿真則為了增強立體效果采用3dmax創(chuàng)建紋理。

2.1 基于數(shù)碼照片的紋理創(chuàng)建

制作的第一步就是要直接使用相機拍攝到其實物照片,并且在拍攝照片時一定要注意保持照相機的垂直,防止因拍攝角度的原因造成照片的傾斜,以至于最后影響到所制作的電源柜的真實度。其中需要一張電源控制柜的整體照片來作為背景。當紋理圖片的像素太大時,GL Studio軟件使用對象屬性窗口進行添加紋理圖片時是無法顯示的。可是如果降低圖片的像素,清晰度將會受到影響,本文中采取將圖片進行分割的方法,這樣既保證了單張圖片像素不會太高,又兼顧了清晰度的問題。

將面板圖片上所有能動的部件給摳出來,并將所有狀態(tài)都拍攝下來,在拍攝完照片后使用Photoshop對電源柜的面板照片進行處理,消除掉因為人為因素所造成的照片傾斜、亮度不均勻等種種會影響到其真實度的問題。將所有摳下的各種小部件紋理圖片綜合放置于同一張紋理圖上,以避免各個部件的紋理圖片的比例不同,從而導致在后續(xù)的工作中需要頻繁地調(diào)整其大小。

2.2 基于3ds max的示波器紋理創(chuàng)建

在3ds max軟件界面中,畫出示波器圖片中線的截面,設(shè)置其路徑,使用放樣法制作線的三維模型。使用擠出法在3ds max中制作示波器上凸出的按鈕等。對于示波器上的金屬接口,設(shè)置其材質(zhì)為金屬。對于示波器的屏幕采用先分割平面再擠出的方法來制作,最后設(shè)置其紋理使其更接近于真實物體。取得用3ds max制作的示波器的立體模型的圖片,用Photoshop調(diào)整其大小使其能夠被GL Studio軟件使用的示波器虛擬儀器背景的紋理圖片,如果紋理圖片的像素過大的話則在GL Studio中是顯示不出來的。再將示波器上所有的按鈕以及旋鈕用Photoshop逐個將其摳下來,并將其拷貝到新的圖層上,獲得紋理圖片。

3 圖形界面設(shè)計

首先用 VC6.0 在 GL Studio 3.0 Standalone AppWizard中建立設(shè)計器,完成初始化,當 GL Studio初始化完畢后,GL Studio已經(jīng)生成了大量的代碼,包括三個文件,兩個源文件和一個頭文件。一個源文件是win_main.cpp,在該文件中有int WINAPI WinMain函數(shù),這是程序的入口函數(shù),該函數(shù)調(diào)用了另一個源文件里的int main(int argc,char*argv[])函數(shù),這個源文件的名字是根據(jù)用戶定義的工程的名字來定義[5]。同時 GL Studio又定義了一個指針全局變量,名字也是工程的名字,該指針指向的類是glsDisplayFrame類的派生類,在 int main(int argc,char*argv[])中在堆上創(chuàng)建glsDisplayFrame類的派生類對象。在該類的構(gòu)造函數(shù)中做了一些初始化工作,然后調(diào)用Create();函數(shù),該函數(shù)用來產(chǎn)生程序窗口,具體如下:

void testClass::Create(void)

{

theWindow=new OpenGLWindow(0,0,_width,_height,Name(),this);

theWindow->end();

theWindow->resizable(theWindow);

BackgroundColor(255,255,255,255);

FrameInterval(33333);

theWindow->resize(0,0,_width,_height);

theWindow->show();

theWindow->make_current();

}

之后即可在GL Studio編輯器的設(shè)計窗口中利用工具欄中的創(chuàng)建工具和“所見即所得”的設(shè)計環(huán)境創(chuàng)建一個和電源柜背景圖像相似的圖形對象[6]。將經(jīng)過處理的控制柜的背景紋理圖片通過對象屬性窗口中的Texture窗口添加到當前的圖形對象之中,并將其設(shè)置為當前紋理。通過設(shè)計窗口上工具欄中的模式工具對紋理進行調(diào)整,使其正好鋪滿圖形,在主控制窗口中給創(chuàng)建好的圖形對象命以恰當?shù)拿郑员阌诟玫毓芾怼⒕庉媽ο蟆3嗽O(shè)計畫布外,GL Studio設(shè)計器包含了分層視圖,在視圖中顯示所有設(shè)計中對象列表,以樹狀結(jié)構(gòu)顯示,如圖1所示。

圖1 狀態(tài)設(shè)置圖Fig.1 State diagram

根據(jù)背景紋理上各個所摳下的部件的形狀,再分別創(chuàng)建出與它們各自相近的圖形對象,依照對電源柜背景紋理的處理方法分別對其進行處理,最后得到所要設(shè)計的圖形界面。

在畫面中用到不少文本框,要實現(xiàn)文本框的數(shù)據(jù)、文本的改變,首先要把文本格式化到一個緩存里。設(shè)文本框指針名為firsttextgrid,要把數(shù)值100顯示在文本框里,可以首先創(chuàng)建一個屬性成員函數(shù),通過在CODE主窗口點右鍵添加即可實現(xiàn),此時會得到一個成員變量,只需要選定SET方法,然后輸入:

int index=100;

char buffer[10];

sprintf(buffer,"%d",index);

firsttextgrid->string(buffer);

因為電源柜是單層畫面,只有一個Calculate()函數(shù),只要選擇classmenthods在Calculate()函數(shù)中調(diào)用剛才的SET方法,然后保存,生成代碼,編譯連接運行,就可以在文本框中看到修改了的數(shù)據(jù)。

產(chǎn)生窗口以后繪制的畫面,由函數(shù)CreateObjects()生成[7]。在該函數(shù)里,首先在堆上生成對象,該對象代表每個畫面中的控件,名字是用戶繪制畫面時候,在主控制面板中生成的名字。GL Studio根據(jù)繪制的對象不同,會生成從不同類中派生的對象,指針的定義已經(jīng)在頭文件中定義好,在CreateObjects()中,生成對象后調(diào)用該類成員函數(shù),產(chǎn)生畫面。該類成員函數(shù)的具體定義已經(jīng)封裝在GL Studio的動態(tài)庫中,GL Studio會根據(jù)用戶繪制的畫面,把畫面的必要信息,如頂點顏色、頂點位置、名字、紋理大小等以參數(shù)的方式傳過去。GL Studio將根據(jù)這些參數(shù),自動生成與用戶在畫布繪制的一樣的圖像。這就是GL Studio的所見機所得的工作機制。圖片繪制完畢后,進入do-while語句,這個循環(huán)將不斷調(diào)用一個虛函數(shù)Calculate(),實現(xiàn)所有畫面的刷新,如圖2所示。

圖2 各功能模塊的調(diào)用關(guān)系Fig.2 Call relationship of each function module

在設(shè)計好圖形界面之后,依據(jù)實際面板的操作需要將各個控制部件創(chuàng)建成合適的裝置,工作方式開關(guān)創(chuàng)建成旋鈕,選中工作方式圖形對象,點擊工具欄中轉(zhuǎn)化工具的旋鈕裝置,如圖3所示。打開旋鈕裝置的對象屬性窗口,在Knob標簽下,選擇General標簽頂部的Angle Range,即角度范圍。設(shè)置旋鈕旋轉(zhuǎn)角度為0°~70°,即旋鈕旋轉(zhuǎn)的起始位置和終點位置,如圖4所示。

圖3 轉(zhuǎn)化為旋鈕裝置Fig.3 Device into a knob

圖4 設(shè)置旋轉(zhuǎn)范圍Fig.4 Set the rotation range

之后設(shè)置起點和終點間的擋位,在Detents標簽下的Number of Detents輸入框中填入數(shù)字“3”,即共有3個擋位,分別為“0”、“平時”、“忙時”。滑動Detent Positions的滑塊使每一擋位對應(yīng)合適的角度。在主控制窗口的代碼窗口中添加新變量。變量類型為float,名字設(shè)為_newRoll,初始值設(shè)為0.0f。最后在對象屬性窗口的Object Code欄的Initialization Code中輸入如下代碼:

Self->DetentVal(1);∥旋鈕初始擋位為1

在Event callback Code即事件回調(diào)代碼中寫入以下代碼:

bool rval=false;

if(ObjectEventIs(ev,"DetentVal"))

{switch(rollGlsKnob-> DetentVal())

{case1:

_newRoll=0.0f;∥0°時為擋位 1

break;

case2:

_newRoll=50.0f;∥50°時為擋位 2

break;

case3:

_newRoll=70.0f;∥70°時為擋位 3

break;

}

Rval=true;

}

Return rval;

剩余的部件創(chuàng)建成按鈕裝置,在所有創(chuàng)建的GlsPushButton(按鈕裝置)對象的對象屬性窗口的Object Code窗口的Event callback Code即事件回調(diào)代碼中寫入以下代碼:

chekonggui_click_value=self->State();

return 0;

其中 chekonggui處填寫每個對象各自的名字。

在主控制窗口的代碼窗口的類變量中點擊Add將所有的GlsPushButton對象逐個添加進去,在設(shè)定其類型為int,初始值為0。編寫行為代碼。

4 軟件整體設(shè)計

為了達到實現(xiàn)虛擬電源柜功能的目的,需要對圖形界面中的開關(guān)、旋鈕、按鈕、指示燈、屏幕以及指針等動態(tài)的部件進行控制,而這就需要在主控制窗口中的代碼窗口類方法的Calculate區(qū)域內(nèi)進行編程來實現(xiàn)各部件的動作,如圖5所示。

圖5 軟件編程圖Fig.5 Software program

5 編譯、鏈接和測試

編程完成即可進行電源柜的仿真,測試其是否滿足可正常工作,滿足設(shè)計要求。首先需要生成.h 和.cpp 文件,之后打開.dsp 文件,在 C++環(huán)境下對電源柜進行測設(shè)。在.dsp文件中對電源柜進行運行,即可生成.exe可執(zhí)行文件。在.exe可執(zhí)行文件上按編寫的行為程序點擊按鈕,測試其功能是否正常,如圖6所示。

圖6 示波器的測試Fig.6 Test of oscilloscope

6 結(jié) 論

經(jīng)過測試發(fā)現(xiàn)電源柜和示波器均能按照所編寫的行為程序動作,能夠?qū)崿F(xiàn)使用虛擬儀器進行院校裝備訓練,實現(xiàn)提高效率、節(jié)省損耗的效果。

[1] 于輝,趙經(jīng)成,付戰(zhàn)平.Gl Studio虛擬儀表技術(shù)應(yīng)用與系統(tǒng)開發(fā)[M].北京:國防工業(yè)出版社,2010.YU Hui,ZHAO Jingcheng,F(xiàn)U Zhanping.Gl Studio virtual instrument technology application and system development[M].Beijing:National Defence Industry Press,2010.

[2] 張文,朱元昌,樊世友.Gl Studio及其在雷達面板仿真中的應(yīng)用[J].測控技術(shù),2012,21(12):50-53.ZHANG Wen,ZHU Yuanchang,F(xiàn)AN Shiyou.GL Studio and its application in the simulation of radar’s panels[J].Measurement& Control Technology,2012,21(12):50-53.

[3] 崔小鵬,邵英,李萬.基于Gl Studio的電力監(jiān)控系統(tǒng)設(shè)計[J].船海工程,2011,40(2):122-124.CUI Xiaopeng,SHAO Ying,LI Wang.Design of power monitoring system based on GL studio[J].Ship & Ocean Engineering,2011,40(2):122-124.

[4] Distributed Simulation Technology Inc.Gl Studio user’s guide,Version 1.04[R].[s.l.]:Distributed Simulation Technology Inc,2000.

[5] 孫艷麗,李建海,王玲玲.基于GL的某型電源系統(tǒng)仿真設(shè)計[J].電子測量技術(shù),2014,37(2):1-3.SUN Yanli,LI Jianhai,WANG Lingling.Simulation of a certain type of power system based on GL Studio[J].Electronic Measurement Technology,2014,37(2):1-3.

[6] 喬林,費廣正.Visual C++高級編程技術(shù)——Open GL篇[M].北京:中國鐵道出版社,2000.QIAO Lin,F(xiàn)EI Guangzheng.Visual C++advanced programming technology——Open GL[M].Beijing:China Railway Publishing House,2000.

[7] 沙俊名,劉澤乾,龐帥.基于Gl Studio的指揮儀模擬訓練系統(tǒng)設(shè)計與實現(xiàn)[J].科學技術(shù)與工程,2011,11(12):2819-2823.SHA Junming,LIU Zeqian,PANG Shuai.The design and implementation of a director simulated training system based-on GL Studio[J].Science Technology and Engineering,2011,11(12):2819-2823.

猜你喜歡
設(shè)計
二十四節(jié)氣在平面廣告設(shè)計中的應(yīng)用
河北畫報(2020年8期)2020-10-27 02:54:06
何為設(shè)計的守護之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統(tǒng)設(shè)計
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設(shè)計
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發(fā)生器仿真設(shè)計
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設(shè)計萌到家
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設(shè)計到“設(shè)計健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 久久6免费视频| 国产精品视频观看裸模| 亚洲Aⅴ无码专区在线观看q| 日韩A∨精品日韩精品无码| 国产噜噜在线视频观看| 亚洲第一成网站| 亚洲va视频| 996免费视频国产在线播放| 国产精品 欧美激情 在线播放 | 精品91自产拍在线| 国产一区自拍视频| 国产福利一区视频| 高清色本在线www| 国产精品蜜臀| 手机成人午夜在线视频| 亚洲国产日韩视频观看| 亚洲无码高清视频在线观看| 老熟妇喷水一区二区三区| 熟女视频91| 日韩高清欧美| 免费看美女毛片| 色噜噜综合网| 欧洲成人免费视频| 亚洲成aⅴ人片在线影院八| 91久久大香线蕉| 99九九成人免费视频精品| 日韩在线永久免费播放| 日韩黄色在线| 内射人妻无码色AV天堂| 伊人成人在线视频| 九九热精品视频在线| 精品综合久久久久久97| 911亚洲精品| 国产成人久久777777| 色国产视频| 91久久青青草原精品国产| 亚洲精品高清视频| 国产欧美高清| 国产理论一区| a级毛片免费看| 国产浮力第一页永久地址| 99精品免费欧美成人小视频| 亚洲精品无码抽插日韩| 国产精品网拍在线| 97人人做人人爽香蕉精品| 成人国产精品一级毛片天堂| 国产另类视频| 久久精品人人做人人爽| 四虎精品国产AV二区| a免费毛片在线播放| 首页亚洲国产丝袜长腿综合| 久久精品中文字幕少妇| 亚洲精品爱草草视频在线| 国产精品手机视频| 国产无码高清视频不卡| 久久香蕉国产线看精品| 高清码无在线看| 97视频精品全国在线观看| 999精品在线视频| 亚洲视频一区在线| 2021国产精品自拍| 一区二区三区在线不卡免费| 国产美女一级毛片| AV色爱天堂网| 国产成人盗摄精品| 精品国产一区二区三区在线观看 | 亚洲精品视频免费| 成人无码一区二区三区视频在线观看| 91小视频在线观看| 中文字幕久久亚洲一区| 国产精品综合色区在线观看| 国产精品无码翘臀在线看纯欲| 99人妻碰碰碰久久久久禁片| 精品福利网| 国内精自线i品一区202| 麻豆AV网站免费进入| 国产自无码视频在线观看| 欧美日韩综合网| 欧美激情视频二区| 无码中文字幕乱码免费2| 久久国产高清视频| 免费在线播放毛片|