周 杰
(海軍潛艇學(xué)院 山東 青島 266042)
?
Virtools與VisualC++信息交互技術(shù)研究
周 杰
(海軍潛艇學(xué)院 山東 青島 266042)
為彌補(bǔ)虛擬開發(fā)平臺(tái)Virtools通信模式的缺陷,豐富Virtools與其他軟件平臺(tái)的通信手段,拓展應(yīng)用范圍,針對(duì)Virtools與VC的通信機(jī)制,提出通過開發(fā)UDP通信模塊、串口通信模塊以及利用Virtools消息機(jī)制和Virtools陣列輸出機(jī)制完成兩種軟件平臺(tái)之間數(shù)據(jù)交互的方法。充分發(fā)揮VC開發(fā)平臺(tái)良好的兼容性,為Virtools與其他不同軟件平臺(tái)間進(jìn)行信息交互提供可行途徑。
Virtools VC 通信
虛擬現(xiàn)實(shí)技術(shù)(VR),通過綜合利用圖片、視頻、三維動(dòng)畫和聲音等多媒體素材,營造出具有沉浸性、交互性、構(gòu)想性的軟件操作環(huán)境[1]。虛擬現(xiàn)實(shí)技術(shù)通過構(gòu)建三維模型,營造多種視角,提供具有沉浸性和交互性的操作環(huán)境,操作者可以親身漫游虛擬世界,多角度觀察操作方法,身臨其境參與交互,給操作者強(qiáng)烈的臨場感和逼真感。這種深層的自然的人機(jī)交互,使操作人員改變以往被動(dòng)的知識(shí)接受模式,變?yōu)橹鲃?dòng)探究,積極尋求新知識(shí),形成潛在技能,可以為實(shí)際操作技能的最終形成奠定基礎(chǔ)。將虛擬現(xiàn)實(shí)技術(shù)融合到模擬訓(xùn)練系統(tǒng)中,如運(yùn)輸工具駕駛、武器裝備操作等訓(xùn)練平臺(tái),可以有效解決傳統(tǒng)模擬操作中臨場感弱、操作訓(xùn)練不充分、難以形成有效技能的問題。通過逼真的操作平臺(tái)、工具模型和高度還原的操作過程,調(diào)動(dòng)操作者的主動(dòng)性,提升知識(shí)技能構(gòu)建的效率。在保證設(shè)備和人員安全的前提下,實(shí)踐所學(xué)知識(shí),加速知識(shí)到技能的轉(zhuǎn)換過程。
虛擬現(xiàn)實(shí)技術(shù)已經(jīng)廣泛應(yīng)用于設(shè)計(jì)測(cè)試、模擬訓(xùn)練、游戲娛樂和教學(xué)科研等多個(gè)領(lǐng)域。隨著VR頭戴設(shè)備、應(yīng)力反饋設(shè)備等各種終端設(shè)備的大量使用,VR技術(shù)的應(yīng)用廣度和深度逐年提升,涌現(xiàn)出許多成熟的開發(fā)平臺(tái),如Quest3D、Virtools和Unity3D等。其中Virtools是法國達(dá)索公司開發(fā)的三維虛擬軟件開發(fā)平臺(tái),將自身功能模塊與其他三維軟件開發(fā)的模型或場景相結(jié)合,通過編程規(guī)劃其邏輯行為和物理屬性,開發(fā)貼近現(xiàn)實(shí)的虛擬交互環(huán)境[2]。Virtools功能、模塊完善,適用于游戲和動(dòng)畫的開發(fā)制作,也是出現(xiàn)最早、使用最為廣泛的虛擬現(xiàn)實(shí)游戲開發(fā)工具。Virtools突出的便捷性和開放性,使其成為許多虛擬現(xiàn)實(shí)開發(fā)技術(shù)初學(xué)者的首選。利用行為模塊實(shí)現(xiàn)圖形化的開發(fā)介面,通過視覺化窗口實(shí)現(xiàn)圖形化編程,這些特點(diǎn)都使Virtools的學(xué)習(xí)門檻降低,易于理解,便于掌握。但對(duì)于需要使用多種軟件平臺(tái)聯(lián)合開發(fā)的復(fù)雜系統(tǒng),使用Virtools與其他軟件平臺(tái)進(jìn)行通信時(shí)卻存在一定的技術(shù)缺陷,信息交互技術(shù)的短板限制了Virtools的應(yīng)用,特別對(duì)于使用最為廣泛的Visual C++開發(fā)平臺(tái),僅利用Virtools自帶的行為模塊很難實(shí)現(xiàn)二者之間的信息交互。針對(duì)這一技術(shù)缺陷,本文提出了行之有效的技術(shù)方案,解決Virtools虛擬軟件和Visual C++軟件開發(fā)平臺(tái)之間信息交互困難的難題。
Vtrtools通過模塊開發(fā)機(jī)制實(shí)現(xiàn)行為開發(fā)與互動(dòng)操作,各類功能模塊稱作BuildingBlock,將不同功能的BuildingBlock遵循預(yù)設(shè)的邏輯關(guān)系組合起來實(shí)現(xiàn)預(yù)定的功能[3]。
網(wǎng)絡(luò)服務(wù)器模塊包含大量Building Block(BB模塊)實(shí)現(xiàn)Virtools的網(wǎng)絡(luò)通信功能。這些Building Block遵循TCP/IP協(xié)議,按照典型的CS結(jié)構(gòu),完成網(wǎng)絡(luò)通信。但必須在VirtoolsDev軟件平臺(tái)下調(diào)用這些功能模塊才能構(gòu)建通信網(wǎng)絡(luò)。即所有網(wǎng)絡(luò)通信節(jié)點(diǎn)都要用Virtools來開發(fā),才能使用網(wǎng)絡(luò)通信BuildingBlock構(gòu)建通信體系[4]。在復(fù)雜系統(tǒng)的開發(fā)過程中,Virtools經(jīng)常需要響應(yīng)其他軟件開發(fā)平臺(tái)的信息,例如VC編寫的程序向Virtools發(fā)送消息,Virtools接受消息并控制模型產(chǎn)生相應(yīng)動(dòng)作。Virtools自帶的模塊庫中沒有此類功能模塊,當(dāng)需要Virtools軟件平臺(tái)和其他軟件平臺(tái)之間進(jìn)行通信,交換數(shù)據(jù),這時(shí)Virtools通信的局限性就凸顯出來,內(nèi)置網(wǎng)絡(luò)模塊無法與其他軟件平臺(tái)進(jìn)行信息通信。這種缺陷限制了Virools平臺(tái)與其他不同軟件平臺(tái)之間的信息交互,不利于大型三維虛擬軟件的開發(fā)。
Visual C++(VC)軟件開發(fā)平臺(tái)基礎(chǔ)語言較為普及,代碼執(zhí)行效率高,使用微軟編譯器,得到Windows系列操作系統(tǒng)的良好支持,開發(fā)的程序健壯、穩(wěn)定。一般大型程序的核心組件都使用VC開發(fā),以滿足核心程序運(yùn)行高效穩(wěn)定的要求。VC具有完善的幫助文檔,大量的優(yōu)質(zhì)教材和海量的網(wǎng)絡(luò)資源,為開發(fā)者帶來了極大的便利條件。而且VC開發(fā)平臺(tái)具有多種控件及函數(shù)接口,可以利用多種方法實(shí)現(xiàn)與不同軟件之間的信息通信。研究Virtools與VC之間的信息交互技術(shù),以VC平臺(tái)為樞紐,充分利用VC平臺(tái)豐富的編程資源、良好的兼容性和擴(kuò)展性,實(shí)現(xiàn)Virtools與其他軟件的信息交互,彌補(bǔ)其信息交互技術(shù)的短板,擴(kuò)展Virtools的通信手段,拓展應(yīng)用范圍。
用戶數(shù)據(jù)報(bào)協(xié)議(UDP協(xié)議),與TCP協(xié)議相比沒有擁塞控制機(jī)制,便于維持最低數(shù)據(jù)率,消除數(shù)據(jù)傳輸時(shí)延[5],在實(shí)時(shí)控制程序中應(yīng)該利用UDP協(xié)議速度優(yōu)勢(shì)建立通信機(jī)制,用戶數(shù)據(jù)報(bào)協(xié)議通過套接字(Socket)傳輸數(shù)據(jù),將該協(xié)議嵌入到Building Block中,再利用VC的套接字技術(shù)可實(shí)現(xiàn)VC與Virtools平臺(tái)的通信。Building Block開發(fā)需要利用Microsoft Visual Studio.Net環(huán)境,開發(fā)流程如圖1所示。
圖1 Building Block開發(fā)流程
(1) 使用函數(shù)CKGetPluginInfo()和CKGetPluginlnfoCount()將DLL聲明為Building Block Plugin,定義Plugin為Behavior Plugin類型,定義并聲明Building Block Plugin個(gè)數(shù)為一,使用這個(gè)Plugin執(zhí)行Building Block,Building Block Plug要執(zhí)行的Building Block用函數(shù)RegisterBehaviorDcclaration()注冊(cè)。
(2) 利用CreateCKObjectDeclaration()聲明函數(shù)創(chuàng)建CKObjectDeelaration類型的指針,指向創(chuàng)建的Building Block信息函數(shù),描述Building Block的基本信息,如版本號(hào),作者,功能。
(3) 用創(chuàng)建函數(shù)CreateCKBehaviorPrototype()創(chuàng)建網(wǎng)絡(luò)通信相關(guān)的模塊輸入端口,定義端口號(hào)、網(wǎng)絡(luò)地址等。從指定輸入端口上獲取并保存網(wǎng)絡(luò)信息和網(wǎng)絡(luò)數(shù)據(jù)結(jié)果。
(4) 將使用套接字相關(guān)的頭文件和庫文件添加到Building Block中,首先激活模塊的輸入端口,再將網(wǎng)絡(luò)應(yīng)用程序移植到BuildingBlock的執(zhí)行函數(shù)中。讀取輸入?yún)?shù)可利用函數(shù)GetlnputParameterValue()數(shù)據(jù)結(jié)果可通過SetOutputParameterValue()保存到參數(shù)輸出端口。
(5) 使用系統(tǒng)默認(rèn)同調(diào)函數(shù)完成對(duì)Building Block的創(chuàng)建,生成DLL文件。
(6) 編譯成功后,從生成的文件目錄下將DLL文件拷貝到Virtools軟件安裝目錄下的BuildingBlock文件夾中,重新啟動(dòng)Virtools調(diào)用執(zhí)行。
用戶數(shù)據(jù)報(bào)協(xié)議通信模塊發(fā)出的信息在VC中可利用套接字(Socket)進(jìn)行處理,完成信息交換。
首先調(diào)用WSAStartup()初始化Windows Sockets DLL 。WinSock的動(dòng)態(tài)連接庫初始化成功后,在服務(wù)器端使用函數(shù)socket( int af, int type, int protocol )建立監(jiān)聽Socket,type參數(shù)設(shè)定為SOCK_DGRAM,以使用UDP(數(shù)據(jù)報(bào))通信協(xié)議。接下來調(diào)用bind()函數(shù)為Socket指定地址和端口(Port)。服務(wù)器端完成Socket對(duì)象綁定之后,使用listen()函數(shù)建立監(jiān)聽隊(duì)列,進(jìn)入監(jiān)聽狀態(tài)準(zhǔn)備接收客戶端連接請(qǐng)求,并設(shè)定最大連接數(shù)。當(dāng)需要真正完成通信連接時(shí),客戶端需調(diào)用connect()發(fā)出請(qǐng)求,系統(tǒng)使用WSAAsyncSelect()函數(shù)發(fā)出通知,服務(wù)器端調(diào)用accept()響應(yīng)請(qǐng)求,完成通信連接。建立連接后,客戶端的Virtools程序就可以借由用戶數(shù)據(jù)報(bào)BB模塊發(fā)出自定義消息,而VC開發(fā)的服務(wù)器端通過分析消息,調(diào)用相關(guān)函數(shù)進(jìn)行處理。結(jié)束通信連接由服務(wù)器或客戶端的任一端調(diào)用closesocket()套接字,并調(diào)用 WSACleanup()通知套接字動(dòng)態(tài)鏈接庫釋放占用的資源。
串口通信是利用數(shù)據(jù)信號(hào)線連接外設(shè)和計(jì)算機(jī),完成按位數(shù)據(jù)傳輸?shù)囊环N通信方法[6]。串口通信雙方連接采用端對(duì)端的方式,連接方式單一,硬件要求低,不容易出現(xiàn)相互干擾,查錯(cuò)糾錯(cuò)難度低,容易實(shí)現(xiàn)。但其存在接口插拔風(fēng)險(xiǎn),要避免兩端通電狀態(tài)下的拔插,安全性低于網(wǎng)口。串口通信傳輸速度較慢,對(duì)于操作對(duì)象較多,交互數(shù)據(jù)量較大的虛擬操作軟件,傳輸數(shù)據(jù)量很難達(dá)到實(shí)時(shí)通信的要求,串口通信僅能應(yīng)對(duì)虛擬環(huán)境較為簡單,操作對(duì)象單一的虛擬操作軟件。而且應(yīng)用程序?qū)Υ诰哂歇?dú)占性,一旦某個(gè)程序占據(jù)串口,其他的程序則無法使用該串口。單一程序由于串行通信的特點(diǎn)也無法使用多線程進(jìn)行串口通信否則會(huì)發(fā)生多個(gè)命令之間的干擾導(dǎo)致通信失敗。
開發(fā)串口通信模塊需要利用Virtools SDK開發(fā)構(gòu)架,通過調(diào)用Win 32 API完成,靠指針依次調(diào)用執(zhí)行注冊(cè)函數(shù)、聲明函數(shù)、創(chuàng)建函數(shù)、執(zhí)行函數(shù)和回調(diào)函數(shù),完成對(duì)模塊的開發(fā)(具體開發(fā)步驟可參考用戶數(shù)據(jù)報(bào)協(xié)議通信模塊開發(fā))。在回調(diào)函數(shù)中調(diào)用Win32 API文件操作函數(shù)實(shí)現(xiàn)串口打開/關(guān)閉。CreateFile()函數(shù)實(shí)現(xiàn)串口打開,WriteFile()函數(shù)實(shí)現(xiàn)數(shù)據(jù)發(fā)送,ReadFile()函數(shù)則用來實(shí)現(xiàn)接受數(shù)據(jù)[6]。程序運(yùn)行過程中,首先利用執(zhí)行函數(shù)完成Building Block激活,接著參數(shù)初始化,然后與通信端利用握手機(jī)制建立連接,從計(jì)算機(jī)串口讀取并處理數(shù)據(jù),數(shù)據(jù)結(jié)果可供其他模塊調(diào)用。串口通信模塊的循環(huán)調(diào)用可通過Virtools幀循環(huán)方式實(shí)現(xiàn)。
VC可利用多種方式接受Virtools通過串口發(fā)出的數(shù)據(jù),如串行通信控件MSComm或利用串口通信類。串行通信控件主要應(yīng)用于基于對(duì)話框開發(fā)的程序,通過事件驅(qū)動(dòng)處理串行端口信息交互,發(fā)生數(shù)據(jù)交換或通信錯(cuò)誤時(shí),OnComm事件觸發(fā),捕捉CommEvent屬性值,應(yīng)用程序根據(jù)屬性值做出相應(yīng)的信息處理。
其次可開發(fā)自定義的串口通信類,在單線程或多線程中實(shí)現(xiàn)串口通信。利用CreateFile()函數(shù)指定通信串口及相關(guān)屬性。通過調(diào)用GetCommState()函數(shù)讀取當(dāng)前串口設(shè)置,通過SetCommState()函數(shù)寫入修改后的屬性。調(diào)用SetCommTimeouts()函數(shù)通過COMMTIMEOUTS結(jié)構(gòu)設(shè)置異步讀寫的超時(shí)控制。串口讀寫操作主要運(yùn)用ReadFile()與WriteFile()API函數(shù)。
消息是對(duì)象之間在一次交互中所傳送的信息。為保持封裝對(duì)象成為各司其職,互不干擾的高內(nèi)聚獨(dú)立單位,消息通信成為對(duì)象之間唯一合法的動(dòng)態(tài)聯(lián)系途徑,使不同功能單元的行為互相配合,構(gòu)成一個(gè)動(dòng)態(tài)、有序的系統(tǒng)[7]。當(dāng)系統(tǒng)發(fā)生某個(gè)事件時(shí),操作系統(tǒng)將與這個(gè)事件關(guān)聯(lián)的消息放置到消息隊(duì)列,應(yīng)用程序從消息隊(duì)列中接收消息并傳遞給適當(dāng)?shù)拇翱?,窗口響?yīng)并處理消息。所有的開發(fā)環(huán)境都有消息機(jī)制,因此借由消息機(jī)制,可以實(shí)現(xiàn)不同平臺(tái)之間的應(yīng)用程序調(diào)用請(qǐng)求。消息機(jī)制可用于緩解甚至消除系統(tǒng)瓶頸,消息處理可并行展開,緩解點(diǎn)對(duì)點(diǎn)同步連接造成系統(tǒng)瓶頸,甚至可以消除瓶頸。通過多個(gè)消息接收者并發(fā)處理不同消息,還可以提高系統(tǒng)的整體可伸縮性和吞吐量。消息機(jī)制的這些特點(diǎn)都使它非常適用于完成虛擬平臺(tái)和VC軟件平臺(tái)之間的實(shí)時(shí)大數(shù)據(jù)量信息交互。
利用消息機(jī)制進(jìn)行通信,首先需要Virtools留出通信接口,以方便VC讀取相關(guān)信息。Virtools消息通信模塊的開發(fā)基本步驟與串口通信模塊、UDP通信模塊類似,完成指定消息的發(fā)送需在執(zhí)行函數(shù)中調(diào)用函數(shù):
CKMessageManage:SendMessageSingle(CKMessageType MsgType,CKBeobjectdest,CKBeObjecl*sender=NUll)
VC可利用鉤子機(jī)制獲取Virtools發(fā)送的特定消息。應(yīng)用程序使用鉤子機(jī)制能夠完成特定事件的截獲和處理。應(yīng)用程序可以在鉤子(Hook)這個(gè)消息處理平臺(tái)上面設(shè)置子程序,以監(jiān)測(cè)其他進(jìn)程所創(chuàng)建的特定窗口的指定消息。指定消息存儲(chǔ)在鉤子鏈表中,即與信息相關(guān)聯(lián)的指針列表,該鏈表中的指針為各個(gè)類型的消息指定處理子程。這些處理子程叫做鉤子子程,鉤子子程可由應(yīng)用程序自定義,它是應(yīng)用程序的回調(diào)函數(shù),可通過API函數(shù)SetWindowsHookEx()將其安裝到鉤子鏈表中。
VC利用鉤子機(jī)制截獲并處理Virtools發(fā)出的消息后,可以通過發(fā)送指定的虛擬鍵盤消息將消息處理結(jié)果反饋Virtools完成通信。Virtools自帶行為交互模塊Keyboard Controller、Keyboard Mapper支持將按鍵操作映射為系統(tǒng)消息或自定義消息。響應(yīng)鍵盤消息可保證信息傳遞的多樣性。VC可以實(shí)現(xiàn)在不激活應(yīng)用程序的情況下向其窗口發(fā)送模擬按鍵消息。首先使用FindWindow() 及 FindWindowEx()函數(shù)取得接收按鍵消息的窗口句柄,然后用PostMessage()向該窗口發(fā)送按鍵消息。運(yùn)用這種方法可以依據(jù)VC發(fā)送的信息對(duì)虛擬物體或角色進(jìn)行靈活多變的控制,流程圖如圖2所示,利用消息機(jī)制實(shí)現(xiàn)VC與Virtools的通信。
圖2 消息機(jī)制通信流程
Virtools中的陣列用于建立數(shù)據(jù)、時(shí)間變量控制等,它由Column(列)和Row(行)組成[9]。Virtools的陣列可以存儲(chǔ)三維對(duì)象和攝像機(jī)的三維位置、矢量位移、旋轉(zhuǎn)方式、旋轉(zhuǎn)角度和動(dòng)作時(shí)機(jī)等動(dòng)作因素。Virtools提供了大量陣列操作BB,可以直接讀取三維物體的相關(guān)參數(shù)存儲(chǔ)到陣列或者根據(jù)陣列內(nèi)存儲(chǔ)的參數(shù)驅(qū)動(dòng)三維物體動(dòng)作。在Virtools程序運(yùn)行時(shí),通過Test和2D Picking行為交互模塊判斷此時(shí)被用戶操作的虛擬物體,并將虛擬物體的參數(shù)變化通過SetCell行為交互模塊對(duì)陣列的每一個(gè)元素及相應(yīng)參數(shù)進(jìn)行設(shè)置。然后利用Array Save行為交互模塊將數(shù)組數(shù)據(jù)儲(chǔ)存成指定路徑下的文件檔案[9]。一旦VC軟件讀取這些文件檔案就可以提取Virtools虛擬軟件操作的結(jié)果,并根據(jù)結(jié)果做出反饋,完成信息交互。
完成存儲(chǔ)后利用Windows API實(shí)現(xiàn)對(duì)指定目錄中文件的監(jiān)控,一旦發(fā)現(xiàn)文件改變,則立即進(jìn)行處理,獲取數(shù)據(jù)??墒褂玫腁PI函數(shù)有:FindFirstChangeNotification()和ReadDirectory ChangesW()。兩個(gè)函數(shù)都能夠監(jiān)測(cè)文件最終寫入時(shí)間和文件大小的改變,從而實(shí)時(shí)監(jiān)測(cè)陣列輸出指定文件,快速提取Virtools通過陣列機(jī)制輸出的信息。
當(dāng)監(jiān)控條件滿足時(shí),F(xiàn)indFirstChangeNotification()函數(shù)返回的監(jiān)控句柄結(jié)束在WaitForMultipleObjects() 上的等待狀態(tài),變?yōu)榧ぐl(fā)狀態(tài),這時(shí)應(yīng)用程序得知目錄發(fā)生了變化并立即進(jìn)行數(shù)據(jù)處理,數(shù)據(jù)處理結(jié)束后調(diào)用BOOL FindNextChangeNotification()來將該監(jiān)控句柄置為去激活狀態(tài),并繼續(xù)等待下一次被激活。完成文件監(jiān)控時(shí)調(diào)用FindCloseChangeNotification()關(guān)閉監(jiān)控句柄。
ReadDirectoryChangesW()函數(shù)使用CreateFile()獲取要監(jiān)控目錄的句柄;然后循環(huán)調(diào)用ReadDirectoryChangesW()判斷文件是否改變,并分配內(nèi)存用來存放目錄變化通知并傳給該函數(shù)。當(dāng)監(jiān)控條件滿足文件發(fā)生改變,函數(shù)把目錄變化通知存放在指定的內(nèi)存區(qū)域內(nèi),并進(jìn)行相關(guān)處理。
在VC程序中利用上述函數(shù)實(shí)時(shí)監(jiān)控?cái)?shù)組文件檔案存儲(chǔ)的指定路徑,一旦發(fā)現(xiàn)文件發(fā)生更改,使用CreateFile()函數(shù)取得對(duì)應(yīng)文件的句柄,利用句柄使用ReadFile()函數(shù)讀取文件內(nèi)容到指定字符串,并進(jìn)行相應(yīng)處理,處理完成后結(jié)果可使用WriteFile()函數(shù)再次寫入數(shù)組文件。Virtools可以在完成陣列輸出后,在規(guī)定響應(yīng)時(shí)間內(nèi)利用Array Load模塊讀取數(shù)組文件,利用數(shù)組元素完成虛擬物體的控制。利用Virtools數(shù)組輸出保存/讀取機(jī)制和VC文件監(jiān)控函數(shù)完成信息交互,流程如圖3所示。
圖3 陣列輸出機(jī)制通信流程
本文對(duì)Virtools與VC的信息交互技術(shù)進(jìn)行了深入分析,通過自定義模塊開發(fā)技術(shù),將UDP協(xié)議、串口通信技術(shù)、消息通信機(jī)制嵌入到了Virtools的Building Block模塊中,豐富BB模塊的功能,彌補(bǔ)Virtools本身通信模塊的功能缺陷。在僅需利用Virtools已有模塊的情況下,提出利用Virtools陣列進(jìn)行信息交互,使得Virtools與VC之間的通信手段更加多樣化。VC由于其突出的兼容性使其可以成為Virtools信息交互的中介,在技術(shù)上克服了Virtools與其他軟件平臺(tái)間通信的瓶頸問題,為Virtools與其他不同軟件平臺(tái)間進(jìn)行信息交互搭建了一座橋梁,拓展了其應(yīng)用范圍。
[1] 姜學(xué)智,李忠華.國內(nèi)外虛擬現(xiàn)實(shí)技術(shù)的研究現(xiàn)狀[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào),2004(4):238-241.
[2] 牛彥,張爍男.基于Virtools技術(shù)的產(chǎn)品虛擬交互式操作指導(dǎo)系統(tǒng)構(gòu)建[J].沈陽建筑大學(xué)學(xué)報(bào),2012(5):569-572.
[3] 劉明昆.三維游戲設(shè)計(jì)師寶典[M].成都:四川出版集團(tuán)四川電子音像出版中心,2005.
[4] 于修洪,項(xiàng)輝宇,牛凱.虛擬現(xiàn)實(shí)技術(shù)在機(jī)械產(chǎn)品裝配中的應(yīng)用[J].現(xiàn)代制造工程,2011(5):39-42.
[5] 汪云飛,晁愛農(nóng),黃飛.基于Virtools的UDP協(xié)議嵌入模塊技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(8):1852-1855.
[6] 滕英巖,張福艷.基于Virtools和串口通信的界面交互性的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(17):88-90.
[7] 劉航,王春水,王積忠.基于視景仿真技術(shù)的某型裝備虛擬操作訓(xùn)練系統(tǒng)[J].指揮控制與仿真,2007,29(2):79-82.
[8] 張?jiān)ツ?郭文濤,田鵬,等.VC對(duì)Virtools二次開發(fā)實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)控的研究[J].電腦編程技巧與維護(hù),2010(20):118-120.
[9] 于丹東,徐英新,胥林.三維游戲設(shè)計(jì)師寶典一Virtools行為模塊詞典大全[M].電腦報(bào)電子音像出版社,2009.
RESEARCHONINFORMATIONCOMMUNICATIONBETWEENVIRTOOLSANDVISUALC++
Zhou Jie
(NavalSubmarineAcademy,Qingdao266042,Shandong,China)
To make up for the communication defect of Virtools (i.e. one of the virtual development platform mode) and rich the means of communication between Virtools and other software platform and expand the scope of application. This paper aim at the communication mechanism for Virtools and VC and propose methods of developing UDP communication module, serial communication module, using the Virtools message mechanism and Virtools array output mechanism to complete the data exchange between the two kinds of software platform. The methods can give full play to good compatibility of the VC development platform and provide a feasible way for data exchange between Virtools and other different software.
Virtools VC Communication
2017-02-20。周杰,講師,主研領(lǐng)域:發(fā)射裝置。
TP3
A
10.3969/j.issn.1000-386x.2017.08.059