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

Virtools與VisualC++信息交互技術研究

2017-08-12 12:22:06
計算機應用與軟件 2017年8期
關鍵詞:機制利用信息

周 杰

(海軍潛艇學院 山東 青島 266042)

?

Virtools與VisualC++信息交互技術研究

周 杰

(海軍潛艇學院 山東 青島 266042)

為彌補虛擬開發(fā)平臺Virtools通信模式的缺陷,豐富Virtools與其他軟件平臺的通信手段,拓展應用范圍,針對Virtools與VC的通信機制,提出通過開發(fā)UDP通信模塊、串口通信模塊以及利用Virtools消息機制和Virtools陣列輸出機制完成兩種軟件平臺之間數(shù)據(jù)交互的方法。充分發(fā)揮VC開發(fā)平臺良好的兼容性,為Virtools與其他不同軟件平臺間進行信息交互提供可行途徑。

Virtools VC 通信

0 引 言

虛擬現(xiàn)實技術(VR),通過綜合利用圖片、視頻、三維動畫和聲音等多媒體素材,營造出具有沉浸性、交互性、構(gòu)想性的軟件操作環(huán)境[1]。虛擬現(xiàn)實技術通過構(gòu)建三維模型,營造多種視角,提供具有沉浸性和交互性的操作環(huán)境,操作者可以親身漫游虛擬世界,多角度觀察操作方法,身臨其境參與交互,給操作者強烈的臨場感和逼真感。這種深層的自然的人機交互,使操作人員改變以往被動的知識接受模式,變?yōu)橹鲃犹骄?,積極尋求新知識,形成潛在技能,可以為實際操作技能的最終形成奠定基礎。將虛擬現(xiàn)實技術融合到模擬訓練系統(tǒng)中,如運輸工具駕駛、武器裝備操作等訓練平臺,可以有效解決傳統(tǒng)模擬操作中臨場感弱、操作訓練不充分、難以形成有效技能的問題。通過逼真的操作平臺、工具模型和高度還原的操作過程,調(diào)動操作者的主動性,提升知識技能構(gòu)建的效率。在保證設備和人員安全的前提下,實踐所學知識,加速知識到技能的轉(zhuǎn)換過程。

虛擬現(xiàn)實技術已經(jīng)廣泛應用于設計測試、模擬訓練、游戲娛樂和教學科研等多個領域。隨著VR頭戴設備、應力反饋設備等各種終端設備的大量使用,VR技術的應用廣度和深度逐年提升,涌現(xiàn)出許多成熟的開發(fā)平臺,如Quest3D、Virtools和Unity3D等。其中Virtools是法國達索公司開發(fā)的三維虛擬軟件開發(fā)平臺,將自身功能模塊與其他三維軟件開發(fā)的模型或場景相結(jié)合,通過編程規(guī)劃其邏輯行為和物理屬性,開發(fā)貼近現(xiàn)實的虛擬交互環(huán)境[2]。Virtools功能、模塊完善,適用于游戲和動畫的開發(fā)制作,也是出現(xiàn)最早、使用最為廣泛的虛擬現(xiàn)實游戲開發(fā)工具。Virtools突出的便捷性和開放性,使其成為許多虛擬現(xiàn)實開發(fā)技術初學者的首選。利用行為模塊實現(xiàn)圖形化的開發(fā)介面,通過視覺化窗口實現(xiàn)圖形化編程,這些特點都使Virtools的學習門檻降低,易于理解,便于掌握。但對于需要使用多種軟件平臺聯(lián)合開發(fā)的復雜系統(tǒng),使用Virtools與其他軟件平臺進行通信時卻存在一定的技術缺陷,信息交互技術的短板限制了Virtools的應用,特別對于使用最為廣泛的Visual C++開發(fā)平臺,僅利用Virtools自帶的行為模塊很難實現(xiàn)二者之間的信息交互。針對這一技術缺陷,本文提出了行之有效的技術方案,解決Virtools虛擬軟件和Visual C++軟件開發(fā)平臺之間信息交互困難的難題。

1 Virtools通信機制局限性分析

Vtrtools通過模塊開發(fā)機制實現(xiàn)行為開發(fā)與互動操作,各類功能模塊稱作BuildingBlock,將不同功能的BuildingBlock遵循預設的邏輯關系組合起來實現(xiàn)預定的功能[3]。

