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

引擎技術(shù)在高架庫虛擬仿真系統(tǒng)中的應(yīng)用

2010-04-12 00:00:00劉臣宇史玉敏
現(xiàn)代電子技術(shù) 2010年2期

摘 要:高架庫虛擬仿真系統(tǒng)是在C++環(huán)境下運(yùn)用Vega的C++函數(shù)庫進(jìn)行開發(fā)的,但是在開發(fā)過程中常規(guī)的Windows應(yīng)用程序與Vega應(yīng)用程序代碼混雜在一起,不利于編寫和維護(hù)。因?yàn)楹诵南到y(tǒng)任務(wù)主要是用Vega應(yīng)用程序?qū)崿F(xiàn)的,所以可將核心系統(tǒng)任務(wù)分離出來,其處理程序單獨(dú)開發(fā)。設(shè)計(jì)了一個(gè)系統(tǒng)運(yùn)行框架,即引擎,它只有在必要的時(shí)候才調(diào)用核心系統(tǒng)任務(wù)處理程序。在引擎設(shè)計(jì)完成后,核心系統(tǒng)任務(wù)的實(shí)現(xiàn)就成為系統(tǒng)開發(fā)的中心工作,而且避免Windows應(yīng)用程序繁雜代碼的干擾。在高架庫虛擬仿真系統(tǒng)的開發(fā)中應(yīng)用引擎技術(shù)來提高系統(tǒng)開發(fā)的效率和可維護(hù)性。

關(guān)鍵詞:高架庫虛擬仿真;Vega;引擎技術(shù);類

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:B

文章編號:1004-373X(2010)02-185-03

Application of Engine Technology in Overhead Warehouse Virtual Simulation System

GUO Feng,LIU Chenyu,SHI Yumin

(Navy Aeronautical Engineering Institue,Qingdao,266041,China)

Abstract:The overhead warehouse virtual simulation system is developed in C++ environment using Vega′s C++ function library,but in the process of developing the codes of conventional Windows applications and Vega applications are mixed,which is not conducive to compile and maintaining.Because the main task of the core system applications is realized with Vega applications,the core system task can be separated from the development work,and its process programe is developed solely,and then,to design a framework of system running,that is the engine,it can call the core of the system task process programe when necessary.After completion of design of the engine,realization of the core system task has become the central work of system development,and interference with complex code of Windows applications is avoided.The application of engine technology to improve the efficiency and maintainability of system development in the development of the overhead warehouse virtual simulation system.

Keywords:overhead warehouse virtual simulation;Vega;engine technology;class

0 引 言

高架庫是一種適合大規(guī)模儲(chǔ)存貨物的高效自動(dòng)倉庫,由高層貨架、貨箱、巷道堆垛起重機(jī)(即有軌堆垛機(jī))、出入庫輸送機(jī)系統(tǒng)、自動(dòng)化控制系統(tǒng)、計(jì)算機(jī)倉庫管理系統(tǒng)及輔助設(shè)備組成,對集裝單元貨物實(shí)現(xiàn)了自動(dòng)化保管和計(jì)算機(jī)管理。但是高架庫造價(jià)昂貴,所用的自動(dòng)化設(shè)備費(fèi)用很高,為了減少因?yàn)橛?xùn)練學(xué)習(xí)所帶來的損耗,有必要開發(fā)一套高架庫虛擬仿真系統(tǒng),即利用虛擬現(xiàn)實(shí)技術(shù)[1]和視景仿真技術(shù)[2]實(shí)現(xiàn)倉庫的業(yè)務(wù)流程、設(shè)備工作過程、信息管理等的模擬仿真效果。

虛擬仿真系統(tǒng)其實(shí)是一種特殊的程序類型,仍然只是一個(gè)以某種程序語言編寫的程序,所以可以像其他任何Windows程序那樣開發(fā)該類系統(tǒng)。該系統(tǒng)采用的是Windows環(huán)境下的C++編程語言[3],因此需要一個(gè)能夠使用Win32 API創(chuàng)建Windows應(yīng)用程序的編譯器,即Visual C++ [4-6]。仿真軟件采用Vega[7],它使用一套特有的C++函數(shù)庫驅(qū)動(dòng)虛擬場景或者三維模型進(jìn)行模擬仿真[8,9]。

