• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于SWIG的Python儀器驅(qū)動(dòng)封裝技術(shù)

    2018-07-05 05:56:08馬宇葉衛(wèi)東
    計(jì)測(cè)技術(shù) 2018年2期
    關(guān)鍵詞:測(cè)試軟件自動(dòng)測(cè)試跨平臺(tái)

    馬宇,葉衛(wèi)東

    (北京航空航天大學(xué),北京 100191)

    0 引言

    虛擬儀器是自動(dòng)測(cè)試系統(tǒng)的基礎(chǔ),測(cè)試軟件是虛擬儀器的核心。目前虛擬儀器和測(cè)試軟件常見(jiàn)的開(kāi)發(fā)平臺(tái)包括:NI公司的LabVIEW,LabWindows / CVI,C#,C++和Java等。LabVIEW和LabWindows具有豐富的圖形化測(cè)試控件庫(kù);C#便于開(kāi)發(fā)Windows圖形界面程序;C,C++和Java是目前使用最廣的編程語(yǔ)言。

    在實(shí)際的產(chǎn)品測(cè)試開(kāi)發(fā)中,這些平臺(tái)或編程語(yǔ)言也存在一些局限。比如,LabVIEW圖形化語(yǔ)言不便于代碼管理和維護(hù),LabWindows / CVI使用面向過(guò)程的C語(yǔ)言,模塊化開(kāi)發(fā)需要大量的編程技巧,開(kāi)發(fā)效率較低,手工管理內(nèi)存容易導(dǎo)致軟件缺陷(如緩沖區(qū)溢出)。設(shè)計(jì)功能較復(fù)雜的測(cè)試軟件時(shí),靜態(tài)語(yǔ)言在不重新編譯的情況下難以對(duì)軟件的功能進(jìn)行動(dòng)態(tài)配置。

    Python是面向?qū)ο蟮母呒?jí)編程語(yǔ)言,動(dòng)態(tài)類(lèi)型、自動(dòng)內(nèi)存管理、解釋執(zhí)行、原生跨平臺(tái),可拓展性極強(qiáng),具有豐富的開(kāi)源庫(kù),能快速實(shí)現(xiàn)應(yīng)用程序所需的各種功能[1]。Python在儀器編程方面已有少量應(yīng)用[2],主要障礙是大量?jī)x器沒(méi)有提供Python的編程接口。SWIG(Simple Wrapper and Interface Generator)是跨語(yǔ)言接口轉(zhuǎn)換工具,支持Python/Perl/ PHP等動(dòng)態(tài)腳本語(yǔ)言與C,C++,C#,Java等靜態(tài)編譯型語(yǔ)言之間的接口轉(zhuǎn)換[3],Python中的很多拓展庫(kù)實(shí)際上來(lái)自SWIG對(duì)C庫(kù)的封裝。

    本文采用Python設(shè)計(jì)和開(kāi)發(fā)自動(dòng)測(cè)試軟件,提出將SWIG用于儀器驅(qū)動(dòng)的跨語(yǔ)言、跨平臺(tái)封裝,彌補(bǔ)Python在儀器編程方面的短板,希望能夠促進(jìn)Python在虛擬儀器和自動(dòng)測(cè)試領(lǐng)域的推廣和應(yīng)用。

    1 系統(tǒng)組成

    1.1 硬件結(jié)構(gòu)

    整個(gè)測(cè)試系統(tǒng)由測(cè)試計(jì)算機(jī)、測(cè)試服務(wù)器和控制主機(jī)組成,通過(guò)交換機(jī)組網(wǎng),如圖1所示。測(cè)試計(jì)算機(jī)采用RS-232,GPIB或PXI等測(cè)試總線(xiàn)連接測(cè)試資源(模塊化儀器或可程控的臺(tái)式儀器),通過(guò)儀器驅(qū)動(dòng)程序控制儀器設(shè)備;測(cè)試服務(wù)器運(yùn)行數(shù)據(jù)庫(kù)和測(cè)試應(yīng)用軟件;控制主機(jī)實(shí)現(xiàn)人機(jī)交互,對(duì)整個(gè)測(cè)試系統(tǒng)進(jìn)行控制。

    圖1 系統(tǒng)硬件組成

    可根據(jù)測(cè)試需求,調(diào)整和縮放系統(tǒng)規(guī)模,如將三者合為一體,即以傳統(tǒng)的單機(jī)方式運(yùn)行整個(gè)測(cè)試系統(tǒng)。

    1.2 軟件組成

    用Python開(kāi)發(fā)自動(dòng)測(cè)試軟件,其基本層次結(jié)構(gòu)如圖2所示。

    圖2 系統(tǒng)軟件層次結(jié)構(gòu)

    最上層為測(cè)試應(yīng)用層,負(fù)責(zé)測(cè)試用例執(zhí)行、數(shù)據(jù)存儲(chǔ)和分析、測(cè)試報(bào)告生成等具體的測(cè)試業(yè)務(wù)。應(yīng)用層之下為儀器驅(qū)動(dòng)層,在Python儀器驅(qū)動(dòng)模塊中封裝和調(diào)用底層硬件的API,對(duì)測(cè)試資源進(jìn)行配置和管理。

    對(duì)于支持NI-VISA和NI-IVI標(biāo)準(zhǔn)驅(qū)動(dòng)的測(cè)試設(shè)備,Python中的開(kāi)源拓展庫(kù)pyvisa和pyivi分別提供了二者的API封裝,可以直接調(diào)用已封裝好的與具體儀器無(wú)關(guān)的函數(shù)接口或可互換類(lèi)驅(qū)動(dòng)接口[4]。

    但實(shí)際的測(cè)試需求往往豐富多變,因?yàn)楦鞣N原因,測(cè)試系統(tǒng)還會(huì)使用很多缺少VISA或IVI驅(qū)動(dòng)支持的測(cè)試儀器,如各種總線(xiàn)通訊接口卡、數(shù)據(jù)采集卡、多功能復(fù)合儀器,以及一些自研或定制的非標(biāo)準(zhǔn)設(shè)備,有時(shí)也包括一些暫時(shí)無(wú)法升級(jí)的老舊測(cè)試設(shè)備。這類(lèi)不被VISA或IVI驅(qū)動(dòng)支持的測(cè)試資源,常被稱(chēng)作專(zhuān)有設(shè)備或非標(biāo)設(shè)備。

    將Python作為測(cè)試開(kāi)發(fā)平臺(tái)的主要技術(shù)障礙,就是如何在Python中對(duì)這類(lèi)專(zhuān)有設(shè)備進(jìn)行編程控制。

    2 非標(biāo)儀器驅(qū)動(dòng)的封裝和調(diào)用

    儀器驅(qū)動(dòng)通常采用C或C++編寫(xiě),一般會(huì)以C語(yǔ)言動(dòng)態(tài)鏈接庫(kù)的形式發(fā)布,并提供頭文件、庫(kù)文件等供二次開(kāi)發(fā)。常見(jiàn)的儀器驅(qū)動(dòng)程序(或SDK)中包含的文件類(lèi)型及作用,如表1所示。

    表1 非標(biāo)儀器設(shè)備驅(qū)動(dòng)程序的常見(jiàn)結(jié)構(gòu)

    用C,C++調(diào)用專(zhuān)有儀器驅(qū)動(dòng)的API函數(shù)時(shí),一般只需要正確設(shè)置編譯器的鏈接路徑和鏈接方式。在C#中,需要用declare語(yǔ)句對(duì)API函數(shù)的參數(shù)和返回值類(lèi)型等進(jìn)行聲明,之后方可調(diào)用儀器API進(jìn)行編程。有些廠(chǎng)商提供了LabVIEW,C#等環(huán)境的驅(qū)動(dòng)接口聲明代碼(或SDK),以簡(jiǎn)化編程工作。

    Python語(yǔ)言在虛擬儀器開(kāi)發(fā)中使用比例比較低,大多數(shù)儀器廠(chǎng)商并沒(méi)有為儀器提供Python SDK支持。Python不支持指針操作,完全使用引用類(lèi)型表示變量、參數(shù)等(傳遞內(nèi)存地址而不是值拷貝),編譯成中間二進(jìn)制字節(jié)碼后通過(guò)解釋器解釋運(yùn)行。Python與C語(yǔ)言雖然語(yǔ)句類(lèi)似,但在數(shù)據(jù)類(lèi)型、內(nèi)存操作、設(shè)計(jì)模式、運(yùn)行方式等方面存在很大的差異,Python無(wú)法簡(jiǎn)單直接地調(diào)用針對(duì)C語(yǔ)言編程而設(shè)計(jì)的儀器驅(qū)動(dòng)。

    本文對(duì)在Python中跨語(yǔ)言調(diào)用儀器驅(qū)動(dòng)程序,進(jìn)行了技術(shù)研究和方案驗(yàn)證。

    2.1 儀器驅(qū)動(dòng)調(diào)用和封裝

    Python本身是開(kāi)放、可拓展的,除了可使用大量的第三方開(kāi)源拓展庫(kù),還可自行編寫(xiě)Python拓展模塊。借助于一些開(kāi)源庫(kù),可以實(shí)現(xiàn)在Python腳本中調(diào)用外部DLL動(dòng)態(tài)鏈接庫(kù)中的C程序。

    1)ctypes庫(kù),使用方式與C#中非托管方式調(diào)用DLL類(lèi)似,手工編寫(xiě)接口代碼、聲明每個(gè)API函數(shù)的參數(shù)和返回值類(lèi)型。該方案簡(jiǎn)單易行,但工作量大、難以自動(dòng)化處理,適合API函數(shù)較少的情況。

    2)libcffi庫(kù)提供了比ctypes更友好的編程接口,用更少的代碼可完成同樣的功能。

    3)用CPython將外部DLL庫(kù)封裝為原生的Python拓展模塊。該方案需要編寫(xiě)C代碼,將儀器驅(qū)動(dòng)頭文件中定義的各種API函數(shù)、數(shù)據(jù)類(lèi)型等轉(zhuǎn)換為相應(yīng)的Python對(duì)象。由于需要了解Python解釋器的底層實(shí)現(xiàn)機(jī)制,工作量和開(kāi)發(fā)難度都很大。

    4)SWIG可自動(dòng)解析C或C++的代碼和頭文件,提取API函數(shù)的參數(shù)類(lèi)型、返回值類(lèi)型,自動(dòng)生成CPython接口轉(zhuǎn)換代碼。該方案通用性和自動(dòng)化程度較高,只要熟悉SWIG的配置語(yǔ)法,無(wú)需手工編寫(xiě)底層的轉(zhuǎn)換代碼,即可快速批量地進(jìn)行API封裝。Python中的pyivi模塊,實(shí)際上就是NI-IVI的SWIG封裝。

    在以上4種方案中,可能并不存在絕對(duì)的最佳方案。自動(dòng)測(cè)試系統(tǒng)經(jīng)常搭配使用模塊化儀器、臺(tái)式儀器以及其他程控測(cè)試資源,并根據(jù)測(cè)試需求靈活地增加或置換儀器。在選擇驅(qū)動(dòng)封裝方案時(shí),建議根據(jù)驅(qū)動(dòng)API的數(shù)量和復(fù)雜度,結(jié)合開(kāi)發(fā)人員對(duì)相關(guān)工具的熟悉程度,使用ctypes,libcffi或SWIG。

    本文所設(shè)計(jì)的測(cè)試系統(tǒng)中使用了較多的非標(biāo)儀器,API數(shù)量和類(lèi)型都比較豐富,因此使用SWIG對(duì)儀器驅(qū)動(dòng)進(jìn)行封裝,通過(guò)自動(dòng)化處理提高開(kāi)發(fā)效率。

    2.1 用SWIG封裝儀器驅(qū)動(dòng)為Python拓展模塊

    本文以某公司的多功能數(shù)據(jù)采集模塊PXI-nuDAQ2206為例(以下簡(jiǎn)稱(chēng)DAQ2206),簡(jiǎn)要介紹將其廠(chǎng)商專(zhuān)有驅(qū)動(dòng)用SWIG轉(zhuǎn)換為Python拓展模塊的關(guān)鍵步驟。

    DAQ2206為PXI模塊儀器,測(cè)試資源包括64個(gè)AD通道,2個(gè)DA通道,2個(gè)定時(shí)/計(jì)數(shù)器和24個(gè)IO口。在工業(yè)控制、自動(dòng)測(cè)試中使用多功能復(fù)合測(cè)試設(shè)備,可以提高資源密度、減小設(shè)備體積。但此類(lèi)多功能復(fù)合設(shè)備,往往缺少VISA和IVI驅(qū)動(dòng)的支持。

    公司提供了專(zhuān)有驅(qū)動(dòng)包D2K_DASK,支持包括DAQ2206在內(nèi)的多種模塊化儀器。用SWIG對(duì)其進(jìn)行接口封裝的核心工作是按照SWIG庫(kù)的配置語(yǔ)法,在拓展名為*.i的API接口描述文件中對(duì)特殊的API參數(shù)類(lèi)型進(jìn)行聲明,以便于SWIG能夠正確地進(jìn)行類(lèi)型轉(zhuǎn)換和封裝。示例如下(片段):

    %module D2KDASK

    %include"D2K_DASK.h"

    %include"typemaps.i"

    %apply int *OUTPUT { BOOLEAN *Stopped,U32 *AccessCnt};

    %apply double *OUTPUT { F64 *voltage };

    首先用%include指令包含驅(qū)動(dòng)API的頭文件。一般情況下SWIG能自動(dòng)識(shí)別大部分函數(shù)原型、變量和常量[5],并將其轉(zhuǎn)換為相應(yīng)的Python對(duì)象。Python采用動(dòng)態(tài)數(shù)據(jù)類(lèi)型和自動(dòng)內(nèi)存管理,無(wú)法通過(guò)指針直接操作內(nèi)存,所以?xún)x器驅(qū)動(dòng)中經(jīng)常使用的指針類(lèi)型的參數(shù)通常需要特殊處理。

    儀器API大多將操作的狀態(tài)碼作為返回值,但由于C / C++函數(shù)不支持多返回值,為了輸出額外的數(shù)據(jù),一般會(huì)使用指針作為參數(shù)、間接地繞開(kāi)這一限制。以函數(shù)D2K_AI_AsyncCheck為例,其函數(shù)原型為I16 D2K_AI_AsyncCheck (U16 CardNumber,BOOLEAN *Stopped,U32*AccessCnt)。其中,指針類(lèi)型的參數(shù)BOOLEAN*Stopped和U32 *AccessCnt,被用于輸出數(shù)據(jù)采集狀態(tài)和已采集數(shù)據(jù)的個(gè)數(shù)。該API函數(shù)實(shí)際上并不關(guān)心這些形參的初始值,只是單向地將輸出數(shù)據(jù)寫(xiě)入指針?biāo)赶虻膬?nèi)存。

    借助于SWIG的指針類(lèi)型處理模塊typemaps.i,通過(guò)指令%apply int *OUTPUT { BOOLEAN *Stopped,U32 *AccessCnt },可將對(duì)應(yīng)的參數(shù)聲明為Python整數(shù)類(lèi)型,參數(shù)用途為OUTPUT。

    編寫(xiě)好SWIG接口文件后,調(diào)用swig命令可自動(dòng)生成接口的包裝代碼(如D2KDASK_wrap.c),將其編譯為動(dòng)態(tài)鏈接庫(kù)(Windows下還需要修改拓展名為*.pyd),即得到儀器驅(qū)動(dòng)的Python拓展模塊。在Python中可直接import導(dǎo)入儀器驅(qū)動(dòng)拓展模塊。受益于Python語(yǔ)法簡(jiǎn)單、多返回值、動(dòng)態(tài)類(lèi)型、自動(dòng)內(nèi)存管理等特性,無(wú)需繁瑣的定義、聲明和底層操作,可以簡(jiǎn)潔、自然地調(diào)用驅(qū)動(dòng)模塊中的資源,如:

    >>>from D2K_DASK import D2K_AI_AsyncCheck

    >>>status,stop,count=D2K_AI_AsyncCheck(0)

    >>>status,stop,count

    (0,1,50)

    以上只是使用SWIG封裝儀器驅(qū)動(dòng)的簡(jiǎn)單示例。除typemaps.i外,SWIG還提供了windows.i,cpointer.i,carrays.i,cstring.i,cmalloc.i,cdata.i等拓展庫(kù),能夠處理Windows編程中使用的各種頭文件,在Python腳本中操作函數(shù)指針、數(shù)組、字符串、結(jié)構(gòu)體和聯(lián)合體等C語(yǔ)言數(shù)據(jù)類(lèi)型,通過(guò)malloc動(dòng)態(tài)申請(qǐng)和釋放內(nèi)存,直接對(duì)內(nèi)存進(jìn)行不受保護(hù)地讀寫(xiě)。SWIG大大豐富和擴(kuò)充了Python的底層編程能力,基本能滿(mǎn)足用Python進(jìn)行儀器編程的需求。

    2.2 進(jìn)一步功能封裝

    將儀器驅(qū)動(dòng)封裝為Python模塊后,還可參考IVI可互換類(lèi)驅(qū)動(dòng)的實(shí)現(xiàn)機(jī)制,利用Python面向?qū)ο蟮奶匦?,將具體的底層API操作封裝在類(lèi)內(nèi)部,對(duì)外抽象出與儀器無(wú)關(guān)的高級(jí)操作接口,逐步將測(cè)試軟件與底層儀器API解耦,提高儀器的可互換性。

    2.3 實(shí)現(xiàn)分布式和跨平臺(tái)調(diào)用

    設(shè)計(jì)和開(kāi)發(fā)測(cè)試系統(tǒng)時(shí),有時(shí)需要在測(cè)試軟件中集中管理和操作連接到多臺(tái)測(cè)試計(jì)算機(jī)的儀器資源??赡艿脑虬ǎ河?jì)算機(jī)接口類(lèi)型和數(shù)量有限,儀器設(shè)備空間分布較廣,系統(tǒng)中不同的測(cè)試設(shè)備所要求的軟件運(yùn)行環(huán)境無(wú)法統(tǒng)一等。隨著計(jì)算機(jī)軟硬件平臺(tái)不斷升級(jí),測(cè)試設(shè)備會(huì)逐漸過(guò)時(shí),在需要對(duì)老舊的測(cè)試系統(tǒng)進(jìn)行升級(jí)維護(hù)時(shí),上述問(wèn)題可能會(huì)更加突出[6]。將儀器設(shè)備接入到多臺(tái)測(cè)試計(jì)算機(jī)后,傳統(tǒng)的測(cè)試開(kāi)發(fā)平臺(tái)或編程語(yǔ)言往往難以用比較簡(jiǎn)單的方式,解決在分布式、跨平臺(tái)的環(huán)境下,對(duì)儀器驅(qū)動(dòng)進(jìn)行遠(yuǎn)程操作和遠(yuǎn)程調(diào)試等問(wèn)題。

    Python具有數(shù)量眾多且功能強(qiáng)大的網(wǎng)絡(luò)編程庫(kù)。其中,RPyC(Remote Python Call)庫(kù)采用對(duì)象代理(Object Proxying)技術(shù),可以像操作本地對(duì)象一樣操作遠(yuǎn)程主機(jī)上的Python模塊和程序。Python作為弱類(lèi)型的動(dòng)態(tài)語(yǔ)言,允許在運(yùn)行時(shí)修改和替換對(duì)象,該技術(shù)被稱(chēng)為“猴子補(bǔ)丁”(MonkeyPatch),可用于在不改變?cè)创a的情況下、對(duì)軟件功能進(jìn)行追加或變更。

    結(jié)合RPyC庫(kù)和“猴子補(bǔ)丁”,通過(guò)本地測(cè)試軟件中的代理對(duì)象,可通過(guò)RPyC庫(kù),透明地操作遠(yuǎn)程計(jì)算機(jī)所連接的測(cè)試設(shè)備,如圖3所示。

    圖3 實(shí)現(xiàn)遠(yuǎn)程、跨平臺(tái)調(diào)用儀器驅(qū)動(dòng)

    >>>import rpyc

    >>>server_ip=′192.168.1.22′

    >>>server=rpyc.classic.connect(host=server_ip,port=18812)

    >>>D2K_AI_AsyncCheck=server.D2K_DASK.D2K_AI_AsyncCheck

    >>>status,stop,count=D2K_AI_AsyncCheck(0)

    在實(shí)現(xiàn)遠(yuǎn)程調(diào)用的同時(shí),以上方案還支持跨平臺(tái)操作,即遠(yuǎn)程計(jì)算機(jī)和本地計(jì)算機(jī)可分別使用不同類(lèi)型的操作系統(tǒng)(Windows/Linux/Unix等),不同版本的Python,SWIG。

    使用pyvisa,pyivi以及SWIG封裝的Python拓展調(diào)用儀器驅(qū)動(dòng),結(jié)合RPyC和“猴子補(bǔ)丁”,可將單機(jī)測(cè)試軟件無(wú)縫遷移到分布式、跨平臺(tái)的網(wǎng)絡(luò)環(huán)境中。該方案能非常好地解決測(cè)試軟件設(shè)計(jì)中遠(yuǎn)程調(diào)試、遠(yuǎn)程操作以及運(yùn)行環(huán)境無(wú)法統(tǒng)一的問(wèn)題,為老舊測(cè)試設(shè)備的聯(lián)網(wǎng)升級(jí)改造、多臺(tái)測(cè)試機(jī)的組網(wǎng)運(yùn)行,提供了一種簡(jiǎn)單易行的技術(shù)方案。

    3 性能測(cè)試與分析

    Python腳本在運(yùn)行時(shí)首先會(huì)被編譯為中間字節(jié)碼,再通過(guò)解釋器解釋執(zhí)行,執(zhí)行過(guò)程中解釋器會(huì)進(jìn)行大量的類(lèi)型檢查、自省等操作,導(dǎo)致Python代碼的運(yùn)行效率和實(shí)時(shí)性表現(xiàn)較差[7]。虛擬儀器程序和自動(dòng)測(cè)試軟件,對(duì)運(yùn)行性能和實(shí)時(shí)性往往有較高的要求。調(diào)用經(jīng)SWIG封裝的儀器驅(qū)動(dòng)模塊時(shí),隱含的類(lèi)型轉(zhuǎn)換、數(shù)據(jù)拷貝等跨語(yǔ)言調(diào)用,必然會(huì)引入一定的封裝延遲。因此,有必要定量測(cè)量和研究經(jīng)SWIG封裝后的Python儀器驅(qū)動(dòng)模塊的運(yùn)行效率。

    本文選取了DAQ2206的5個(gè)API函數(shù),分別用C語(yǔ)言直接調(diào)用和用Python調(diào)用經(jīng)SWIG封裝后的驅(qū)動(dòng)模塊,統(tǒng)計(jì)執(zhí)行耗時(shí)、計(jì)算封裝開(kāi)銷(xiāo)。

    在C程序中精確測(cè)量時(shí)間的原理是:北橋提供了高精度性能計(jì)數(shù)器,調(diào)用QueryPerformanceCounter和QueryPerformanceFrequency這兩個(gè)API可分別獲取其計(jì)數(shù)值和計(jì)數(shù)頻率。在被測(cè)函數(shù)前后插樁、獲取計(jì)數(shù)差值,除以計(jì)數(shù)頻率,即得到函數(shù)的執(zhí)行耗時(shí)。

    表2 測(cè)試環(huán)境

    嵌入式控制器 cPCI-2510計(jì)數(shù)頻率測(cè)得約為1.46 MHz(硬件決定),相當(dāng)于計(jì)時(shí)分辨力可達(dá)1 μs以上。測(cè)試次數(shù)1000次,數(shù)據(jù)統(tǒng)計(jì)如表3所示。

    表3 性能測(cè)試數(shù)據(jù) μs

    可以看出,SWIG接口轉(zhuǎn)換引入的封裝耗時(shí)約為2~15 μs。Register_Card,Release_Card的延遲相對(duì)其他API較高,但由于只在初始化階段和程序退出時(shí)調(diào)用,封裝開(kāi)銷(xiāo)對(duì)性能的影響基本可忽略。其他3個(gè)API函數(shù)的封裝開(kāi)銷(xiāo)為2~3 μs,與API本身的執(zhí)行時(shí)間沒(méi)有明顯關(guān)聯(lián)。受操作系統(tǒng)任務(wù)調(diào)度影響,Windows軟件的實(shí)時(shí)性指標(biāo)往往只能達(dá)到10 ms左右,因此微秒級(jí)的調(diào)用開(kāi)銷(xiāo)一般不會(huì)對(duì)測(cè)試任務(wù)產(chǎn)生嚴(yán)重影響。

    在對(duì)程序性能要求非常嚴(yán)格的場(chǎng)合,不建議非常頻繁(如每秒數(shù)千次以上)地調(diào)用SWIG封裝后的API函數(shù)(如AI_VoltScale)。此時(shí),可以將最耗時(shí)的底層關(guān)鍵代碼用C語(yǔ)言實(shí)現(xiàn),一并編譯、封裝到Python儀器驅(qū)動(dòng)拓展模塊中,作為整體進(jìn)行調(diào)用,這樣既可以使用Python語(yǔ)言進(jìn)行高效率的開(kāi)發(fā),也不會(huì)由于SWIG封裝和Python解釋運(yùn)行而導(dǎo)致軟件整體的實(shí)時(shí)性受到破壞。

    在100 Mbps局域網(wǎng)環(huán)境下,遠(yuǎn)程調(diào)用驅(qū)動(dòng)API會(huì)再引入約2 ms的傳輸延遲,可能對(duì)軟件的執(zhí)行效率產(chǎn)生一定的影響。因此,遠(yuǎn)程調(diào)用一般更適用于軟件調(diào)試、低速數(shù)據(jù)采集等實(shí)時(shí)性要求相對(duì)較低的場(chǎng)景。

    4 總結(jié)

    測(cè)試軟件是虛擬儀器和自動(dòng)測(cè)試系統(tǒng)的核心,傳統(tǒng)的測(cè)試開(kāi)發(fā)平臺(tái)使用中存在較大的局限性。本文通過(guò)SWIG將儀器驅(qū)動(dòng)程序轉(zhuǎn)換為Python拓展模塊,彌補(bǔ)了Python在底層編程方面的不足,解決了用Python進(jìn)行儀器編程的主要障礙。

    受益于Python的自動(dòng)內(nèi)存管理、動(dòng)態(tài)類(lèi)型、面向?qū)ο笠约柏S富的拓展庫(kù),用Python開(kāi)發(fā)測(cè)試軟件,可提高編程效率,降低在分布式、跨平臺(tái)的環(huán)境下設(shè)計(jì)和開(kāi)發(fā)測(cè)試軟件的難度,縮短復(fù)雜測(cè)控系統(tǒng)的開(kāi)發(fā)時(shí)間,一定程度上也有助于提高儀器的可互換性。在對(duì)軟件實(shí)時(shí)性、儀器操作性能等有較高要求的場(chǎng)合,可采用C語(yǔ)言和Python混合編程,在軟件開(kāi)發(fā)效率和運(yùn)行效率之間,取得比較好的平衡。

    [1] 丁未.將工業(yè)與科技世界的運(yùn)行統(tǒng)一在Python語(yǔ)言的開(kāi)源框架中[J].中國(guó)儀器儀表,2013(08):23-25.

    [2] Hughes J M.真實(shí)世界的Python儀器監(jiān)控 : Real world instrumentation with Python:數(shù)據(jù)采集與控制系統(tǒng)自動(dòng)化[M].北京:電子工業(yè)出版社,2013.

    [3] Beazley D M.SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++[C]// Usenix Tcl/tk Workshop,1996.

    [4] 黃建軍,李宥謀,劉婧,等.基于Python語(yǔ)言的自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2017,40(4):39-43.

    [5] Beazley D M.Automated scientific software scripting with SWIG[J].Future Generation Computer Systems,2003,19(5):599-609.

    [6] Weltzin C,Schlonsky S.Reducing obsolescence of Linux-based ATEs with virtualization[J].Instrumentation & Measurement Magazine IEEE,2011,14(4):1-3.

    [7] 范浩杰.面向Python程序源代碼的分析與編譯優(yōu)化研究[D].北京:北京信息科技大學(xué),2015.

    猜你喜歡
    測(cè)試軟件自動(dòng)測(cè)試跨平臺(tái)
    網(wǎng)絡(luò)自適應(yīng)測(cè)試軟件運(yùn)行方法設(shè)計(jì)
    跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
    JXG-50S型相敏軌道電路接收器自動(dòng)測(cè)試臺(tái)
    可并行測(cè)試的電磁兼容自動(dòng)測(cè)試系統(tǒng)的實(shí)現(xiàn)
    關(guān)于某型雷達(dá)自動(dòng)測(cè)試系統(tǒng)的幾點(diǎn)認(rèn)識(shí)和建議
    電子制作(2018年11期)2018-08-04 03:26:00
    自動(dòng)化檢測(cè)EPU10A板卡系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
    基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
    基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
    基于B/S的跨平臺(tái)用戶(hù)界面可配置算法研究
    遠(yuǎn)程開(kāi)放教育學(xué)生自主學(xué)習(xí)能力評(píng)價(jià)的研究
    人妻丰满熟妇av一区二区三区| 99视频精品全部免费 在线 | 好男人在线观看高清免费视频| 国产视频内射| 午夜日韩欧美国产| 欧美又色又爽又黄视频| 天天添夜夜摸| 国产一区二区在线av高清观看| 狠狠狠狠99中文字幕| 在线免费观看不下载黄p国产 | 日本黄色视频三级网站网址| 久久精品国产亚洲av香蕉五月| 一个人免费在线观看电影 | 在线观看一区二区三区| 欧美性猛交╳xxx乱大交人| 国产淫片久久久久久久久 | 1024手机看黄色片| 久久人妻av系列| 在线观看66精品国产| 美女免费视频网站| 国产成人精品无人区| 两人在一起打扑克的视频| 免费观看精品视频网站| 熟女电影av网| 亚洲av成人av| 午夜激情欧美在线| 久久精品国产综合久久久| 精品国产乱子伦一区二区三区| 亚洲精品一区av在线观看| 免费看光身美女| 真人做人爱边吃奶动态| 在线播放国产精品三级| 国产成人av激情在线播放| netflix在线观看网站| 亚洲午夜精品一区,二区,三区| 亚洲中文字幕一区二区三区有码在线看 | www日本在线高清视频| 熟女电影av网| 伊人久久大香线蕉亚洲五| 亚洲真实伦在线观看| 18禁观看日本| 欧美性猛交黑人性爽| 99久久精品热视频| 日韩欧美国产一区二区入口| av在线蜜桃| 日韩免费av在线播放| 亚洲国产欧洲综合997久久,| av女优亚洲男人天堂 | 日本免费a在线| 国产视频内射| 亚洲色图av天堂| 最新中文字幕久久久久 | 亚洲午夜理论影院| 99国产极品粉嫩在线观看| 色综合站精品国产| 欧美3d第一页| 成年版毛片免费区| 国产精品久久久人人做人人爽| a级毛片在线看网站| 成人三级做爰电影| av福利片在线观看| 99精品欧美一区二区三区四区| 一本久久中文字幕| 可以在线观看毛片的网站| 99久久久亚洲精品蜜臀av| 国产欧美日韩精品亚洲av| 真人一进一出gif抽搐免费| 国产成人av激情在线播放| 悠悠久久av| 国产av不卡久久| 亚洲国产色片| 中文字幕av在线有码专区| 男人舔奶头视频| 久久久久久大精品| 久久久久国产一级毛片高清牌| 日韩精品中文字幕看吧| 国产免费av片在线观看野外av| 18美女黄网站色大片免费观看| 伦理电影免费视频| 日本黄色视频三级网站网址| 国产一区二区三区在线臀色熟女| 99久久综合精品五月天人人| 小说图片视频综合网站| 免费高清视频大片| 国产成人欧美在线观看| 欧美日韩综合久久久久久 | 精品99又大又爽又粗少妇毛片 | 18禁黄网站禁片午夜丰满| 成人精品一区二区免费| 欧美在线黄色| 中亚洲国语对白在线视频| 亚洲aⅴ乱码一区二区在线播放| 中文在线观看免费www的网站| 在线播放国产精品三级| 国产精品 欧美亚洲| 国产欧美日韩精品一区二区| 激情在线观看视频在线高清| 欧美一区二区精品小视频在线| 亚洲片人在线观看| 九九热线精品视视频播放| 亚洲五月天丁香| 99热6这里只有精品| 女生性感内裤真人,穿戴方法视频| 国产高清激情床上av| 日本 欧美在线| 午夜成年电影在线免费观看| 久久精品91蜜桃| 国产成人福利小说| 精品一区二区三区四区五区乱码| 岛国在线观看网站| 五月玫瑰六月丁香| 久久精品国产99精品国产亚洲性色| 国产精品国产高清国产av| 99久久精品热视频| 1024手机看黄色片| 午夜日韩欧美国产| 国产精品久久久久久精品电影| 欧美乱妇无乱码| 可以在线观看毛片的网站| 精品人妻1区二区| 午夜亚洲福利在线播放| 日本一本二区三区精品| 婷婷精品国产亚洲av在线| 精品国产乱码久久久久久男人| 色av中文字幕| 欧美日韩黄片免| 午夜福利免费观看在线| 亚洲国产中文字幕在线视频| 国产精品综合久久久久久久免费| 国产高清有码在线观看视频| 久久久久久久久免费视频了| 色在线成人网| 男人和女人高潮做爰伦理| 成人精品一区二区免费| 18禁黄网站禁片免费观看直播| 在线观看午夜福利视频| netflix在线观看网站| 日韩 欧美 亚洲 中文字幕| 成人无遮挡网站| 怎么达到女性高潮| 美女午夜性视频免费| 午夜免费激情av| 国产激情欧美一区二区| 亚洲美女视频黄频| 狂野欧美白嫩少妇大欣赏| 天天一区二区日本电影三级| 国产欧美日韩精品亚洲av| 99久久精品国产亚洲精品| 国产精品国产高清国产av| 97超视频在线观看视频| 欧美中文日本在线观看视频| 日本黄大片高清| 久久中文字幕人妻熟女| 黑人欧美特级aaaaaa片| 成人三级黄色视频| 亚洲国产色片| 国产精品1区2区在线观看.| 天堂√8在线中文| 两人在一起打扑克的视频| 亚洲专区国产一区二区| 丰满人妻一区二区三区视频av | 久久精品夜夜夜夜夜久久蜜豆| 日日干狠狠操夜夜爽| 黑人欧美特级aaaaaa片| av国产免费在线观看| 美女cb高潮喷水在线观看 | 欧美激情在线99| 国产在线精品亚洲第一网站| 日韩 欧美 亚洲 中文字幕| 给我免费播放毛片高清在线观看| 搞女人的毛片| 天堂√8在线中文| 性欧美人与动物交配| 亚洲人成网站在线播放欧美日韩| 制服丝袜大香蕉在线| 国产人伦9x9x在线观看| 97人妻精品一区二区三区麻豆| 在线观看午夜福利视频| 欧美绝顶高潮抽搐喷水| 国产一区二区在线av高清观看| 国产v大片淫在线免费观看| 国产精品亚洲一级av第二区| 国产一区二区三区在线臀色熟女| 精品一区二区三区av网在线观看| 男女午夜视频在线观看| 欧美成狂野欧美在线观看| 中文资源天堂在线| 午夜免费观看网址| 老司机午夜福利在线观看视频| 女同久久另类99精品国产91| 九九热线精品视视频播放| 99热这里只有精品一区 | www.www免费av| 波多野结衣巨乳人妻| 少妇丰满av| 精品一区二区三区视频在线 | 美女午夜性视频免费| 好男人在线观看高清免费视频| 国产免费男女视频| 国产成人福利小说| 国产 一区 欧美 日韩| 女人高潮潮喷娇喘18禁视频| 又大又爽又粗| 在线观看舔阴道视频| 18禁国产床啪视频网站| 精品午夜福利视频在线观看一区| 色哟哟哟哟哟哟| 免费大片18禁| 国产av麻豆久久久久久久| 欧美在线黄色| 日本撒尿小便嘘嘘汇集6| 三级男女做爰猛烈吃奶摸视频| 亚洲中文av在线| 国产激情久久老熟女| 日韩人妻高清精品专区| 久久九九热精品免费| 成人高潮视频无遮挡免费网站| www.999成人在线观看| 婷婷丁香在线五月| 两个人的视频大全免费| 18禁裸乳无遮挡免费网站照片| 国产午夜精品论理片| 1024香蕉在线观看| 精品日产1卡2卡| ponron亚洲| 国产精品 国内视频| 亚洲午夜理论影院| 国产精品九九99| svipshipincom国产片| 男人舔奶头视频| 18禁裸乳无遮挡免费网站照片| 欧美日韩国产亚洲二区| 国产成年人精品一区二区| 欧美一级毛片孕妇| 午夜福利在线在线| 国产真实乱freesex| 亚洲色图av天堂| 精品久久久久久久毛片微露脸| 亚洲第一电影网av| 中文字幕人成人乱码亚洲影| 99久久精品国产亚洲精品| 欧美三级亚洲精品| a级毛片在线看网站| 欧美日本视频| 国产av不卡久久| 国产精品 欧美亚洲| 最好的美女福利视频网| 三级毛片av免费| 小说图片视频综合网站| 夜夜爽天天搞| 国产精品亚洲美女久久久| 亚洲av成人av| 国产精品一区二区免费欧美| 黄色女人牲交| 人妻久久中文字幕网| 神马国产精品三级电影在线观看| 久9热在线精品视频| bbb黄色大片| 国产毛片a区久久久久| 亚洲精品粉嫩美女一区| 久久久久久久久免费视频了| 精品国产美女av久久久久小说| 亚洲一区高清亚洲精品| 久久久久亚洲av毛片大全| 亚洲五月婷婷丁香| 女同久久另类99精品国产91| 亚洲五月天丁香| 国产精品99久久久久久久久| 国产一区二区激情短视频| 日韩欧美国产在线观看| 99久久精品热视频| 欧美中文综合在线视频| 欧美在线黄色| 99久国产av精品| 国产精品久久久久久亚洲av鲁大| 中国美女看黄片| 搞女人的毛片| 国产一区二区三区在线臀色熟女| 美女被艹到高潮喷水动态| 宅男免费午夜| 精品久久久久久久久久久久久| 亚洲自拍偷在线| 亚洲人成电影免费在线| 1000部很黄的大片| 亚洲欧美日韩高清专用| 日本黄大片高清| 午夜福利在线观看吧| 日韩国内少妇激情av| 露出奶头的视频| 啦啦啦观看免费观看视频高清| 久久99热这里只有精品18| 老司机午夜福利在线观看视频| 日韩精品青青久久久久久| 真人一进一出gif抽搐免费| 日本成人三级电影网站| 国产精品 国内视频| 超碰成人久久| а√天堂www在线а√下载| 色综合婷婷激情| 九色成人免费人妻av| 久久国产精品人妻蜜桃| 在线免费观看的www视频| 午夜成年电影在线免费观看| 国内揄拍国产精品人妻在线| 亚洲国产中文字幕在线视频| 久久精品夜夜夜夜夜久久蜜豆| 性欧美人与动物交配| 国产精品久久久久久亚洲av鲁大| 99热6这里只有精品| 一进一出抽搐gif免费好疼| 国产精华一区二区三区| 亚洲专区国产一区二区| 国模一区二区三区四区视频 | 国产淫片久久久久久久久 | 可以在线观看毛片的网站| 欧美黄色片欧美黄色片| 亚洲人成网站高清观看| 天堂动漫精品| 成人一区二区视频在线观看| 亚洲熟妇中文字幕五十中出| 亚洲欧美日韩高清在线视频| 天堂动漫精品| 99精品在免费线老司机午夜| 久久精品影院6| 99热这里只有是精品50| 十八禁网站免费在线| 国产aⅴ精品一区二区三区波| 婷婷六月久久综合丁香| 欧美中文综合在线视频| 国产免费av片在线观看野外av| 一卡2卡三卡四卡精品乱码亚洲| 久久国产乱子伦精品免费另类| 非洲黑人性xxxx精品又粗又长| 日本免费一区二区三区高清不卡| 可以在线观看的亚洲视频| 国产极品精品免费视频能看的| 丝袜人妻中文字幕| 99视频精品全部免费 在线 | 亚洲乱码一区二区免费版| 99久久国产精品久久久| 婷婷精品国产亚洲av在线| bbb黄色大片| 日韩免费av在线播放| 一级作爱视频免费观看| 国产爱豆传媒在线观看| 18禁黄网站禁片午夜丰满| 午夜视频精品福利| 午夜激情福利司机影院| 好男人电影高清在线观看| 可以在线观看的亚洲视频| 午夜视频精品福利| 久久这里只有精品19| 嫩草影视91久久| 在线观看免费午夜福利视频| 亚洲av成人不卡在线观看播放网| e午夜精品久久久久久久| 日本五十路高清| 黄色片一级片一级黄色片| 12—13女人毛片做爰片一| 国产欧美日韩一区二区精品| 国产高清视频在线播放一区| bbb黄色大片| 国产乱人视频| 免费在线观看成人毛片| 免费看a级黄色片| 97超级碰碰碰精品色视频在线观看| 婷婷精品国产亚洲av在线| 老司机午夜十八禁免费视频| 亚洲乱码一区二区免费版| 欧美3d第一页| 午夜福利18| 欧美丝袜亚洲另类 | 亚洲精品乱码久久久v下载方式 | 国产精华一区二区三区| 两个人的视频大全免费| 美女 人体艺术 gogo| 亚洲av成人不卡在线观看播放网| 成人鲁丝片一二三区免费| 少妇人妻一区二区三区视频| 99热这里只有精品一区 | 99久国产av精品| 99re在线观看精品视频| 久久伊人香网站| 精品国产美女av久久久久小说| 天堂影院成人在线观看| 精品乱码久久久久久99久播| 一级毛片女人18水好多| 欧美性猛交黑人性爽| 黑人操中国人逼视频| 免费看美女性在线毛片视频| 婷婷亚洲欧美| 午夜免费激情av| 日本黄大片高清| 精品熟女少妇八av免费久了| 女人高潮潮喷娇喘18禁视频| 成人三级做爰电影| 欧美午夜高清在线| 99热精品在线国产| 久久久精品欧美日韩精品| 国产伦在线观看视频一区| 国产精品精品国产色婷婷| 又黄又粗又硬又大视频| 国产精品 国内视频| 久久香蕉精品热| 午夜福利视频1000在线观看| 悠悠久久av| 三级毛片av免费| 最好的美女福利视频网| 欧美日韩亚洲国产一区二区在线观看| 国产免费av片在线观看野外av| 国产又黄又爽又无遮挡在线| 一二三四社区在线视频社区8| 国产av麻豆久久久久久久| 亚洲av电影在线进入| 无限看片的www在线观看| 国产成人精品久久二区二区91| 国产黄片美女视频| 香蕉国产在线看| 欧美一区二区精品小视频在线| 亚洲人成伊人成综合网2020| 美女午夜性视频免费| 色尼玛亚洲综合影院| 宅男免费午夜| 麻豆一二三区av精品| 中文字幕熟女人妻在线| 99国产精品一区二区三区| 母亲3免费完整高清在线观看| 小说图片视频综合网站| 别揉我奶头~嗯~啊~动态视频| 欧美又色又爽又黄视频| 色综合欧美亚洲国产小说| 亚洲美女视频黄频| 怎么达到女性高潮| av在线天堂中文字幕| 日本熟妇午夜| 午夜免费激情av| 久久久久久人人人人人| 欧美3d第一页| 精品国产美女av久久久久小说| 夜夜躁狠狠躁天天躁| 欧美性猛交黑人性爽| 又黄又粗又硬又大视频| 久久久久国内视频| 男人舔女人的私密视频| 亚洲欧美精品综合久久99| 日韩欧美一区二区三区在线观看| 啦啦啦观看免费观看视频高清| 噜噜噜噜噜久久久久久91| 少妇熟女aⅴ在线视频| 精品久久久久久久末码| 一进一出抽搐gif免费好疼| 99久久精品国产亚洲精品| 综合色av麻豆| 免费在线观看视频国产中文字幕亚洲| 久久久久久久精品吃奶| 国产极品精品免费视频能看的| 99久久国产精品久久久| 国产不卡一卡二| 国产av一区在线观看免费| 国产av不卡久久| 欧美乱码精品一区二区三区| 男女视频在线观看网站免费| 国内精品美女久久久久久| 国产日本99.免费观看| 少妇丰满av| 日本一本二区三区精品| 成在线人永久免费视频| 免费av不卡在线播放| 麻豆国产av国片精品| 人人妻人人澡欧美一区二区| www.精华液| 亚洲熟妇中文字幕五十中出| 国产成+人综合+亚洲专区| 麻豆av在线久日| 国产爱豆传媒在线观看| 精品日产1卡2卡| 久久精品国产亚洲av香蕉五月| 一本一本综合久久| 亚洲av成人不卡在线观看播放网| 美女扒开内裤让男人捅视频| 欧美黄色片欧美黄色片| 亚洲无线观看免费| 这个男人来自地球电影免费观看| 国产乱人视频| 精品99又大又爽又粗少妇毛片 | 欧美绝顶高潮抽搐喷水| 男人的好看免费观看在线视频| 男人舔奶头视频| 国产激情久久老熟女| 亚洲av成人av| 不卡av一区二区三区| 久久久久九九精品影院| 久久久久亚洲av毛片大全| 蜜桃久久精品国产亚洲av| 亚洲18禁久久av| 国产伦一二天堂av在线观看| 亚洲精华国产精华精| 国内少妇人妻偷人精品xxx网站 | АⅤ资源中文在线天堂| 两性午夜刺激爽爽歪歪视频在线观看| 给我免费播放毛片高清在线观看| 久久久国产欧美日韩av| 两个人看的免费小视频| av在线天堂中文字幕| 日本成人三级电影网站| 亚洲欧美激情综合另类| 他把我摸到了高潮在线观看| 亚洲国产欧美网| 99久久无色码亚洲精品果冻| 日韩免费av在线播放| 人妻久久中文字幕网| 国产精品一区二区三区四区久久| 免费在线观看视频国产中文字幕亚洲| 两性夫妻黄色片| 久久国产乱子伦精品免费另类| 国产综合懂色| 90打野战视频偷拍视频| 欧美日韩精品网址| 在线观看免费午夜福利视频| 日本 av在线| 国产伦精品一区二区三区四那| 国产成人精品久久二区二区91| 人妻夜夜爽99麻豆av| 99久国产av精品| 免费高清视频大片| 欧美激情久久久久久爽电影| 日韩有码中文字幕| 在线观看一区二区三区| 亚洲av中文字字幕乱码综合| 夜夜爽天天搞| 久久欧美精品欧美久久欧美| 日韩欧美国产在线观看| 偷拍熟女少妇极品色| 亚洲电影在线观看av| 欧美中文日本在线观看视频| www.999成人在线观看| 国产精品乱码一区二三区的特点| 99在线视频只有这里精品首页| 啦啦啦免费观看视频1| 99热精品在线国产| 国产精品久久久久久人妻精品电影| 午夜福利高清视频| 欧美中文综合在线视频| 国产精品爽爽va在线观看网站| 亚洲色图av天堂| 在线免费观看不下载黄p国产 | 亚洲午夜理论影院| 一本久久中文字幕| 亚洲国产精品999在线| 看免费av毛片| cao死你这个sao货| 国产三级中文精品| 最新美女视频免费是黄的| 我要搜黄色片| 国内精品美女久久久久久| 老司机福利观看| 国产精品日韩av在线免费观看| 变态另类成人亚洲欧美熟女| e午夜精品久久久久久久| 亚洲av免费在线观看| 天天一区二区日本电影三级| 亚洲人成电影免费在线| 色综合亚洲欧美另类图片| 亚洲无线观看免费| 精品欧美国产一区二区三| 色噜噜av男人的天堂激情| 中文字幕高清在线视频| 高清毛片免费观看视频网站| 亚洲乱码一区二区免费版| 亚洲欧美日韩高清在线视频| 91久久精品国产一区二区成人 | 久久精品国产亚洲av香蕉五月| 亚洲av成人一区二区三| 黄片大片在线免费观看| 巨乳人妻的诱惑在线观看| 免费一级毛片在线播放高清视频| 嫩草影院入口| 日本与韩国留学比较| 精品国产乱子伦一区二区三区| 免费人成视频x8x8入口观看| 97碰自拍视频| 黑人欧美特级aaaaaa片| 99国产精品一区二区蜜桃av| 18禁观看日本| 国产aⅴ精品一区二区三区波| 18禁美女被吸乳视频| 国产爱豆传媒在线观看| 午夜久久久久精精品| 搡老妇女老女人老熟妇| 男人舔女人的私密视频| 制服人妻中文乱码| 成人午夜高清在线视频| 国产爱豆传媒在线观看| 久久午夜综合久久蜜桃| 性色av乱码一区二区三区2| 欧美一区二区精品小视频在线| 精品久久久久久久久久久久久| 国产伦人伦偷精品视频| 亚洲 国产 在线| 日本一本二区三区精品| 免费搜索国产男女视频| 久久人人精品亚洲av| 99热精品在线国产| 这个男人来自地球电影免费观看| 搡老岳熟女国产| 在线国产一区二区在线| 亚洲色图 男人天堂 中文字幕| av欧美777| 国产成+人综合+亚洲专区| 国产精品美女特级片免费视频播放器 | 国产成人aa在线观看| 美女黄网站色视频| 白带黄色成豆腐渣| 欧美黄色淫秽网站| 久久精品综合一区二区三区|