亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于NI TestStand的多語(yǔ)言混合編程技術(shù)研究

        2012-09-12 03:22:48喆,鄭
        電子測(cè)試 2012年11期
        關(guān)鍵詞:適配器調(diào)用編程

        張 喆,鄭 賓

        (中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,太原 030051)

        0 引言

        在測(cè)試數(shù)據(jù)獲取方面,通用測(cè)試系統(tǒng)平臺(tái)前端會(huì)使用多種類型傳感器,通過(guò)矩陣開(kāi)關(guān)與后級(jí)數(shù)據(jù)采集系統(tǒng)相連;在數(shù)據(jù)采集系統(tǒng)中會(huì)相應(yīng)使用多種類型的信號(hào)調(diào)理電路及數(shù)據(jù)采集板卡;同時(shí),所有的測(cè)試系統(tǒng)都需要使用多種類型的高精度分立儀器測(cè)試產(chǎn)品的性能或?yàn)闇y(cè)試對(duì)象提供電源、激勵(lì)等信號(hào);在某些測(cè)試中,會(huì)使用各種總線與被測(cè)對(duì)象或分立儀器完成通訊功能;為完善測(cè)試功能,某些測(cè)試方法需要使用嵌入式技術(shù)等等。獲得測(cè)試數(shù)據(jù)后要對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、分析、輸出等管理。

        以上所敘述的諸多應(yīng)用是無(wú)法只使用一種或兩種開(kāi)發(fā)語(yǔ)言就能完成的。例如最為廣泛使用的開(kāi)發(fā)語(yǔ)言是VC++,但在數(shù)據(jù)采集卡操作、分立儀器控制、界面美化、開(kāi)發(fā)工作強(qiáng)度等方面其性能遠(yuǎn)不如基于標(biāo)準(zhǔn)C的LabWindows/CVI,但是LabWindows/CVI無(wú)法調(diào)用使用VC++編寫(xiě)的動(dòng)態(tài)鏈接庫(kù)。又如NI公司出品的、可以由上位機(jī)直接操作的FPGA板卡只能使用LabVIEW開(kāi)發(fā)。再如C/C++、LabVIEW等傳統(tǒng)編寫(xiě)虛擬儀器所使用的語(yǔ)言,其數(shù)據(jù)處理能力都十分有限,這時(shí)如果調(diào)用MATLAB中的函數(shù)處理采集到的數(shù)據(jù)就會(huì)使得整個(gè)測(cè)試系統(tǒng)具有較廣的適用范圍。因此,在通用自動(dòng)測(cè)試系統(tǒng)平臺(tái)的開(kāi)發(fā)中,多語(yǔ)言混合編程是無(wú)法回避的問(wèn)題。

        1 傳統(tǒng)多語(yǔ)言混合編程解決方案及不足

        目前使用最廣泛的Windows操作系統(tǒng)為多語(yǔ)言混合編程提供了多種解決方案。普遍適用的有動(dòng)態(tài)鏈接庫(kù)技術(shù),COM組件技術(shù)。

        動(dòng)態(tài)鏈接庫(kù)DLL(Dynamic Link Library)是一種基于Windows的程序模塊,它提供了一種方法,使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。當(dāng)一個(gè)函數(shù)被導(dǎo)出時(shí),它被加入到動(dòng)態(tài)鏈接庫(kù)所包含的一個(gè)表中[1]。此表包含了所有導(dǎo)出函數(shù)的位置,可以用來(lái)查找和調(diào)用這些函數(shù),而調(diào)用DLL的應(yīng)用程序本身并不包含這些函數(shù)的執(zhí)行代碼[2]。

        COM組件技術(shù)不依賴特定的語(yǔ)言。COM標(biāo)準(zhǔn)采用的是二進(jìn)制代碼級(jí)的標(biāo)準(zhǔn),COM對(duì)象把OOP語(yǔ)言中的對(duì)象封裝起來(lái),并提供一致的接口,使得它可以被各種不同的語(yǔ)言所使用,COM的語(yǔ)言無(wú)關(guān)性實(shí)際上為跨語(yǔ)言合作開(kāi)發(fā)提供了統(tǒng)一標(biāo)準(zhǔn),差不多每種語(yǔ)言在實(shí)現(xiàn)時(shí)都提供了對(duì) COM的支持,如 Visual C/C++、Visual Basic、Visual C++、Delphi、C++ Builder 等都支持 COM 組件的開(kāi)發(fā)和使用[3]。

        這兩種技術(shù)雖然功能強(qiáng)大,但也都有自己的技術(shù)缺陷。DLL的主要缺點(diǎn)有:(1)若多DLL文件中函數(shù)名稱相同將引起軟件沖突;(2) 各編譯器對(duì)C++函數(shù)的名稱修飾可能不兼容;(3)DLL與可執(zhí)行文件存在依賴關(guān)系。雖然DLL技術(shù)的缺點(diǎn)就是COM組件技術(shù)的優(yōu)點(diǎn)[4],但COM組件的開(kāi)發(fā)要求測(cè)試系統(tǒng)開(kāi)發(fā)人員具有較高的計(jì)算機(jī)軟硬件運(yùn)行原理的理論基礎(chǔ),同時(shí)需要再學(xué)習(xí)新的開(kāi)發(fā)工具。因此,良好的通用自動(dòng)測(cè)試系統(tǒng)平臺(tái)中多語(yǔ)言混合編程的解決方案應(yīng)兼具DLL技術(shù)的易用性和COM組件技術(shù)的靈活性,同時(shí)要考慮是否適用于測(cè)試領(lǐng)域,要做到綜合而不龐雜。

        2 解決測(cè)試領(lǐng)域混合語(yǔ)言編程的新途徑

        通過(guò)對(duì)傳統(tǒng)多語(yǔ)言很合編程解決方案和國(guó)外先進(jìn)自動(dòng)測(cè)試系統(tǒng)的研究,可以看到一類測(cè)試系統(tǒng)管理軟件能夠很好地融合DLL技術(shù)及COM組件技術(shù),同時(shí)解決了大型測(cè)試系統(tǒng)的程序模塊化管理的問(wèn)題。這其中又以美國(guó)羅馬之星中所使用的NI TestStand應(yīng)用最為廣泛。

        2.1 NI TestStand解決混合語(yǔ)言編程的原理

        NI TestStand是NI公司發(fā)布的一款測(cè)試管理軟件。它為測(cè)試開(kāi)發(fā)和執(zhí)行提供了一個(gè)核心的框架省去了通常的測(cè)試執(zhí)行的開(kāi)發(fā)任務(wù)[5]。

        通常的測(cè)試執(zhí)行的開(kāi)發(fā)任務(wù)。強(qiáng)模塊化的TestStand架構(gòu)主要由以下組件組成:TestStand引擎、序列編輯器、操作界面和組件適配器,如圖1所示。

        圖1 NI TestStand架構(gòu)

        在TestStand架構(gòu)中,TestStand適配器模塊的功能就是連接引擎和外部測(cè)試程序開(kāi)發(fā)環(huán)境,當(dāng)調(diào)用外部代碼時(shí),TestStand使用適配器模塊測(cè)定代碼模塊的類型、調(diào)用協(xié)議、參數(shù)列表和如何傳遞參數(shù)。通過(guò)模塊適配器,TestStand與所有主流測(cè)試編程環(huán)境兼容,如LabVIEW、LabWindows/CVI、Measurement Studio組件和微軟Visual Basic和Visual C++等。它還能調(diào)用任何編譯過(guò)的動(dòng)態(tài)鏈接庫(kù)(DLLs)、ActiveX自動(dòng)化服務(wù)器和可執(zhí)行文件,甚至傳統(tǒng)開(kāi)發(fā)語(yǔ)言如HTBasic、ATLAS、HP_VEE 等[6]。

        在TestStand適配器模塊中擁有3種權(quán)限等級(jí)的變量:局部變量(Local Variable,在同一序列文件中保存、傳遞數(shù)據(jù))、全局變量(Global Variable,在同一工程下的不同序列文件間保存、傳遞數(shù)據(jù))和工作站變量(Station Global Variable,在同一工作主機(jī)下不同工程間保存、傳遞數(shù)據(jù))。它們是在不同語(yǔ)言間傳遞數(shù)據(jù)的中介。以局部變量為例,TestStand的工作方式如圖2所示。在TestStand引擎下可以掛接多個(gè)序列,每個(gè)序列由多個(gè)步驟組成,而單個(gè)序列中使用不同語(yǔ)言的不同步驟間數(shù)據(jù)交換的中介就是在序列編輯器中某一提前定義好的TestStand局部變量。

        圖2 TestStand在同一序列多語(yǔ)言不同測(cè)試步驟間傳遞數(shù)據(jù)的原理

        2.2 NI TestStand在解決混合語(yǔ)言編程的優(yōu)勢(shì)

        TestStand繼承、整合了傳統(tǒng)解決方案的特點(diǎn):(1) 適應(yīng)性強(qiáng),TestStand與各種開(kāi)發(fā)平臺(tái)能夠?qū)崿F(xiàn)無(wú)縫連接;(2) 測(cè)試系統(tǒng)軟件的可擴(kuò)展和可維護(hù)性強(qiáng),軟件架構(gòu)一旦建立,將各測(cè)試步驟的接口進(jìn)行定義,后期維護(hù)人員可以參照標(biāo)準(zhǔn)進(jìn)行擴(kuò)展或維護(hù);(3) 可實(shí)現(xiàn)快速二次開(kāi)發(fā),測(cè)試程序的架構(gòu)一旦建立,對(duì)其進(jìn)行二次開(kāi)發(fā)時(shí),只需更改相關(guān)測(cè)試步驟、生成新的動(dòng)態(tài)鏈接庫(kù)、掛接到原有程序上,無(wú)需重新編譯打包。

        在此基礎(chǔ)上,相對(duì)于傳統(tǒng)解決方案,NI TestStand在測(cè)試領(lǐng)域進(jìn)行了擴(kuò)展,它具有以下4點(diǎn)突出優(yōu)勢(shì):

        (1) TestStand很好的融合了ActiveX技術(shù)(ActiveX技術(shù)是基于COM組件技術(shù)的)和DLL技術(shù),并且它不僅入門簡(jiǎn)單、操作簡(jiǎn)易、開(kāi)放性好,這使得測(cè)試人員在需要混合編程時(shí)上手更快從而更能專注于測(cè)試本身。

        (2) TestStand這一軟件的設(shè)計(jì)思路決定了它最擅長(zhǎng)的是測(cè)試流程管理,所以在很好解決多語(yǔ)言混合編程的基礎(chǔ)上不會(huì)使得測(cè)試系統(tǒng)過(guò)于龐雜難以管理。

        (3)繼承性好,在開(kāi)發(fā)大型綜合測(cè)試系統(tǒng)時(shí),原本不屬于TestStand架構(gòu)的專項(xiàng)測(cè)試系統(tǒng)中的測(cè)試方法只需經(jīng)過(guò)簡(jiǎn)單修改即可移植到新系統(tǒng)中。

        (4) 在生產(chǎn)線上,TestStand的并行測(cè)試能力可運(yùn)行批測(cè)試(即測(cè)量一種PCB)或異步測(cè)試(即同時(shí)對(duì)一種被測(cè)器件測(cè)量不同的功能)。線程優(yōu)先功能使處理能力得到優(yōu)化,并且可同時(shí)執(zhí)行多種過(guò)程。

        3 使用NI TestStand軟件解決混合編程

        在實(shí)際應(yīng)用中,一個(gè)測(cè)試項(xiàng)目首先被分割為若干個(gè)測(cè)試步驟。然后可以采用兩種方式開(kāi)發(fā)測(cè)試代碼:一種方式是每個(gè)步驟都采用恰當(dāng)?shù)拈_(kāi)發(fā)平臺(tái)和語(yǔ)言編寫(xiě),而后生成動(dòng)態(tài)鏈接庫(kù)形式的模塊組件;除此之外,TestStand的適配器模塊可以打開(kāi)指定的應(yīng)用程序開(kāi)發(fā)環(huán)境(ADE),在其中為代碼模塊創(chuàng)建新的源代碼,然后在該開(kāi)發(fā)環(huán)境中指示新創(chuàng)建的代碼,即通過(guò)TestStand的模板按步驟生成測(cè)試所需的代碼。前一種方法是目前普遍使用的方法,適用于多人合作開(kāi)發(fā)同一測(cè)試系統(tǒng)軟件,這樣每人都可以適用自己擅長(zhǎng)的語(yǔ)言編寫(xiě)相應(yīng)步驟,然后生成各自的動(dòng)態(tài)鏈接庫(kù)掛接在主程序上編輯成一個(gè)測(cè)試序列文件,通過(guò)事先設(shè)計(jì)好的接口和全局變量完成數(shù)據(jù)交換;后一種方法適用于掌握多語(yǔ)言編程技術(shù)的人員實(shí)現(xiàn)快速開(kāi)發(fā)。無(wú)論使用哪種方式編輯測(cè)試步驟,最終進(jìn)行測(cè)試時(shí),只需運(yùn)行一個(gè)序列文件,TestStand引擎就會(huì)按流程通過(guò)每個(gè)步驟的所涉及的接口適配器調(diào)用相應(yīng)外部代碼來(lái)完成測(cè)試任務(wù)。值得一提的是,TestStand的代碼生成模板和測(cè)試步驟模板都是可編輯的,這大大增加了測(cè)試程序編寫(xiě)的靈活性。

        以某圖像式直線運(yùn)動(dòng)物體運(yùn)動(dòng)參數(shù)測(cè)試系統(tǒng)為例,其系統(tǒng)構(gòu)成如圖3所示。當(dāng)激光光幕投射到運(yùn)動(dòng)物體上時(shí),粘貼在運(yùn)動(dòng)物體上的原向反射片將返回其中一部分激光,這反映在高速相機(jī)采集到的圖像上是一個(gè)光斑。最后在計(jì)算機(jī)中使用MATLAB處理采集到的圖像從而分析出運(yùn)動(dòng)物體的運(yùn)動(dòng)參數(shù)。

        圖3 某圖像式運(yùn)動(dòng)物體運(yùn)動(dòng)參數(shù)測(cè)試系統(tǒng)構(gòu)成圖

        該測(cè)試系統(tǒng)軟件開(kāi)始運(yùn)行首先執(zhí)行硬件自檢,讀取相機(jī)和數(shù)采卡的運(yùn)行狀態(tài)。自檢通過(guò)后對(duì)相機(jī)、數(shù)采卡、軟件界面初始化并打開(kāi)MATLAB后將其最小化。此時(shí)可以在系統(tǒng)校準(zhǔn)后配置數(shù)據(jù)采集參數(shù)并采集數(shù)據(jù),也可以導(dǎo)入原始圖像進(jìn)行數(shù)據(jù)處理。當(dāng)所有操作都完成后,釋放掉所用資源并退出。原軟件主體采用LabWindows/CVI開(kāi)發(fā),數(shù)據(jù)采集部分因接口問(wèn)題需要使用VC++編寫(xiě),數(shù)據(jù)處理使用MATLAB所提供的函數(shù)。在原有架構(gòu)中,主程序通過(guò)調(diào)用VC++編譯生成的可執(zhí)行文件完成數(shù)據(jù)采集和即時(shí)回顯數(shù)據(jù),若想對(duì)數(shù)據(jù)進(jìn)行高級(jí)處理,需要先將數(shù)據(jù)存儲(chǔ)在硬盤上,然后CVI編寫(xiě)的主程序下通過(guò)ActiveX控件技術(shù)調(diào)用MATLAB中函數(shù)完成處理。

        這樣的架構(gòu)雖然能夠完成測(cè)試任務(wù),卻存在3個(gè)問(wèn)題:(1)主程序與數(shù)據(jù)采集程序完全是兩個(gè)獨(dú)立的程序,這樣一方面VC++編寫(xiě)的程序界面十分不美觀,更重要的是數(shù)據(jù)的交換十分不方便——這是編寫(xiě)軟件時(shí)比較忌諱的;(2)通過(guò)ActiveX控件技術(shù)調(diào)用MATLAB函數(shù),這種方法需要MATLAB運(yùn)行環(huán)境,這也就是開(kāi)機(jī)初始化時(shí)需要打開(kāi)MATLAB并將其最小化的原因;(3)縱觀整個(gè)程序,僅主程序就有幾千行,程序結(jié)構(gòu)不清晰,即程序易讀性差、可擴(kuò)展性差,使得該軟件的修改或二次開(kāi)發(fā)都十分困難。

        使用NI TestStand軟件即可解決以上問(wèn)題?;赥estStand的該測(cè)試系統(tǒng)架構(gòu)如圖4所示。

        圖4 基于TestStand的圖像式運(yùn)動(dòng)物體運(yùn)動(dòng)參數(shù)測(cè)試系統(tǒng)架構(gòu)

        主程序使用LabWindows/CVI編寫(xiě),數(shù)據(jù)采集程序使用VC++編寫(xiě)。具體步驟為:首先考察整理出整個(gè)測(cè)試系統(tǒng)中作為不同函數(shù)間數(shù)據(jù)交換的變量,并在TestStand下創(chuàng)建相應(yīng)的局部變量或全局變量。然后將已有的函數(shù)按功能分割成多個(gè)分立程序,確保這些程序能夠獨(dú)立完成某一功能,如相機(jī)配置、相機(jī)初始化等,再將能夠?qū)崿F(xiàn)功能的主要函數(shù)導(dǎo)出到動(dòng)態(tài)鏈接庫(kù)中。最后將各個(gè)分立的測(cè)試 步驟掛接到一個(gè)序列里,并將各函數(shù)接口中的變量與之前在TestStand中創(chuàng)建的變量對(duì)應(yīng)起來(lái)。

        主程序調(diào)用MATLAB函數(shù)的方法不再調(diào)用可執(zhí)行文件,變更為L(zhǎng)abWindows/CVI通過(guò)TestStand的C/C++接口適配器調(diào)用在MATLAB環(huán)境下生成的COM組件。具體方法為:使用MATLAB的Deployment Tool構(gòu)建Generic COM Component類型的工程,然后在該工程中添加新類(Class),再將含有圖像處理算法的M文件加入該類中,隨后在MATLAB命令框中輸入面mbuild_-setup,根據(jù)提示選擇VC編譯器,注意該命令中間“_”為空格,最后在Deployment Tool的Action中選擇Add MCR后生成多個(gè)文件,其中DLL文件可由TestStand調(diào)用,可執(zhí)行文件用于在未安裝MATLAB的環(huán)境中注冊(cè)該COM組件。該方法不需要MATLAB運(yùn)行環(huán)境,降低了資源開(kāi)銷,增加了程序的靈活性[7]。

        經(jīng)過(guò)上述操作后將多個(gè)分立的程序組裝成一個(gè)大系統(tǒng)。在用戶界面和一般測(cè)試步驟的編輯方面發(fā)揮LabWindows/CVI界面美觀、編輯簡(jiǎn)易等優(yōu)勢(shì),在數(shù)據(jù)的采集、處理方面使用VC++輔助開(kāi)發(fā),運(yùn)用NI TestStand來(lái)傳遞變量、指針使得各語(yǔ)言所開(kāi)發(fā)的功能無(wú)縫連接起來(lái),數(shù)據(jù)處理方面發(fā)揮MATLAB在計(jì)算、分析上的優(yōu)勢(shì)。從整體來(lái)看,各個(gè)步驟采用分部開(kāi)發(fā)、統(tǒng)一掛接的方式,結(jié)構(gòu)清晰、定位迅速。在局部修改或者二次開(kāi)發(fā)時(shí),只需要修改相應(yīng)部分,重新生成動(dòng)態(tài)鏈接庫(kù)、掛接到主程序上。事實(shí)上,由于各個(gè)部分彼此獨(dú)立,只需做少許修改即可移植到類似的測(cè)試系統(tǒng)中,避免直接復(fù)制修改代碼所導(dǎo)致的代碼風(fēng)格混亂、函數(shù)或參數(shù)沖突。

        4 總結(jié)

        以上所舉實(shí)例例雖稱不上“通用”的“平臺(tái)”,卻已經(jīng)可以說(shuō)明使用NI TestStand架構(gòu)在解決測(cè)試領(lǐng)域多語(yǔ)言混合編程問(wèn)題中的的優(yōu)越性,管中窺豹,可見(jiàn)一斑。因此,在通用自動(dòng)測(cè)試系統(tǒng)平臺(tái)中應(yīng)用NI TestStand是可行的,先進(jìn)的和有意義的!從另一方面講,使用TestStand能夠在測(cè)試領(lǐng)域解決混合編程問(wèn)題的同時(shí)兼顧改進(jìn)測(cè)試系統(tǒng)整體軟件架構(gòu)。

        目前,測(cè)試系統(tǒng)無(wú)論硬件還是軟件,其發(fā)展趨勢(shì)都是綜合化、模塊化。即盡可能在一個(gè)測(cè)試系統(tǒng)中包含更多的測(cè)試項(xiàng)目,并且每個(gè)測(cè)試系統(tǒng)都細(xì)化為多種模塊,通過(guò)模塊間的組合實(shí)現(xiàn)不同的功能,在功能需要調(diào)整時(shí)能夠快速完成配置,穩(wěn)定高效的完成測(cè)試任務(wù)。與此同時(shí)要降低開(kāi)發(fā)總體成本,縮短開(kāi)發(fā)、升級(jí)時(shí)間[8]。從這幾點(diǎn)需求來(lái)看,測(cè)試管理軟件的出現(xiàn)順應(yīng)了時(shí)代潮流,有必要引入國(guó)內(nèi),應(yīng)用于通用自動(dòng)測(cè)試系統(tǒng)中。

        這種解決方案不足的是測(cè)試管理軟件價(jià)格都比較昂貴并且成熟的產(chǎn)品均非我國(guó)自主研發(fā)。因此,希望有能力的科研單位早日研發(fā)出屬于我國(guó)自主知識(shí)產(chǎn)權(quán)的測(cè)試管理軟件,使我國(guó)國(guó)防事業(yè)邁上一個(gè)新的臺(tái)階!

        [1]耿娟.DLL在LabWindows/CVI的虛擬儀器中的應(yīng)用[J].微計(jì)算機(jī)及信息,2006,22(22):115-116.

        [2]郭雅萌.LabWindows/CVI與PCI數(shù)據(jù)采集卡通信技術(shù)研究[J].電子測(cè)量技術(shù),2007,30(5):78-79.

        [3]郭雅萌.基于COM組件的通用故障診斷專家系統(tǒng)開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2006,22(2):190-191.

        [4]劉曉剛.COM技術(shù)在畢業(yè)設(shè)計(jì)中的應(yīng)用[J].武漢科技學(xué)院學(xué)報(bào),2005,18(11):118-119.

        [5]王學(xué)奇.開(kāi)放性測(cè)試軟件體系結(jié)構(gòu)研究[J].微計(jì)算機(jī)信息,2005,21(10):145-146.

        [6]謝立鵬.應(yīng)答器測(cè)試關(guān)鍵技術(shù)與測(cè)試管理系統(tǒng)的研究[D].北京:北京交通大學(xué),2008.

        [7]宋廣東.基于COM組件的VB與MATLAB混合編程實(shí)現(xiàn)振動(dòng)信號(hào)處理[J].山東科學(xué),2010,23(1):33-34.

        [8]王石記.新一代綜合自動(dòng)測(cè)試標(biāo)準(zhǔn)體系研究[J].計(jì)算機(jī)測(cè)量與控制,2011,19(4):33-34:749-775.

        猜你喜歡
        適配器調(diào)用編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        適配器模式及其應(yīng)用
        新型水文測(cè)驗(yàn)GPS適配器設(shè)計(jì)與應(yīng)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
        国产精品二区一区二区aⅴ污介绍| 久久久国产精品无码免费专区| 国产综合色在线精品| 国产性生交xxxxx免费| 人妻丰满av无码中文字幕| 日本女同伦理片在线观看| 女同视频网站一区二区| 蜜桃a人妻精品一区二区三区| 尤物在线精品视频| 成人精品一区二区三区中文字幕| 五月天婷婷综合网| 热热久久超碰精品中文字幕| 成人一区二区人妻少妇| s级爆乳玩具酱国产vip皮裤| 欧美另类在线视频| 国产精品自产拍在线观看中文| 一区二区国产视频在线| 欧洲美女黑人粗性暴交视频| 熟女少妇精品一区二区| 天天做天天爱天天综合网| 国产对白刺激在线观看| 在线日本国产成人免费精品| 亚洲免费观看视频| 亚洲国产美女精品久久久| 国产99页| 国产黄色一区二区三区,| 中文字幕在线日亚州9 | 97无码人妻Va一区二区三区| 亚洲传媒av一区二区三区| 免费亚洲一区二区三区av| 久久亚洲国产成人精品性色| 亚洲国产精品国语在线| 日韩人妻一区二区中文字幕| 亚洲欧洲成人精品香蕉网| 久久久久国色av∨免费看| 亚洲一区二区国产精品视频| 丰满人妻被持续侵犯中出在线| 内射干少妇亚洲69xxx| 免费男人下部进女人下部视频 | 极品新娘高清在线观看| 国产精品无码一区二区三级|