網(wǎng)絡服務器模塊包含大量Building Block(BB模塊)實現(xiàn)Virtools的網(wǎng)絡通信功能。這些Building Block遵循TCP/IP協(xié)議,按照典型的CS結(jié)構(gòu),完成網(wǎng)絡通信。但必須在VirtoolsDev軟件平臺下調(diào)用這些功能模塊才能構(gòu)建通信網(wǎng)絡。即所有網(wǎng)絡通信節(jié)點都要用Virtools來開發(fā),才能使用網(wǎng)絡通信BuildingBlock構(gòu)建通信體系[4]。在復雜系統(tǒng)的開發(fā)過程中,Virtools經(jīng)常需要響應其他軟件開發(fā)平臺的信息,例如VC編寫的程序向Virtools發(fā)送消息,Virtools接受消息并控制模型產(chǎn)生相應動作。Virtools自帶的模塊庫中沒有此類功能模塊,當需要Virtools軟件平臺和其他軟件平臺之間進行通信,交換數(shù)據(jù),這時Virtools通信的局限性就凸顯出來,內(nèi)置網(wǎng)絡模塊無法與其他軟件平臺進行信息通信。這種缺陷限制了Virools平臺與其他不同軟件平臺之間的信息交互,不利于大型三維虛擬軟件的開發(fā)。

Visual C++(VC)軟件開發(fā)平臺基礎語言較為普及,代碼執(zhí)行效率高,使用微軟編譯器,得到Windows系列操作系統(tǒng)的良好支持,開發(fā)的程序健壯、穩(wěn)定。一般大型程序的核心組件都使用VC開發(fā),以滿足核心程序運行高效穩(wěn)定的要求。VC具有完善的幫助文檔,大量的優(yōu)質(zhì)教材和海量的網(wǎng)絡資源,為開發(fā)者帶來了極大的便利條件。而且VC開發(fā)平臺具有多種控件及函數(shù)接口,可以利用多種方法實現(xiàn)與不同軟件之間的信息通信。研究Virtools與VC之間的信息交互技術,以VC平臺為樞紐,充分利用VC平臺豐富的編程資源、良好的兼容性和擴展性,實現(xiàn)Virtools與其他軟件的信息交互,彌補其信息交互技術的短板,擴展Virtools的通信手段,拓展應用范圍。

2 用戶數(shù)據(jù)報協(xié)議通信模塊的開發(fā)

用戶數(shù)據(jù)報協(xié)議(UDP協(xié)議),與TCP協(xié)議相比沒有擁塞控制機制,便于維持最低數(shù)據(jù)率,消除數(shù)據(jù)傳輸時延[5],在實時控制程序中應該利用UDP協(xié)議速度優(yōu)勢建立通信機制,用戶數(shù)據(jù)報協(xié)議通過套接字(Socket)傳輸數(shù)據(jù),將該協(xié)議嵌入到Building Block中,再利用VC的套接字技術可實現(xiàn)VC與Virtools平臺的通信。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個數(shù)為一,使用這個Plugin執(zhí)行Building Block,Building Block Plug要執(zhí)行的Building Block用函數(shù)RegisterBehaviorDcclaration()注冊。

(2) 利用CreateCKObjectDeclaration()聲明函數(shù)創(chuàng)建CKObjectDeelaration類型的指針,指向創(chuàng)建的Building Block信息函數(shù),描述Building Block的基本信息,如版本號,作者,功能。

(3) 用創(chuàng)建函數(shù)CreateCKBehaviorPrototype()創(chuàng)建網(wǎng)絡通信相關的模塊輸入端口,定義端口號、網(wǎng)絡地址等。從指定輸入端口上獲取并保存網(wǎng)絡信息和網(wǎng)絡數(shù)據(jù)結(jié)果。

(4) 將使用套接字相關的頭文件和庫文件添加到Building Block中,首先激活模塊的輸入端口,再將網(wǎng)絡應用程序移植到BuildingBlock的執(zhí)行函數(shù)中。讀取輸入?yún)?shù)可利用函數(shù)GetlnputParameterValue()數(shù)據(jù)結(jié)果可通過SetOutputParameterValue()保存到參數(shù)輸出端口。

(5) 使用系統(tǒng)默認同調(diào)函數(shù)完成對Building Block的創(chuàng)建,生成DLL文件。