在高架庫的虛擬仿真系統(tǒng)中,必須執(zhí)行各種不同的任務(wù),如設(shè)定所取貨物位置、取貨柜、送貨柜、記錄所做操作等,這是系統(tǒng)的特有任務(wù)。在開發(fā)過程中,系統(tǒng)特有任務(wù)的代碼與常規(guī)的Windows應(yīng)用程序的繁雜代碼混在一起,使程序代碼的編寫和維護(hù)變得很困難,因此有必要將系統(tǒng)特有任務(wù)與Windows應(yīng)用程序的開發(fā)工作分離開來;而分離的最好措施就是創(chuàng)建一個(gè)引擎,它允許隱藏針對Windows應(yīng)用程序而與系統(tǒng)任務(wù)無關(guān)的代碼,即創(chuàng)建了引擎后只需要專注于系統(tǒng)各任務(wù)的實(shí)現(xiàn),這才是整個(gè)系統(tǒng)最重要的工作。

1 引擎的設(shè)計(jì)

引擎的設(shè)計(jì)思想是一次性開發(fā)某些核心系統(tǒng)任務(wù)程序,然后將這些任務(wù)程序調(diào)入引擎中,只有在必要時(shí)才再次處理它們。具體來說,設(shè)計(jì)一個(gè)系統(tǒng)引擎,首先,要分析該系統(tǒng)可分解為哪些事件;然后,再為各事件創(chuàng)建相應(yīng)的事件處理函數(shù);其次,創(chuàng)建一個(gè)引擎類并把這些事件處理函數(shù)設(shè)置為引擎類的成員函數(shù),也就是系統(tǒng)的任務(wù)接口;最后是設(shè)計(jì)引擎的執(zhí)行程序,使系統(tǒng)運(yùn)行時(shí)按需調(diào)用引擎類的成員函數(shù)。

引擎程序設(shè)計(jì)完畢后,剩下的工作就是編寫引擎類的事件處理函數(shù),這樣就把與系統(tǒng)特有任務(wù)無關(guān)的Windows程序代碼分離出來,從而將程序開發(fā)工作的重心集中在系統(tǒng)特有任務(wù)的開發(fā)上。

1.1 事件分析

該系統(tǒng)中的事件包括Windows事件和系統(tǒng)特有事件。Windows事件主要是程序初始化事件,系統(tǒng)特有事件要根據(jù)系統(tǒng)的特有任務(wù)來確定。

特有任務(wù)實(shí)際上就是虛擬場景中三維模型的仿真運(yùn)動(dòng)。該系統(tǒng)中的模型包括運(yùn)動(dòng)模型和靜止模型兩種。運(yùn)動(dòng)模型主要包括觀察者(用于在虛擬場景中漫游)、堆垛機(jī)(用于取送貨)、輸送機(jī)(用于傳送貨箱)。靜止模型主要包括地面、倉庫、貨架、控制臺等。該系統(tǒng)需要完成的特有任務(wù)有:控制觀察者漫游;觀察者和其他模型需要進(jìn)行碰撞檢測;控制臺的控制屏幕需要進(jìn)行貨位坐標(biāo)設(shè)置,并將其發(fā)送給堆垛機(jī);取貨箱與送貨箱;錄制系統(tǒng)運(yùn)行過程并能夠回放。所以,漫游、設(shè)置貨位坐標(biāo)、碰撞、取貨箱、送貨箱、錄制、回放等都是系統(tǒng)的特有事件。

1.2 事件處理函數(shù)設(shè)計(jì)

在程序運(yùn)行過程中發(fā)生一個(gè)事件時(shí),就會(huì)調(diào)用相應(yīng)的事件處理程序,即事件處理函數(shù)。該系統(tǒng)主要事件的事件處理函數(shù)設(shè)計(jì)如下:

(1) 程序初始化事件函數(shù)為SystemInitialize(),用來創(chuàng)建一個(gè)引擎類對象,并將其指定給一個(gè)全局變量,這樣就可以在外部通過訪問器(Accessor)方法訪問該引擎;

(2) Vega程序的初始化函數(shù)為VegaInitialize(),用來加載三維場景、初始化Vega窗口、配置Vega程序;

(3) 漫游事件函數(shù)為Wander(),用來控制觀察者在虛擬場景中的坐標(biāo)位置,使其進(jìn)行自動(dòng)漫游或者手動(dòng)漫游;

(4) 設(shè)置貨位坐標(biāo)事件函數(shù)為SetPositionData(),用來設(shè)置需要取或送的貨箱的貨位坐標(biāo);

(5) 碰撞事件函數(shù)為Collision(),用來對觀察者與虛擬場景中的其他對象進(jìn)行碰撞檢測;

(6) 取貨箱事件函數(shù)為GetBox(),用來根據(jù)要取的貨箱的貨位坐標(biāo)去取貨箱;

