• <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à)的研究
    一级a爱片免费观看的视频| 国产精品亚洲一级av第二区| 日韩一本色道免费dvd| 日日撸夜夜添| av卡一久久| 桃色一区二区三区在线观看| 真人做人爱边吃奶动态| 你懂的网址亚洲精品在线观看 | 国产亚洲精品av在线| 午夜福利在线观看免费完整高清在 | 欧美激情国产日韩精品一区| 内射极品少妇av片p| 特大巨黑吊av在线直播| 99久国产av精品| 三级毛片av免费| 毛片女人毛片| 欧美潮喷喷水| 久久久久九九精品影院| 露出奶头的视频| 国产精品日韩av在线免费观看| 精品一区二区免费观看| 成人av一区二区三区在线看| 亚洲中文字幕日韩| 亚洲性久久影院| 亚洲欧美日韩东京热| 熟女电影av网| av在线观看视频网站免费| 九九久久精品国产亚洲av麻豆| 亚洲av成人av| 久久亚洲精品不卡| 久久人人爽人人爽人人片va| 国产精品女同一区二区软件| 亚洲熟妇熟女久久| 97超视频在线观看视频| 99久久精品热视频| 精品久久国产蜜桃| 听说在线观看完整版免费高清| 岛国在线免费视频观看| 男插女下体视频免费在线播放| 午夜激情欧美在线| 人妻久久中文字幕网| 丝袜喷水一区| 18+在线观看网站| 99久久九九国产精品国产免费| 99视频精品全部免费 在线| 午夜a级毛片| 女人十人毛片免费观看3o分钟| 国产v大片淫在线免费观看| 欧美激情国产日韩精品一区| 18禁黄网站禁片免费观看直播| 我要搜黄色片| 欧美极品一区二区三区四区| 婷婷亚洲欧美| avwww免费| 91久久精品国产一区二区成人| 国产v大片淫在线免费观看| 亚洲欧美日韩东京热| 综合色av麻豆| 国产片特级美女逼逼视频| 丝袜喷水一区| 午夜福利在线观看免费完整高清在 | 一级a爱片免费观看的视频| 狠狠狠狠99中文字幕| 亚洲欧美精品综合久久99| 亚洲欧美日韩东京热| 欧美日韩精品成人综合77777| 日韩成人av中文字幕在线观看 | 99久久中文字幕三级久久日本| 欧美xxxx黑人xx丫x性爽| 亚洲图色成人| av天堂中文字幕网| 日韩欧美三级三区| 一边摸一边抽搐一进一小说| 俺也久久电影网| 亚洲高清免费不卡视频| 午夜亚洲福利在线播放| 性色avwww在线观看| 美女内射精品一级片tv| 成人av在线播放网站| 久久韩国三级中文字幕| 搡老妇女老女人老熟妇| 亚洲精品国产成人久久av| 精品午夜福利在线看| 亚洲18禁久久av| 99九九线精品视频在线观看视频| 狂野欧美激情性xxxx在线观看| 国产一区二区在线av高清观看| 亚洲av熟女| 午夜精品在线福利| 精品久久久久久成人av| 午夜日韩欧美国产| 国产精品一区二区三区四区免费观看 | 少妇人妻一区二区三区视频| 激情 狠狠 欧美| 俄罗斯特黄特色一大片| 亚洲av第一区精品v没综合| 特大巨黑吊av在线直播| 小说图片视频综合网站| 99在线人妻在线中文字幕| 51国产日韩欧美| 国产亚洲精品av在线| 美女大奶头视频| 亚洲欧美日韩卡通动漫| 在线播放国产精品三级| 国产一级毛片七仙女欲春2| 九色成人免费人妻av| 最近的中文字幕免费完整| 午夜日韩欧美国产| 日韩中字成人| 午夜免费激情av| 联通29元200g的流量卡| 久久久午夜欧美精品| 免费看美女性在线毛片视频| 欧美另类亚洲清纯唯美| 欧美日韩一区二区视频在线观看视频在线 | 精华霜和精华液先用哪个| 亚洲av熟女| 尤物成人国产欧美一区二区三区| 日韩欧美 国产精品| 日韩强制内射视频| 麻豆成人午夜福利视频| 国产aⅴ精品一区二区三区波| 婷婷精品国产亚洲av| 免费在线观看影片大全网站| 日日摸夜夜添夜夜添av毛片| 真人做人爱边吃奶动态| 国内揄拍国产精品人妻在线| avwww免费| 黑人高潮一二区| 色播亚洲综合网| 99热这里只有是精品在线观看| 99热精品在线国产| 亚洲成人av在线免费| 国产一区二区在线观看日韩| 亚洲性夜色夜夜综合| 男人和女人高潮做爰伦理| 别揉我奶头 嗯啊视频| 欧美人与善性xxx| 中文字幕av成人在线电影| 国产精品国产三级国产av玫瑰| 欧美zozozo另类| 美女高潮的动态| 亚洲中文日韩欧美视频| 亚洲欧美日韩东京热| 搡老妇女老女人老熟妇| 黄色配什么色好看| 精品国产三级普通话版| 久久久色成人| 国产午夜精品论理片| 日韩精品有码人妻一区| 在线免费十八禁| 欧美+日韩+精品| 99久久精品热视频| 最近2019中文字幕mv第一页| 黄色配什么色好看| 天堂√8在线中文| 国产日本99.免费观看| 婷婷亚洲欧美| 有码 亚洲区| a级毛色黄片| 免费无遮挡裸体视频| 久久久久久久久久黄片| 99热这里只有是精品在线观看| 搡女人真爽免费视频火全软件 | 久久久a久久爽久久v久久| 国产爱豆传媒在线观看| 日本爱情动作片www.在线观看 | 99热网站在线观看| 99热6这里只有精品| 国产精品国产高清国产av| 丰满人妻一区二区三区视频av| 国产黄色视频一区二区在线观看 | 中文字幕av在线有码专区| 欧美日韩精品成人综合77777| 毛片女人毛片| 伊人久久精品亚洲午夜| 黑人高潮一二区| 国产日本99.免费观看| 国产精品1区2区在线观看.| 精品久久国产蜜桃| 欧美高清性xxxxhd video| 国内精品美女久久久久久| 亚洲性夜色夜夜综合| 别揉我奶头 嗯啊视频| 久久热精品热| 亚洲五月天丁香| 99久久精品一区二区三区| 亚洲成人中文字幕在线播放| 男人和女人高潮做爰伦理| 成人永久免费在线观看视频| 亚洲av免费在线观看| 亚洲成a人片在线一区二区| 人人妻人人澡人人爽人人夜夜 | 春色校园在线视频观看| av卡一久久| 久久久色成人| 丝袜喷水一区| 亚洲最大成人中文| 波多野结衣高清无吗| 日韩欧美精品v在线| 亚洲精品粉嫩美女一区| 亚洲最大成人手机在线| 亚洲人与动物交配视频| 级片在线观看| av在线亚洲专区| 亚洲欧美精品自产自拍| 悠悠久久av| 亚洲成人精品中文字幕电影| 男女边吃奶边做爰视频| 欧美xxxx黑人xx丫x性爽| 精品久久久久久久久久久久久| 在线观看免费视频日本深夜| 在线免费观看的www视频| 精品欧美国产一区二区三| 欧美丝袜亚洲另类| 少妇熟女欧美另类| 真实男女啪啪啪动态图| 老熟妇乱子伦视频在线观看| 日本一本二区三区精品| 久久久欧美国产精品| 亚洲av中文av极速乱| 天美传媒精品一区二区| 级片在线观看| 国产精品综合久久久久久久免费| 国产一区二区亚洲精品在线观看| 插阴视频在线观看视频| 亚洲不卡免费看| 伊人久久精品亚洲午夜| 国产精品福利在线免费观看| 91久久精品国产一区二区三区| 别揉我奶头 嗯啊视频| 12—13女人毛片做爰片一| а√天堂www在线а√下载| 亚洲在线观看片| 美女免费视频网站| 三级毛片av免费| 中文亚洲av片在线观看爽| 国产亚洲91精品色在线| 亚洲成人久久爱视频| 久久久久久久午夜电影| 久久精品国产亚洲av香蕉五月| 国产黄a三级三级三级人| 一个人免费在线观看电影| 十八禁国产超污无遮挡网站| 97人妻精品一区二区三区麻豆| 99久久精品国产国产毛片| 欧美激情国产日韩精品一区| 99在线人妻在线中文字幕| 色av中文字幕| 男人舔奶头视频| 精品久久久久久久末码| 欧美+日韩+精品| 变态另类丝袜制服| 校园春色视频在线观看| 国产男靠女视频免费网站| 男插女下体视频免费在线播放| 真人做人爱边吃奶动态| 天堂动漫精品| 中文字幕免费在线视频6| 97碰自拍视频| 亚洲精品国产av成人精品 | 国产欧美日韩精品亚洲av| 成人亚洲精品av一区二区| 嫩草影视91久久| 性色avwww在线观看| 免费看光身美女| 久久久久久久午夜电影| 日韩欧美国产在线观看| 免费无遮挡裸体视频| 国产黄色小视频在线观看| 久99久视频精品免费| 久久久久久久久中文| 老熟妇仑乱视频hdxx| 九九热线精品视视频播放| 午夜亚洲福利在线播放| 免费搜索国产男女视频| 成人鲁丝片一二三区免费| 小蜜桃在线观看免费完整版高清| 婷婷亚洲欧美| 婷婷六月久久综合丁香| 18禁裸乳无遮挡免费网站照片| 最近最新中文字幕大全电影3| 国产午夜福利久久久久久| 长腿黑丝高跟| 国产亚洲精品久久久com| 成人欧美大片| 久久精品国产清高在天天线| 中出人妻视频一区二区| 国产午夜精品久久久久久一区二区三区 | 毛片女人毛片| 欧美人与善性xxx| 色综合站精品国产| 国产成人a区在线观看| 蜜臀久久99精品久久宅男| 久久久色成人| 国产精品久久久久久久电影| 免费看美女性在线毛片视频| 日韩在线高清观看一区二区三区| 久久人人爽人人爽人人片va| 亚洲在线自拍视频| 亚洲av美国av| 国产色爽女视频免费观看| 久久精品夜夜夜夜夜久久蜜豆| 夜夜夜夜夜久久久久| 亚洲成人久久性| 久久天躁狠狠躁夜夜2o2o| 成人永久免费在线观看视频| 中文字幕熟女人妻在线| 看黄色毛片网站| АⅤ资源中文在线天堂| 精品久久久久久久久久久久久| 日本色播在线视频| 男人狂女人下面高潮的视频| 国产三级在线视频| 免费在线观看成人毛片| 国产爱豆传媒在线观看| 亚洲欧美中文字幕日韩二区| av在线蜜桃| 春色校园在线视频观看| 你懂的网址亚洲精品在线观看 | 美女xxoo啪啪120秒动态图| 免费一级毛片在线播放高清视频| 国产男人的电影天堂91| 国产精品一区二区免费欧美| 亚洲av美国av| 老女人水多毛片| 精品一区二区免费观看| 在线播放国产精品三级| 亚洲综合色惰| 国产大屁股一区二区在线视频| 18禁黄网站禁片免费观看直播| 国产日本99.免费观看| 日韩精品青青久久久久久| 精品一区二区三区视频在线| 国产高潮美女av| 一本久久中文字幕| 欧美三级亚洲精品| 亚洲欧美清纯卡通| 成人特级黄色片久久久久久久| 天美传媒精品一区二区| 国产亚洲欧美98| 可以在线观看毛片的网站| 搞女人的毛片| 精品人妻视频免费看| 久久久久九九精品影院| 真人做人爱边吃奶动态| 免费看a级黄色片| 精品免费久久久久久久清纯| 97超级碰碰碰精品色视频在线观看| 午夜免费男女啪啪视频观看 | 女人被狂操c到高潮| 成人永久免费在线观看视频| 久久久久久伊人网av| 欧美色视频一区免费| 成人欧美大片| 国产 一区精品| 男女视频在线观看网站免费| 国产精品永久免费网站| 寂寞人妻少妇视频99o| 黄色视频,在线免费观看| av在线老鸭窝| 亚洲国产精品sss在线观看| 午夜精品在线福利| 黄色一级大片看看| a级毛片免费高清观看在线播放| 欧美3d第一页| 亚洲欧美日韩东京热| 丰满人妻一区二区三区视频av| 女的被弄到高潮叫床怎么办| 亚洲激情五月婷婷啪啪| 天天躁日日操中文字幕| 中文字幕av在线有码专区| 国产精品av视频在线免费观看| 蜜臀久久99精品久久宅男| 成人特级av手机在线观看| 校园春色视频在线观看| 日韩一本色道免费dvd| 最后的刺客免费高清国语| 午夜视频国产福利| 黄片wwwwww| 日韩av在线大香蕉| 久久久久性生活片| 亚洲国产精品合色在线| 99九九线精品视频在线观看视频| 看片在线看免费视频| 日韩精品有码人妻一区| 国产日本99.免费观看| 久久精品91蜜桃| 嫩草影院精品99| 十八禁国产超污无遮挡网站| 久久精品久久久久久噜噜老黄 | 欧美绝顶高潮抽搐喷水| 国产精品一及| 又爽又黄无遮挡网站| 1000部很黄的大片| 免费搜索国产男女视频| 搡老熟女国产l中国老女人| 天堂动漫精品| 日韩一区二区视频免费看| 久久久久久国产a免费观看| 国产精品野战在线观看| 国产精品精品国产色婷婷| 日日摸夜夜添夜夜添av毛片| 日日干狠狠操夜夜爽| 成年版毛片免费区| 春色校园在线视频观看| 国产爱豆传媒在线观看| 麻豆av噜噜一区二区三区| 国产午夜精品久久久久久一区二区三区 | 在线播放无遮挡| 在线观看美女被高潮喷水网站| 内射极品少妇av片p| 亚洲aⅴ乱码一区二区在线播放| 黄色日韩在线| 亚洲av免费高清在线观看| 成人毛片a级毛片在线播放| 简卡轻食公司| 村上凉子中文字幕在线| 蜜桃久久精品国产亚洲av| 久久婷婷人人爽人人干人人爱| 99久久成人亚洲精品观看| 亚洲av免费在线观看| 可以在线观看毛片的网站| 亚洲最大成人av| 一个人看视频在线观看www免费| 日韩av在线大香蕉| 精品一区二区三区视频在线观看免费| 国产精品美女特级片免费视频播放器| 国产男靠女视频免费网站| 晚上一个人看的免费电影| 久久婷婷人人爽人人干人人爱| 真实男女啪啪啪动态图| 亚洲熟妇中文字幕五十中出| 91在线观看av| 欧美zozozo另类| 欧美区成人在线视频| 久久久久九九精品影院| 伊人久久精品亚洲午夜| 国产一区二区在线av高清观看| 亚洲人成网站在线播| 亚洲美女黄片视频| 久久精品夜色国产| 国产黄片美女视频| 国产一区二区在线av高清观看| 内地一区二区视频在线| 又粗又爽又猛毛片免费看| 天美传媒精品一区二区| 精品人妻一区二区三区麻豆 | 亚洲精品国产成人久久av| 亚洲人成网站高清观看| 久久精品国产亚洲av香蕉五月| 在线看三级毛片| 午夜福利高清视频| 99riav亚洲国产免费| 99视频精品全部免费 在线| 久99久视频精品免费| 自拍偷自拍亚洲精品老妇| 国产91av在线免费观看| 波多野结衣高清作品| 国产亚洲精品综合一区在线观看| 亚洲aⅴ乱码一区二区在线播放| 免费av不卡在线播放| 久久久色成人| 国产精品无大码| 色尼玛亚洲综合影院| 久久久成人免费电影| 联通29元200g的流量卡| 搡老岳熟女国产| 日韩高清综合在线| 伦理电影大哥的女人| 免费大片18禁| 免费av观看视频| 日韩欧美一区二区三区在线观看| 久久精品国产亚洲网站| 一区二区三区高清视频在线| 给我免费播放毛片高清在线观看| h日本视频在线播放| 校园人妻丝袜中文字幕| 在线国产一区二区在线| 男女边吃奶边做爰视频| 亚洲三级黄色毛片| 国产高清视频在线观看网站| 亚洲av不卡在线观看| 精品人妻视频免费看| 啦啦啦啦在线视频资源| 欧美日本亚洲视频在线播放| 97超级碰碰碰精品色视频在线观看| 少妇丰满av| 成人美女网站在线观看视频| 免费看美女性在线毛片视频| 国产视频一区二区在线看| 国产成人aa在线观看| 一级a爱片免费观看的视频| 国产大屁股一区二区在线视频| 久久久久久久午夜电影| 成年版毛片免费区| 成人性生交大片免费视频hd| 黄片wwwwww| 久久久精品大字幕| 一个人免费在线观看电影| 九九在线视频观看精品| 久久久久性生活片| 久久久久久久久大av| 亚洲中文日韩欧美视频| 亚洲高清免费不卡视频| 日韩一本色道免费dvd| 成熟少妇高潮喷水视频| 久久精品影院6| 两性午夜刺激爽爽歪歪视频在线观看| 最后的刺客免费高清国语| 国产三级中文精品| 中文字幕精品亚洲无线码一区| 蜜臀久久99精品久久宅男| 色视频www国产| 欧美+亚洲+日韩+国产| 国产亚洲av嫩草精品影院| 亚洲专区国产一区二区| 日韩av在线大香蕉| 伊人久久精品亚洲午夜| 中国国产av一级| 少妇的逼水好多| 97超视频在线观看视频| 别揉我奶头 嗯啊视频| 少妇人妻一区二区三区视频| 中文字幕精品亚洲无线码一区| 国产精品综合久久久久久久免费| 在线免费十八禁| 全区人妻精品视频| 欧美xxxx黑人xx丫x性爽| 欧美+日韩+精品| 黑人高潮一二区| 中文字幕人妻熟人妻熟丝袜美| 婷婷六月久久综合丁香| 欧美极品一区二区三区四区| 亚洲乱码一区二区免费版| 亚洲成a人片在线一区二区| 亚洲欧美日韩无卡精品| 成人亚洲精品av一区二区| 国产蜜桃级精品一区二区三区| 精品久久久久久久久久久久久| 日韩三级伦理在线观看| 99精品在免费线老司机午夜| 国产成人福利小说| 国产乱人偷精品视频| 一级a爱片免费观看的视频| 精品日产1卡2卡| 婷婷色综合大香蕉| 中出人妻视频一区二区| 精品国产三级普通话版| 午夜福利成人在线免费观看| 日韩欧美一区二区三区在线观看| 亚洲欧美日韩高清在线视频| 一级毛片电影观看 | 免费观看在线日韩| 一个人免费在线观看电影| 国产精品福利在线免费观看| 男女之事视频高清在线观看| 亚洲欧美成人精品一区二区| 97在线视频观看| 成人综合一区亚洲| 日本精品一区二区三区蜜桃| 亚洲精华国产精华液的使用体验 | 国模一区二区三区四区视频| .国产精品久久| 亚洲国产精品成人综合色| 精品熟女少妇av免费看| 亚洲成a人片在线一区二区| 男女做爰动态图高潮gif福利片| 亚洲在线观看片| 激情 狠狠 欧美| 亚洲精华国产精华液的使用体验 | 麻豆国产97在线/欧美| 日韩在线高清观看一区二区三区| 校园人妻丝袜中文字幕| 成年版毛片免费区| 高清毛片免费观看视频网站| 一区二区三区高清视频在线| 久久久久性生活片| 成人三级黄色视频| 欧洲精品卡2卡3卡4卡5卡区| 我的女老师完整版在线观看| 大又大粗又爽又黄少妇毛片口| 嫩草影院精品99| 国产精品一区二区三区四区免费观看 | 赤兔流量卡办理| 插阴视频在线观看视频| 国产 一区精品| 日日摸夜夜添夜夜添小说| 欧美成人一区二区免费高清观看| 亚洲自拍偷在线| 中文字幕久久专区| 久久韩国三级中文字幕| 国产av在哪里看| 中文字幕久久专区| 美女内射精品一级片tv| 国产午夜精品久久久久久一区二区三区 | 亚洲中文字幕一区二区三区有码在线看| 免费看av在线观看网站| 亚洲精品粉嫩美女一区| 小说图片视频综合网站| 欧美丝袜亚洲另类| 亚洲自偷自拍三级| 白带黄色成豆腐渣| 夜夜夜夜夜久久久久| 国产av不卡久久| 在线a可以看的网站| 麻豆精品久久久久久蜜桃| 亚洲18禁久久av| 黄色日韩在线| 久久精品国产99精品国产亚洲性色| 亚洲精品粉嫩美女一区| 99视频精品全部免费 在线| 极品教师在线视频| 国产精品爽爽va在线观看网站| 国产一级毛片七仙女欲春2|