(6) 編譯成功后,從生成的文件目錄下將DLL文件拷貝到Virtools軟件安裝目錄下的BuildingBlock文件夾中,重新啟動Virtools調(diào)用執(zhí)行。

用戶數(shù)據(jù)報協(xié)議通信模塊發(fā)出的信息在VC中可利用套接字(Socket)進行處理,完成信息交換。

首先調(diào)用WSAStartup()初始化Windows Sockets DLL 。WinSock的動態(tài)連接庫初始化成功后,在服務器端使用函數(shù)socket( int af, int type, int protocol )建立監(jiān)聽Socket,type參數(shù)設定為SOCK_DGRAM,以使用UDP(數(shù)據(jù)報)通信協(xié)議。接下來調(diào)用bind()函數(shù)為Socket指定地址和端口(Port)。服務器端完成Socket對象綁定之后,使用listen()函數(shù)建立監(jiān)聽隊列,進入監(jiān)聽狀態(tài)準備接收客戶端連接請求,并設定最大連接數(shù)。當需要真正完成通信連接時,客戶端需調(diào)用connect()發(fā)出請求,系統(tǒng)使用WSAAsyncSelect()函數(shù)發(fā)出通知,服務器端調(diào)用accept()響應請求,完成通信連接。建立連接后,客戶端的Virtools程序就可以借由用戶數(shù)據(jù)報BB模塊發(fā)出自定義消息,而VC開發(fā)的服務器端通過分析消息,調(diào)用相關函數(shù)進行處理。結(jié)束通信連接由服務器或客戶端的任一端調(diào)用closesocket()套接字,并調(diào)用 WSACleanup()通知套接字動態(tài)鏈接庫釋放占用的資源。

3 串口通信模塊的開發(fā)

串口通信是利用數(shù)據(jù)信號線連接外設和計算機,完成按位數(shù)據(jù)傳輸?shù)囊环N通信方法[6]。串口通信雙方連接采用端對端的方式,連接方式單一,硬件要求低,不容易出現(xiàn)相互干擾,查錯糾錯難度低,容易實現(xiàn)。但其存在接口插拔風險,要避免兩端通電狀態(tài)下的拔插,安全性低于網(wǎng)口。串口通信傳輸速度較慢,對于操作對象較多,交互數(shù)據(jù)量較大的虛擬操作軟件,傳輸數(shù)據(jù)量很難達到實時通信的要求,串口通信僅能應對虛擬環(huán)境較為簡單,操作對象單一的虛擬操作軟件。而且應用程序?qū)Υ诰哂歇氄夹裕坏┠硞€程序占據(jù)串口,其他的程序則無法使用該串口。單一程序由于串行通信的特點也無法使用多線程進行串口通信否則會發(fā)生多個命令之間的干擾導致通信失敗。

開發(fā)串口通信模塊需要利用Virtools SDK開發(fā)構(gòu)架,通過調(diào)用Win 32 API完成,靠指針依次調(diào)用執(zhí)行注冊函數(shù)、聲明函數(shù)、創(chuàng)建函數(shù)、執(zhí)行函數(shù)和回調(diào)函數(shù),完成對模塊的開發(fā)(具體開發(fā)步驟可參考用戶數(shù)據(jù)報協(xié)議通信模塊開發(fā))。在回調(diào)函數(shù)中調(diào)用Win32 API文件操作函數(shù)實現(xiàn)串口打開/關閉。CreateFile()函數(shù)實現(xiàn)串口打開,WriteFile()函數(shù)實現(xiàn)數(shù)據(jù)發(fā)送,ReadFile()函數(shù)則用來實現(xiàn)接受數(shù)據(jù)[6]。程序運行過程中,首先利用執(zhí)行函數(shù)完成Building Block激活,接著參數(shù)初始化,然后與通信端利用握手機制建立連接,從計算機串口讀取并處理數(shù)據(jù),數(shù)據(jù)結(jié)果可供其他模塊調(diào)用。串口通信模塊的循環(huán)調(diào)用可通過Virtools幀循環(huán)方式實現(xiàn)。

VC可利用多種方式接受Virtools通過串口發(fā)出的數(shù)據(jù),如串行通信控件MSComm或利用串口通信類。串行通信控件主要應用于基于對話框開發(fā)的程序,通過事件驅(qū)動處理串行端口信息交互,發(fā)生數(shù)據(jù)交換或通信錯誤時,OnComm事件觸發(fā),捕捉CommEvent屬性值,應用程序根據(jù)屬性值做出相應的信息處理。