(7) 送貨箱事件函數(shù)為SendBox(),用來根據(jù)要送的貨箱的貨位坐標(biāo)去送貨箱;

(8) 錄制事件函數(shù)為Record(),用來把虛擬場景中的操作情況和設(shè)備的工作過程錄制并保存下來;

(9) 回放事件函數(shù)為Replay(),用來重播錄制好的虛擬場景的片斷。

1.3 引擎類設(shè)計(jì)

高架庫引擎類設(shè)計(jì)的關(guān)鍵就是按照面向?qū)ο?OOP)的設(shè)計(jì)原則,把上述事件處理函數(shù)都放在引擎類中,具體設(shè)計(jì)如下:

class SystemEngine

{

protected:

//成員變量:存儲(chǔ)窗口大小、窗口類名稱、觀察者和貨箱的坐標(biāo)等

public:

//構(gòu)造函數(shù)/析構(gòu)函數(shù)

SystemEngine();

virtual _SystemEngine();

//常規(guī)方法

Initialize();

HandleEvent();

//訪問器方法

//事件函數(shù)

SystemInitialize();

VegaInitialize();

Wander();

};

其中:

(1) SystemEngine()是構(gòu)造函數(shù),用來初始化引擎成員變量;析構(gòu)函數(shù)保持為空,以備將來需要時(shí)使用。

(2) Initialize()方法用來處理通常在標(biāo)準(zhǔn)Windows函數(shù)WinMain()中執(zhí)行的任務(wù),即創(chuàng)建主窗口類、注冊窗口類、設(shè)置窗口大小和位置、創(chuàng)建窗口、顯示和更新窗口。另外,Initialize()方法還有兩個(gè)非常重要的任務(wù),即為Vega程序處理函數(shù)vgLoop()的執(zhí)行創(chuàng)建一個(gè)獨(dú)立的線程以及把Vega窗口嵌入到Windows窗口中。

(3) HandleEvent()方法用來處理引擎內(nèi)的標(biāo)準(zhǔn)Windows事件,即將Windows消息傳遞給引擎成員函數(shù),如程序初始化、漫游、取貨、送貨、碰撞等事件函數(shù),由它們來響應(yīng)對應(yīng)的Windows消息。

與Initialize()方法把WinMain()函數(shù)中的程序代碼隔離一樣,HandleEvent()方法也把通常在標(biāo)準(zhǔn)Windows函數(shù)WndProc()中執(zhí)行的代碼隔離,其目的是更好地隱藏常規(guī)Windows代碼。

(4) 訪問器方法用于訪問成員變量。

(5) 事件函數(shù),即該系統(tǒng)的事件處理函數(shù),它包括Windows事件和系統(tǒng)特有事件的事件處理函數(shù)。

1.4 引擎程序設(shè)計(jì)

該系統(tǒng)引擎程序主要包括WinMain(),vgLoop(),WndProc()三個(gè)函數(shù),設(shè)計(jì)如下:

(1) 函數(shù)WinMain()是Windows程序的入口函數(shù),主要執(zhí)行的任務(wù)包括:一是系統(tǒng)程序的初始化,由引擎類的事件函數(shù)SystemInitialize()完成;二是Windows窗口和Vega線程的創(chuàng)建、Vega窗口嵌入Windows窗口,由引擎類的常規(guī)方法Initialize()完成。

(2) 函數(shù)vgLoop()是在函數(shù)WinMain()中創(chuàng)建的Vega線程中執(zhí)行,主要執(zhí)行的任務(wù)包括:一是Vega窗口的創(chuàng)建和Vega程序的初始化,由引擎類的事件函數(shù)VegaInitialize()完成;二是系統(tǒng)特有事件的處理,由引擎類的事件函數(shù)VegaInitialize()、Wander()等來完成。另外,因?yàn)橄到y(tǒng)特有事件都是實(shí)時(shí)事件,所以在vgLoop()函數(shù)中需要?jiǎng)?chuàng)建一個(gè)虛擬場景的渲染主循環(huán),在該循環(huán)內(nèi)由Vega函數(shù)完成虛擬場景的實(shí)時(shí)渲染和更新。

(3) 函數(shù)WndProc()是與用戶交互的一個(gè)接口,它使用戶能夠在Vega窗口中通過調(diào)用引擎類的常規(guī)方法HandleEvent()來處理Windows消息。

2 結(jié) 語

引擎技術(shù)可以把系統(tǒng)的開發(fā)重心轉(zhuǎn)換為任務(wù)接口函數(shù)的編寫,使系統(tǒng)的開發(fā)效率和可維護(hù)性都大大提高。同時(shí),它對其他虛擬仿真系統(tǒng)或者各種二維和三維游戲的開發(fā)具有很大的借鑒意義和實(shí)用價(jià)值[10]。