其次可開發(fā)自定義的串口通信類,在單線程或多線程中實現(xiàn)串口通信。利用CreateFile()函數(shù)指定通信串口及相關屬性。通過調(diào)用GetCommState()函數(shù)讀取當前串口設置,通過SetCommState()函數(shù)寫入修改后的屬性。調(diào)用SetCommTimeouts()函數(shù)通過COMMTIMEOUTS結(jié)構(gòu)設置異步讀寫的超時控制。串口讀寫操作主要運用ReadFile()與WriteFile()API函數(shù)。

4 利用Virtools消息機制通信

消息是對象之間在一次交互中所傳送的信息。為保持封裝對象成為各司其職,互不干擾的高內(nèi)聚獨立單位,消息通信成為對象之間唯一合法的動態(tài)聯(lián)系途徑,使不同功能單元的行為互相配合,構(gòu)成一個動態(tài)、有序的系統(tǒng)[7]。當系統(tǒng)發(fā)生某個事件時,操作系統(tǒng)將與這個事件關聯(lián)的消息放置到消息隊列,應用程序從消息隊列中接收消息并傳遞給適當?shù)拇翱冢翱陧憫⑻幚硐?。所有的開發(fā)環(huán)境都有消息機制,因此借由消息機制,可以實現(xiàn)不同平臺之間的應用程序調(diào)用請求。消息機制可用于緩解甚至消除系統(tǒng)瓶頸,消息處理可并行展開,緩解點對點同步連接造成系統(tǒng)瓶頸,甚至可以消除瓶頸。通過多個消息接收者并發(fā)處理不同消息,還可以提高系統(tǒng)的整體可伸縮性和吞吐量。消息機制的這些特點都使它非常適用于完成虛擬平臺和VC軟件平臺之間的實時大數(shù)據(jù)量信息交互。

利用消息機制進行通信,首先需要Virtools留出通信接口,以方便VC讀取相關信息。Virtools消息通信模塊的開發(fā)基本步驟與串口通信模塊、UDP通信模塊類似,完成指定消息的發(fā)送需在執(zhí)行函數(shù)中調(diào)用函數(shù):

CKMessageManage:SendMessageSingle(CKMessageType MsgType,CKBeobjectdest,CKBeObjecl*sender=NUll)

VC可利用鉤子機制獲取Virtools發(fā)送的特定消息。應用程序使用鉤子機制能夠完成特定事件的截獲和處理。應用程序可以在鉤子(Hook)這個消息處理平臺上面設置子程序,以監(jiān)測其他進程所創(chuàng)建的特定窗口的指定消息。指定消息存儲在鉤子鏈表中,即與信息相關聯(lián)的指針列表,該鏈表中的指針為各個類型的消息指定處理子程。這些處理子程叫做鉤子子程,鉤子子程可由應用程序自定義,它是應用程序的回調(diào)函數(shù),可通過API函數(shù)SetWindowsHookEx()將其安裝到鉤子鏈表中。

VC利用鉤子機制截獲并處理Virtools發(fā)出的消息后,可以通過發(fā)送指定的虛擬鍵盤消息將消息處理結(jié)果反饋Virtools完成通信。Virtools自帶行為交互模塊Keyboard Controller、Keyboard Mapper支持將按鍵操作映射為系統(tǒng)消息或自定義消息。響應鍵盤消息可保證信息傳遞的多樣性。VC可以實現(xiàn)在不激活應用程序的情況下向其窗口發(fā)送模擬按鍵消息。首先使用FindWindow() 及 FindWindowEx()函數(shù)取得接收按鍵消息的窗口句柄,然后用PostMessage()向該窗口發(fā)送按鍵消息。運用這種方法可以依據(jù)VC發(fā)送的信息對虛擬物體或角色進行靈活多變的控制,流程圖如圖2所示,利用消息機制實現(xiàn)VC與Virtools的通信。

圖2 消息機制通信流程

5 利用Virtools陣列輸出機制通信

Virtools中的陣列用于建立數(shù)據(jù)、時間變量控制等,它由Column(列)和Row(行)組成[9]。Virtools的陣列可以存儲三維對象和攝像機的三維位置、矢量位移、旋轉(zhuǎn)方式、旋轉(zhuǎn)角度和動作時機等動作因素。Virtools提供了大量陣列操作BB,可以直接讀取三維物體的相關參數(shù)存儲到陣列或者根據(jù)陣列內(nèi)存儲的參數(shù)驅(qū)動三維物體動作。在Virtools程序運行時,通過Test和2D Picking行為交互模塊判斷此時被用戶操作的虛擬物體,并將虛擬物體的參數(shù)變化通過SetCell行為交互模塊對陣列的每一個元素及相應參數(shù)進行設置。然后利用Array Save行為交互模塊將數(shù)組數(shù)據(jù)儲存成指定路徑下的文件檔案[9]。一旦VC軟件讀取這些文件檔案就可以提取Virtools虛擬軟件操作的結(jié)果,并根據(jù)結(jié)果做出反饋,完成信息交互。

完成存儲后利用Windows API實現(xiàn)對指定目錄中文件的監(jiān)控,一旦發(fā)現(xiàn)文件改變,則立即進行處理,獲取數(shù)據(jù)。可使用的API函數(shù)有:FindFirstChangeNotification()和ReadDirectory ChangesW()。兩個函數(shù)都能夠監(jiān)測文件最終寫入時間和文件大小的改變,從而實時監(jiān)測陣列輸出指定文件,快速提取Virtools通過陣列機制輸出的信息。

當監(jiān)控條件滿足時,F(xiàn)indFirstChangeNotification()函數(shù)返回的監(jiān)控句柄結(jié)束在WaitForMultipleObjects() 上的等待狀態(tài),變?yōu)榧ぐl(fā)狀態(tài),這時應用程序得知目錄發(fā)生了變化并立即進行數(shù)據(jù)處理,數(shù)據(jù)處理結(jié)束后調(diào)用BOOL FindNextChangeNotification()來將該監(jiān)控句柄置為去激活狀態(tài),并繼續(xù)等待下一次被激活。完成文件監(jiān)控時調(diào)用FindCloseChangeNotification()關閉監(jiān)控句柄。

ReadDirectoryChangesW()函數(shù)使用CreateFile()獲取要監(jiān)控目錄的句柄;然后循環(huán)調(diào)用ReadDirectoryChangesW()判斷文件是否改變,并分配內(nèi)存用來存放目錄變化通知并傳給該函數(shù)。當監(jiān)控條件滿足文件發(fā)生改變,函數(shù)把目錄變化通知存放在指定的內(nèi)存區(qū)域內(nèi),并進行相關處理。

在VC程序中利用上述函數(shù)實時監(jiān)控數(shù)組文件檔案存儲的指定路徑,一旦發(fā)現(xiàn)文件發(fā)生更改,使用CreateFile()函數(shù)取得對應文件的句柄,利用句柄使用ReadFile()函數(shù)讀取文件內(nèi)容到指定字符串,并進行相應處理,處理完成后結(jié)果可使用WriteFile()函數(shù)再次寫入數(shù)組文件。Virtools可以在完成陣列輸出后,在規(guī)定響應時間內(nèi)利用Array Load模塊讀取數(shù)組文件,利用數(shù)組元素完成虛擬物體的控制。利用Virtools數(shù)組輸出保存/讀取機制和VC文件監(jiān)控函數(shù)完成信息交互,流程如圖3所示。

圖3 陣列輸出機制通信流程

6 結(jié) 語

本文對Virtools與VC的信息交互技術進行了深入分析,通過自定義模塊開發(fā)技術,將UDP協(xié)議、串口通信技術、消息通信機制嵌入到了Virtools的Building Block模塊中,豐富BB模塊的功能,彌補Virtools本身通信模塊的功能缺陷。在僅需利用Virtools已有模塊的情況下,提出利用Virtools陣列進行信息交互,使得Virtools與VC之間的通信手段更加多樣化。VC由于其突出的兼容性使其可以成為Virtools信息交互的中介,在技術上克服了Virtools與其他軟件平臺間通信的瓶頸問題,為Virtools與其他不同軟件平臺間進行信息交互搭建了一座橋梁,拓展了其應用范圍。

[1] 姜學智,李忠華.國內(nèi)外虛擬現(xiàn)實技術的研究現(xiàn)狀[J].遼寧工程技術大學學報,2004(4):238-241.

[2] 牛彥,張爍男.基于Virtools技術的產(chǎn)品虛擬交互式操作指導系統(tǒng)構(gòu)建[J].沈陽建筑大學學報,2012(5):569-572.