但是,該系統(tǒng)的引擎不能直接應(yīng)用到其他系統(tǒng)的開發(fā),主要原因是通用性不足,建議把核心Windows事件從引擎類中分離出來即因?yàn)楹诵腤indows事件雖然與引擎聯(lián)系緊密,但二者實(shí)際上是獨(dú)立的——雖然這樣做會(huì)破壞OOP原則,但就結(jié)構(gòu)而言,把引擎單獨(dú)放在自己的類中是更好的選擇。

參考文獻(xiàn)

[1]曾芬芳.虛擬現(xiàn)實(shí)技術(shù)[M].上海:上海交通大學(xué)出版社,2005.

[2]王冬海.三維視景仿真技術(shù)在地鐵列車運(yùn)行控制系統(tǒng)仿真中的應(yīng)用[D].北京:北京交通大學(xué),2004.

[3]揣錦華.C++程序設(shè)計(jì)語言[M].西安:西安電子科技大學(xué)出版社,2006.

[4]懷紅旗,王愛民.基于MFC和Vega 的導(dǎo)航仿真系統(tǒng)[J].現(xiàn)代電子技術(shù),2009,32(2):167-170.

[5]侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2006.

[6]黃維通.邊學(xué)邊用Visual C++編程[M].北京:清華大學(xué)出版社,2006.

[7]王乘.Vega實(shí)時(shí)三維視景仿真技術(shù)[M].武漢:華中科技大學(xué)出版社,2005.

[8]譚淑婷,沈曉峰.基于Vega的機(jī)載SAR場景仿真[J].現(xiàn)代電子技術(shù),2009,32(10):58-60.

[9]龔卓蓉.Vega程序設(shè)計(jì)[M].北京:國防工業(yè)出版社,2006.

[10]張舸,林世勇.基于嵌入式系統(tǒng)的游戲程序設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009,32(6):86-90.

主站蜘蛛池模板: 色欲色欲久久综合网| 亚洲最大在线观看| 久操中文在线| 欧美一区二区啪啪| 天堂va亚洲va欧美va国产| 狠狠色丁香婷婷| 欧美一区日韩一区中文字幕页| 污网站在线观看视频| 伊人五月丁香综合AⅤ| 国产男女免费完整版视频| 久久久久久久97| 久久久久亚洲av成人网人人软件| 欧美日韩国产在线观看一区二区三区| 日本国产精品一区久久久| 四虎精品国产AV二区| 欧美中日韩在线| 欧美成人精品一级在线观看| 色老头综合网| 综合色区亚洲熟妇在线| 国产成人一二三| 欧美在线一二区| 美女被操黄色视频网站| 欧美三级不卡在线观看视频| 丰满人妻中出白浆| 在线欧美日韩| 久久亚洲黄色视频| 亚洲欧洲AV一区二区三区| 亚洲永久免费网站| 欧美精品不卡| 又粗又硬又大又爽免费视频播放| 国产主播喷水| 高清久久精品亚洲日韩Av| 精品国产一区二区三区在线观看 | AV天堂资源福利在线观看| 亚洲欧美成aⅴ人在线观看| 国产无遮挡裸体免费视频| 熟女视频91| 在线国产你懂的| 99视频精品在线观看| 国产18在线播放| 性色生活片在线观看| 国产特一级毛片| 国产免费人成视频网| 18禁黄无遮挡网站| 亚洲性色永久网址| 国产女主播一区| 亚洲天堂成人| 日韩高清中文字幕| 99九九成人免费视频精品| 99热这里只有精品2| 少妇露出福利视频| 丁香五月激情图片| 91年精品国产福利线观看久久| 69国产精品视频免费| 国产欧美日韩资源在线观看| 国产一区免费在线观看| 成人一区在线| 噜噜噜综合亚洲| 毛片在线播放网址| 欧美a在线看| 国产肉感大码AV无码| 亚洲无码91视频| 亚洲色无码专线精品观看| 亚洲精品手机在线| 成人小视频网| 日本不卡在线播放| 999精品色在线观看| 成人综合在线观看| 久久青青草原亚洲av无码| 亚洲视频无码| 日韩性网站| 毛片一区二区在线看| 天堂成人av| 99久久性生片| 久久综合色88| 欧美一区二区三区国产精品| 国产成人狂喷潮在线观看2345| 中文国产成人精品久久| 亚洲性日韩精品一区二区| 精品国产Av电影无码久久久 | 国产网站一区二区三区| 国产无码精品在线|