[3] 劉明昆.三維游戲設計師寶典[M].成都:四川出版集團四川電子音像出版中心,2005.

[4] 于修洪,項輝宇,牛凱.虛擬現(xiàn)實技術在機械產(chǎn)品裝配中的應用[J].現(xiàn)代制造工程,2011(5):39-42.

[5] 汪云飛,晁愛農(nóng),黃飛.基于Virtools的UDP協(xié)議嵌入模塊技術研究[J].計算機工程與設計,2010,31(8):1852-1855.

[6] 滕英巖,張福艷.基于Virtools和串口通信的界面交互性的設計與實現(xiàn)[J].微計算機信息,2010,26(17):88-90.

[7] 劉航,王春水,王積忠.基于視景仿真技術的某型裝備虛擬操作訓練系統(tǒng)[J].指揮控制與仿真,2007,29(2):79-82.

[8] 張豫南,郭文濤,田鵬,等.VC對Virtools二次開發(fā)實現(xiàn)網(wǎng)絡監(jiān)控的研究[J].電腦編程技巧與維護,2010(20):118-120.

[9] 于丹東,徐英新,胥林.三維游戲設計師寶典一Virtools行為模塊詞典大全[M].電腦報電子音像出版社,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。周杰,講師,主研領域:發(fā)射裝置。

TP3

A

10.3969/j.issn.1000-386x.2017.08.059

猜你喜歡
機制利用信息
利用min{a,b}的積分表示解決一類絕對值不等式
利用一半進行移多補少
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
利用數(shù)的分解來思考
Roommate is necessary when far away from home
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
破除舊機制要分步推進
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
注重機制的相互配合
打基礎 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 香港一级毛片免费看| 久久黄色影院| 免费午夜无码18禁无码影院| 国产在线小视频| 国产成人精品18| 日韩无码黄色| 曰韩人妻一区二区三区| 亚洲欧美不卡视频| 欧美有码在线观看| 久久久久中文字幕精品视频| 国产日韩精品一区在线不卡 | 成人在线观看一区| 在线观看国产精品第一区免费| 婷婷伊人五月| 精品人妻AV区| 亚洲男人的天堂在线| 国产导航在线| 97精品伊人久久大香线蕉| 国产本道久久一区二区三区| 国产第四页| 日韩中文精品亚洲第三区| 国产精品播放| 91无码人妻精品一区二区蜜桃| 福利在线免费视频| 欧美a√在线| 国产午夜不卡| 亚洲第一中文字幕| 色吊丝av中文字幕| 嫩草影院在线观看精品视频| 亚洲成a人片| 亚洲中文字幕在线一区播放| 国产91精品调教在线播放| 国产九九精品视频| 99精品国产电影| 就去吻亚洲精品国产欧美| 人人爽人人爽人人片| 成人午夜在线播放| 国产经典免费播放视频| 国产网友愉拍精品| 国产成人精品视频一区二区电影| jizz亚洲高清在线观看| 久久精品人人做人人爽电影蜜月 | 女人18一级毛片免费观看| 99久久99这里只有免费的精品| 老司机精品久久| 免费无码AV片在线观看国产| 国产欧美日韩在线一区| 国产99精品久久| 亚洲人成影院在线观看| 免费毛片在线| 色窝窝免费一区二区三区| 成人一级免费视频| 久久一色本道亚洲| 欧美啪啪网| 婷婷中文在线| 青青国产视频| 久久久久久久97| 中日韩欧亚无码视频| 国产人成在线视频| 国产高清国内精品福利| jizz在线免费播放| 欧美高清三区| 制服丝袜亚洲| 国产精品成人一区二区| 黄色a一级视频| 污网站免费在线观看| 日韩A∨精品日韩精品无码| 国产簧片免费在线播放| 香蕉eeww99国产在线观看| 欧美国产日产一区二区| 久久久91人妻无码精品蜜桃HD| 午夜无码一区二区三区| 亚亚洲乱码一二三四区| 国产97公开成人免费视频| 91欧美亚洲国产五月天| 国产成人h在线观看网站站| 人妻精品久久无码区| 一区二区三区四区日韩| 国产乱人伦偷精品视频AAA| 精品夜恋影院亚洲欧洲| 人妻无码一区二区视频| 欧美综合区自拍亚洲综合天堂|