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

    基于響應(yīng)式編程的手機(jī)可重構(gòu)虛擬儀器

    2020-07-14 00:36:53謝道旺何嶺松高志強(qiáng)
    軟件導(dǎo)刊 2020年1期
    關(guān)鍵詞:測(cè)量技術(shù)虛擬儀器

    謝道旺 何嶺松 高志強(qiáng)

    摘 要:測(cè)量技術(shù)對(duì)測(cè)量系統(tǒng)的需求具有多變性,在將手機(jī)作為手持便攜式測(cè)量設(shè)備的應(yīng)用背景下,手機(jī)APP傳統(tǒng)通過(guò)安裝包升級(jí)實(shí)現(xiàn)功能更改的方式不利于測(cè)量任務(wù)的快速展開。為了突破這一限制,對(duì)測(cè)量系統(tǒng)進(jìn)行平臺(tái)化開發(fā)。在測(cè)量系統(tǒng)平臺(tái)上,提供一系列可復(fù)用的虛擬儀器控件,并允許第三方控件以插件形式加載進(jìn)來(lái)?;陧憫?yīng)式編程,提出一種響應(yīng)式數(shù)據(jù)端口變量以及一種響應(yīng)式控件通訊架構(gòu)。設(shè)計(jì)響應(yīng)式編程腳本,平臺(tái)通過(guò)加載該腳本語(yǔ)言寫成的頁(yè)面腳本即可生成一個(gè)虛擬儀器頁(yè)面。編程腳本功能分為兩部分:一是聲明虛擬儀器控件并為其傳遞運(yùn)行參數(shù),二是描述控件間的數(shù)據(jù)響應(yīng)關(guān)系。通過(guò)采用響應(yīng)式編程方法,可以直接、清晰地描述控件之間的復(fù)雜數(shù)據(jù)響應(yīng)關(guān)系。

    關(guān)鍵詞:虛擬儀器:響應(yīng)式編程;動(dòng)態(tài)可重構(gòu);測(cè)量技術(shù)

    DOI: 10. 11907/rjdk.191197

    開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

    中圖分類號(hào):TP319

    文獻(xiàn)標(biāo)識(shí)碼:A

    文章編號(hào):1672-7800(2020)001-0123-07

    0 引言

    虛擬儀器技術(shù)是測(cè)量技術(shù)與計(jì)算機(jī)技術(shù)相融合而產(chǎn)生的一門技術(shù)[1],是指通過(guò)將傳統(tǒng)硬件測(cè)量?jī)x器軟件化,從而提高測(cè)量任務(wù)開展的方便性與靈活性,并降低測(cè)量成本。傳統(tǒng)基于PC的虛擬儀器發(fā)展已十分成熟,并且在各行業(yè)得到了廣泛應(yīng)用[2-5]。

    隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,智能手機(jī)已經(jīng)十分普及,而且隨著智能手機(jī)硬件性能越來(lái)越強(qiáng)大,使得在智能手機(jī)終端開展測(cè)量任務(wù)成為可能。目前已有不少學(xué)者對(duì)使用手機(jī)開展測(cè)量任務(wù)進(jìn)行了研究與探討[6-12],在實(shí)際應(yīng)用中也已有不少案例實(shí)現(xiàn)了通過(guò)手機(jī)開展測(cè)量任務(wù),例如應(yīng)用商店中的噪音測(cè)量?jī)x、指南針以及振動(dòng)測(cè)試儀器等。由于智能手機(jī)的便攜性,以及智能手機(jī)本身集成有藍(lán)牙、WiFi等無(wú)線傳輸方式,使得在智能手機(jī)上開展測(cè)量任務(wù)相比PC更加靈活與便捷。

    測(cè)量任務(wù)對(duì)虛擬儀器程序的需求是多變、動(dòng)態(tài)的,程序固化的虛擬儀器將難以滿足實(shí)際測(cè)量需求。如果針對(duì)不同測(cè)量任務(wù)都開發(fā)不同APP,則工作量過(guò)大,用戶往往也接受不了太多APP的下載安裝。實(shí)際上,不同測(cè)量程序所需的部分功能模塊是可以復(fù)用的,在不同測(cè)量任務(wù)中只需對(duì)這些模塊進(jìn)行動(dòng)態(tài)調(diào)整即可。

    在手機(jī)APP開發(fā)領(lǐng)域,為了應(yīng)對(duì)這種多變、動(dòng)態(tài)的業(yè)務(wù)場(chǎng)景,通常采用一種“平臺(tái)化”開發(fā)方法。例如Facbook的React Native[3]、阿里巴巴的Weex[4]等,都將APP作為一個(gè)系統(tǒng)級(jí)別的平臺(tái),然后通過(guò)編寫JS腳本的方式開發(fā)APP業(yè)務(wù)功能。由于APP的業(yè)務(wù)功能是通過(guò)加載腳本形式執(zhí)行的,因此在該平臺(tái)下可以通過(guò)在線下載腳本與資源實(shí)現(xiàn)業(yè)務(wù)功能的動(dòng)態(tài)更改,而無(wú)需更新APP。目前受到廣泛關(guān)注的小程序,也是基于相同思想。

    本文提出的手機(jī)可重構(gòu)虛擬儀器也是順應(yīng)“平臺(tái)化”思想,在平臺(tái)上提供一系列常用的測(cè)量模塊控件,然后通過(guò)撰寫腳本的形式即可將這些控件有機(jī)組織起來(lái),從而滿足不同的測(cè)量任務(wù)需求。對(duì)于平臺(tái)內(nèi)控件無(wú)法滿足的測(cè)量需求,第三方可以自行開發(fā)控件,通過(guò)插件形式加載到平臺(tái)內(nèi)。通過(guò)該解決方案,在安卓平臺(tái)上實(shí)現(xiàn)了虛擬儀器的動(dòng)態(tài)可重構(gòu),并可通過(guò)網(wǎng)絡(luò)遠(yuǎn)程下載腳本的方式實(shí)現(xiàn)虛擬儀器實(shí)例的獲取與更新。

    響應(yīng)式編程( Reactive Programming,RP)是為了實(shí)現(xiàn)復(fù)雜的事件響應(yīng)系統(tǒng)而提出的一種編程思想[15],目的是簡(jiǎn)化復(fù)雜事件響應(yīng)系統(tǒng)的開發(fā),從而避免“回調(diào)地獄”的繁瑣。響應(yīng)式編程是一種聲明式編程,其本質(zhì)上是對(duì)觀察者模式的高度封裝。例如在響應(yīng)式編程下編寫“a≥b+c”,并不是對(duì)a進(jìn)行賦值操作,而是進(jìn)行一種數(shù)據(jù)響應(yīng)關(guān)系的聲明。當(dāng)b或c的值發(fā)生變化時(shí),a值也會(huì)隨之發(fā)生變化,并保證a等于b加c的值。響應(yīng)式編程實(shí)現(xiàn)的主要方式是:搭建一種響應(yīng)式程序框架,然后通過(guò)一些簡(jiǎn)單的API或自定義腳本語(yǔ)言即可搭建出復(fù)雜的事件響應(yīng)系統(tǒng)。響應(yīng)式編程在不少領(lǐng)域已經(jīng)得到了成功應(yīng)用[16-20]。虛擬儀器的軟件部分本質(zhì)上也是一個(gè)事件響應(yīng)系統(tǒng),虛擬儀器內(nèi)部控件產(chǎn)生數(shù)據(jù)事件,與數(shù)據(jù)有聯(lián)系的控件作出相應(yīng)響應(yīng)。本文將響應(yīng)式編程應(yīng)用到虛擬儀器上,在簡(jiǎn)化虛擬儀器控件通訊模型的同時(shí),也增強(qiáng)了虛擬儀器控件間復(fù)雜數(shù)據(jù)關(guān)系的動(dòng)態(tài)重構(gòu)能力。

    1 手機(jī)可重構(gòu)虛擬儀器總體設(shè)計(jì)原理

    雖然測(cè)試系統(tǒng)的程序是多變的,但是系統(tǒng)包含的各種功能模塊往往是類似的,可以將這些功能模塊抽象為標(biāo)準(zhǔn)化的儀器控件,并對(duì)其進(jìn)行復(fù)用。將測(cè)試系統(tǒng)常用功能模塊封裝成一系列標(biāo)準(zhǔn)化控件,形成一個(gè)虛擬儀器控件庫(kù),在虛擬儀器平臺(tái)上提供給用戶使用。這些控件主要包含4大類,分別是:控制類控件(如按鈕開關(guān)、旋鈕等)、顯示類控件(如波形顯示控件、儀表盤、棒圖等)、數(shù)據(jù)處理類控件(如快速傅里葉、濾波、自相關(guān)等)以及硬件類控件(如各種數(shù)據(jù)采集硬件、通訊控件等)。用戶在進(jìn)行虛擬儀器開發(fā)時(shí),只需合理地將這些控件組織起來(lái),便可實(shí)現(xiàn)大部分功能需求。對(duì)于控件庫(kù)滿足不了的功能需求,可以自行開發(fā)符合儀器控件標(biāo)準(zhǔn)的控件并加載進(jìn)平臺(tái)使用。

    手機(jī)可重構(gòu)虛擬儀器總體設(shè)計(jì)原理如圖1所示。儀器控件組織過(guò)程便是虛擬儀器重構(gòu)過(guò)程.對(duì)儀器控件的組織包括兩方面,一是儀器控件布局,二是儀器控件之間的數(shù)據(jù)響應(yīng)關(guān)系。通過(guò)以上兩方面對(duì)儀器控件進(jìn)行組織,便可將儀器控件融合為一個(gè)有機(jī)整體,得到一個(gè)可運(yùn)行的虛擬儀器頁(yè)面。

    2 響應(yīng)式設(shè)計(jì)

    2.1 響應(yīng)式數(shù)據(jù)端口變量

    分析響應(yīng)式編程的實(shí)現(xiàn),最根本的要求是當(dāng)變量值發(fā)生改變時(shí),系統(tǒng)需要感知到數(shù)據(jù)改變事件的發(fā)生。在An-droid的開發(fā)語(yǔ)言Java中,數(shù)據(jù)變量類型并不存在這種特性,因此需要設(shè)計(jì)一種存在該特性且符合虛擬儀器控件之間通訊需求的變量類型。

    響應(yīng)式數(shù)據(jù)端口變量模型如圖2所示。響應(yīng)式數(shù)據(jù)端口把基本數(shù)據(jù)類型封裝到一層,便于進(jìn)行管理。將虛擬儀器可能使用的數(shù)據(jù)類型都考慮進(jìn)來(lái),封裝一系列數(shù)據(jù)類型,得到一系列數(shù)據(jù)類型的響應(yīng)式數(shù)據(jù)端口。封裝的數(shù)據(jù)類型包括Java的9種基本數(shù)據(jù)類型及其數(shù)組和二維數(shù)組,基本可以覆蓋所有虛擬儀器需要使用的數(shù)據(jù)類型。例如開關(guān)變量用到的boolean類型、信號(hào)數(shù)據(jù)用到的float數(shù)組和double數(shù)組、信息顯示用到的String類型、參數(shù)配置和類型選擇用到的int類型以及圖像信號(hào)用到的int二維數(shù)組等,這些數(shù)據(jù)類型都被響應(yīng)式數(shù)據(jù)端口的數(shù)據(jù)類型所覆蓋。

    在響應(yīng)式數(shù)據(jù)端口主要屬性中,有數(shù)據(jù)類型( DataType)、端口類型(PortType)、控件ID( Controlld)以及端口名( PortName)。響應(yīng)式數(shù)據(jù)端口的核心接口有兩個(gè),分別是getData接口和setD ata接口。最核心的設(shè)計(jì)是:在setData接口被調(diào)用時(shí),除內(nèi)部數(shù)據(jù)被改變外,還會(huì)自動(dòng)向系統(tǒng)發(fā)送數(shù)據(jù)改變事件。這里需要說(shuō)明的是,本文所說(shuō)的“發(fā)生數(shù)據(jù)改變”并不是指數(shù)據(jù)本身一定真的改變了,而是指setData接口被調(diào)用,數(shù)據(jù)被“試圖改變”,產(chǎn)生了數(shù)據(jù)流。

    考慮到虛擬儀器控件在實(shí)際使用這些響應(yīng)式數(shù)據(jù)端口時(shí),會(huì)按用途分為輸入端口與輸出端口,并且這兩種數(shù)據(jù)端口有不同行為特征,因此設(shè)置了一個(gè)屬性表征數(shù)據(jù)端口類型。當(dāng)控件獲取這些響應(yīng)式數(shù)據(jù)端口時(shí),需要表明控件本身的ID、端口名以及端口類型。

    2.2 虛擬儀器控件模型

    響應(yīng)式架構(gòu)下的儀虛擬器控件模型如圖3所示??丶鶕?jù)自身業(yè)務(wù)的數(shù)據(jù)通訊需要持有一些響應(yīng)式數(shù)據(jù)端口,并明確劃分出哪些是輸入端口,哪些是輸出端口??丶枰獙?shí)現(xiàn)的主要接口為數(shù)據(jù)響應(yīng)接口,該接口通過(guò)參數(shù)傳遞數(shù)據(jù)發(fā)生改變的數(shù)據(jù)端口名給控件。當(dāng)輸入數(shù)據(jù)端口的數(shù)據(jù)改變時(shí),即表明有數(shù)據(jù)流流入,此時(shí)系統(tǒng)會(huì)自動(dòng)調(diào)用控件的數(shù)據(jù)響應(yīng)接口,通過(guò)該接口觸發(fā)控件自身業(yè)務(wù)的運(yùn)行。業(yè)務(wù)運(yùn)行完成后,假設(shè)需要輸出結(jié)果,可以直接通過(guò)輸出端口進(jìn)行輸出。例如控制類控件、信號(hào)采集類控件等一些控件會(huì)有自主數(shù)據(jù)源,當(dāng)有新數(shù)據(jù)產(chǎn)生時(shí),直接通過(guò)輸出端口輸出即可。

    圖4為一個(gè)FFT(快速傅里葉)控件示意圖,該控件持有1個(gè)輸入端口、3個(gè)輸出端口。輸入端口輸入信號(hào)數(shù)據(jù)數(shù)組,3個(gè)輸出端口分別輸出信號(hào)經(jīng)過(guò)FFT處理后得到的實(shí)部數(shù)組、虛部數(shù)組和幅值數(shù)組。其在數(shù)據(jù)響應(yīng)接口中實(shí)現(xiàn)的邏輯為:當(dāng)有新信號(hào)輸入時(shí),對(duì)輸入數(shù)據(jù)進(jìn)行FFT處理,并對(duì)處理結(jié)果進(jìn)行輸出。

    又比如一個(gè)旋鈕控件,其只有唯一一個(gè)數(shù)據(jù)端口,也即旋鈕數(shù)值輸出端口,控件只需在旋鈕值發(fā)生改變時(shí)將新的旋鈕值輸送到該數(shù)據(jù)端口即可。

    2.3 響應(yīng)式控件通訊架構(gòu)

    虛擬儀器可以被歸結(jié)為一個(gè)數(shù)據(jù)流驅(qū)動(dòng)的響應(yīng)系統(tǒng),當(dāng)某個(gè)控件數(shù)據(jù)發(fā)生變化時(shí),變化會(huì)被傳播到與之相聯(lián)系的控件,控件會(huì)根據(jù)數(shù)據(jù)變化作出響應(yīng)。對(duì)于某些控件,可能會(huì)出現(xiàn)類似屏幕單擊事件之類的非數(shù)據(jù)事件,但此類事件也會(huì)轉(zhuǎn)換為數(shù)據(jù)變化事件驅(qū)動(dòng)虛擬儀器運(yùn)行。例如對(duì)一個(gè)開關(guān)按鈕的點(diǎn)擊會(huì)改變其代表開關(guān)狀態(tài)的變量,然后再由該變量值改變事件驅(qū)動(dòng)虛擬儀器運(yùn)行。這種非數(shù)據(jù)事件會(huì)被固定在單獨(dú)的控件上,在虛擬儀器重構(gòu)層面只需關(guān)心數(shù)據(jù)事件的響應(yīng)關(guān)系。

    響應(yīng)式控件通訊架構(gòu)如圖5所示,框架主要組成部分包括響應(yīng)式數(shù)據(jù)端口、虛擬儀器控件和響應(yīng)式內(nèi)核??丶钟械捻憫?yīng)式數(shù)據(jù)端口需要注冊(cè)到響應(yīng)式內(nèi)核中,由響應(yīng)式內(nèi)核進(jìn)行管理。

    響應(yīng)式編程腳本則負(fù)責(zé)構(gòu)建這些數(shù)據(jù)端口的數(shù)據(jù)關(guān)系,可以通過(guò)編程方式靈活地實(shí)現(xiàn)數(shù)據(jù)關(guān)系創(chuàng)建。每個(gè)數(shù)據(jù)端口可以映射成為一個(gè)數(shù)據(jù)變量,在響應(yīng)式編程腳本中可以將數(shù)據(jù)變量映射到這些數(shù)據(jù)端口上,然后使用這些變量進(jìn)行響應(yīng)式編程,也即聲明式編程,并對(duì)這些變量之間的數(shù)據(jù)關(guān)系進(jìn)行聲明。通過(guò)解釋執(zhí)行響應(yīng)式編程腳本,將編程腳本描述的數(shù)據(jù)端口之間的數(shù)據(jù)關(guān)系通過(guò)特定數(shù)據(jù)結(jié)構(gòu)保存下來(lái)。當(dāng)響應(yīng)式內(nèi)核感知到端口數(shù)據(jù)改變事件時(shí),響應(yīng)式內(nèi)核會(huì)對(duì)其進(jìn)行實(shí)時(shí)處理,以保證經(jīng)過(guò)處理之后數(shù)據(jù)端口之間滿足編程腳本所聲明的數(shù)據(jù)關(guān)系。

    虛擬儀器系統(tǒng)除要保證這些數(shù)據(jù)端口之間滿足特定數(shù)據(jù)關(guān)系外,還需要控件在數(shù)據(jù)輸入端口發(fā)生數(shù)據(jù)改變時(shí)作出響應(yīng),從而驅(qū)動(dòng)虛擬儀器運(yùn)行。因此,這些控件也需要被注冊(cè)到響應(yīng)式內(nèi)核中,由響應(yīng)式內(nèi)核進(jìn)行管理。這些控件需要統(tǒng)一實(shí)現(xiàn)一些標(biāo)準(zhǔn)接口,以便內(nèi)核對(duì)控件進(jìn)行運(yùn)行調(diào)度,其中最重要的接口即是數(shù)據(jù)響應(yīng)接口。對(duì)于被注冊(cè)到響應(yīng)式內(nèi)核的控件,當(dāng)其數(shù)據(jù)輸入端口數(shù)據(jù)發(fā)生改變時(shí),控件的數(shù)據(jù)響應(yīng)接口便會(huì)被響應(yīng)式內(nèi)核調(diào)用。

    在這種架構(gòu)設(shè)計(jì)下,對(duì)于控件開發(fā)者而言,在開發(fā)普通控件的基礎(chǔ)上,要想開發(fā)出適配該架構(gòu)的控件,只需根據(jù)通訊需要持有一些響應(yīng)式數(shù)據(jù)端口,然后使用這些數(shù)據(jù)端口進(jìn)行通訊即可;對(duì)于虛擬儀器使用者而言,只需通過(guò)一些簡(jiǎn)單的聲明式編程便可將快速搭建虛擬儀器,從而實(shí)現(xiàn)將更多工作交由系統(tǒng)處理,簡(jiǎn)化了開發(fā)者和使用者工作,契合IT開發(fā)的整體發(fā)展趨勢(shì)。

    3 響應(yīng)式編程腳本

    3.1 響應(yīng)式編程腳本設(shè)計(jì)

    本文的響應(yīng)式編程腳本是一種針對(duì)虛擬儀器重構(gòu)任務(wù)設(shè)計(jì)的領(lǐng)域特定語(yǔ)言。本腳本語(yǔ)言設(shè)計(jì)目標(biāo)是使虛擬儀器使用者能快速按照自己的意圖實(shí)現(xiàn)虛擬儀器搭建。由于虛擬儀器使用者的編程水平可能有限,因此語(yǔ)法設(shè)計(jì)應(yīng)該盡量從簡(jiǎn)。

    響應(yīng)式編程腳本總體設(shè)計(jì)如圖7所示。為了使編程語(yǔ)法簡(jiǎn)單明了,使用者容易上手,將腳本劃分為3大部分,分別為變量區(qū)、函數(shù)定義區(qū)以及關(guān)系聲明區(qū)。

    變量區(qū)的主要作用是實(shí)例化儀器控件,并用變量把控件實(shí)例和數(shù)據(jù)端口的引用保存下來(lái),方便后續(xù)使用。在實(shí)例化控件時(shí),通過(guò)參數(shù)列表為其傳遞運(yùn)行參數(shù),這些參數(shù)包括儀器控件本身所需的運(yùn)行參數(shù)和布局參數(shù)。如語(yǔ)句“varNamel=ControlName( paraml,param2,…)”是實(shí)例化一個(gè)控件名稱為“ControIName”的控件,并將其引用賦值到變量“varNamel";語(yǔ)句“varName4= varName2.portNane"是將控件“varName2”端口名為“portName”的數(shù)據(jù)端口引用賦值到變量“varName4”;語(yǔ)句“varName5=dataType(contor-lId,portName)”將數(shù)據(jù)類型為“dataType”、控件ID為“con-torlld”、端口名為“portName”的數(shù)據(jù)端口引用賦值到變量“varName5”??丶蘒D和端口名構(gòu)成的二元組可以唯一確定一個(gè)響應(yīng)式數(shù)據(jù)端口,若指定的數(shù)據(jù)端口不存在,或數(shù)據(jù)端口的數(shù)據(jù)類型與“dataType”不一致,將會(huì)報(bào)錯(cuò)。

    在函數(shù)定義區(qū)定義一些函數(shù),這些函數(shù)可以被用于實(shí)現(xiàn)數(shù)據(jù)端口之間的函數(shù)綁定關(guān)系。

    在關(guān)系聲明區(qū)聲明數(shù)據(jù)端口之間的數(shù)據(jù)綁定關(guān)系。如腳本中的“varName2.portNamel->varNamel.portNamel",是聲明簡(jiǎn)單的數(shù)據(jù)端口之間一對(duì)一的綁定關(guān)系;腳本中的“varName3.porNamel=>varName4+ varName5",是聲明數(shù)據(jù)端口之間一對(duì)多的表達(dá)式綁定關(guān)系。為了方便直接通過(guò)表達(dá)式表達(dá)較復(fù)雜的數(shù)據(jù)關(guān)系,該表達(dá)式除支持單值的四則運(yùn)算外,還需要支持?jǐn)?shù)組之間的運(yùn)算以及單值與數(shù)組之間的混合運(yùn)算,并內(nèi)置一些常用函數(shù)。然而,表達(dá)式對(duì)數(shù)據(jù)關(guān)系的描述能力終究是有限的,因此為了支持更復(fù)雜的數(shù)據(jù)關(guān)系描述,該腳本還支持?jǐn)?shù)據(jù)端口之間一對(duì)多的函數(shù)綁定關(guān)系。如腳本中的“varName3.portName2=>>fun-Name( varName4,varName5)”,是聲明數(shù)據(jù)端口之間一對(duì)多的函數(shù)綁定關(guān)系,具體數(shù)據(jù)關(guān)系可以在函數(shù)里定義。

    數(shù)據(jù)綁定規(guī)則為:綁定公式左邊對(duì)象是要綁定的對(duì)象,右邊對(duì)象是綁定的目標(biāo)對(duì)象,要綁定的變量所映射的數(shù)據(jù)端口必須是輸入端口。對(duì)于變量對(duì)變量的直接綁定,右邊變量所映射的數(shù)據(jù)端口必須是輸出端口,數(shù)據(jù)類型與左邊變量必須一致。對(duì)于表達(dá)式綁定,右邊表達(dá)式包含變量所映射的數(shù)據(jù)端口必須是輸出端口,表達(dá)式的運(yùn)行結(jié)果數(shù)據(jù)類型必須與左邊變量數(shù)據(jù)類型一致。對(duì)于函數(shù)關(guān)系綁定,函數(shù)實(shí)參列表包含變量所映射的數(shù)據(jù)端口必須是輸出端口,函數(shù)返回值類型與左邊變量數(shù)據(jù)類型需要一致。

    3.2 響應(yīng)式編程腳本實(shí)現(xiàn)

    3.2.1 數(shù)據(jù)端口一對(duì)一綁定

    對(duì)于數(shù)據(jù)端口一對(duì)一綁定,以下分為響應(yīng)式內(nèi)核端與腳本解釋器端兩方面進(jìn)行說(shuō)明。

    在響應(yīng)式內(nèi)核端,維護(hù)如圖8所示的一個(gè)Map數(shù)據(jù)結(jié)構(gòu),Map里的Key為輸出端口,Value綁定到該端口的輸入端口集合。當(dāng)某個(gè)輸出端口數(shù)據(jù)發(fā)生改變時(shí),需要迅速查找到與其綁定的輸入端口集,因此這里使用Map數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)綁定關(guān)系。當(dāng)虛擬儀器內(nèi)發(fā)生輸出數(shù)據(jù)端口的數(shù)據(jù)改變事件時(shí),響應(yīng)式內(nèi)核根據(jù)該數(shù)據(jù)端口查詢到與其綁定的輸入端口集合,然后對(duì)集合進(jìn)行遍歷,依次調(diào)用每個(gè)數(shù)據(jù)端口的設(shè)置值函數(shù),使其數(shù)據(jù)值等于與其綁定的端口,并調(diào)用其所屬控件的數(shù)據(jù)響應(yīng)接口。通過(guò)以上步驟,便可實(shí)現(xiàn)一種深度優(yōu)先的數(shù)據(jù)流驅(qū)動(dòng)運(yùn)行模式。

    在腳本解釋器端,有了上文所述的Map數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)數(shù)據(jù)端口一對(duì)一直接綁定的思路則變得很清晰。在腳本運(yùn)行時(shí),首先查詢到綁定目標(biāo)對(duì)象所映射的數(shù)據(jù)端口,接著在綁定關(guān)系Map里查詢到其綁定端口集合,然后查詢綁定對(duì)象所映射的數(shù)據(jù)端口,將其添加到綁定端口集合即可。

    3.2.2 數(shù)據(jù)端口表達(dá)式綁定關(guān)系

    將表達(dá)式映射成一種通用的表達(dá)式控件,總體方案如圖9所示。該控件在后臺(tái)工作,不在屏幕顯示。表達(dá)式控件將表達(dá)式的抽象語(yǔ)法樹保存下來(lái),表達(dá)式控件本身持有數(shù)據(jù)輸入與輸出端口,但數(shù)據(jù)端口的數(shù)目與類型不是固定的。在該表達(dá)式控件的響應(yīng)接口中,從數(shù)據(jù)輸入端口獲取數(shù)據(jù)作為表達(dá)式變量值,通過(guò)表達(dá)式引擎執(zhí)行表達(dá)式控件保存的語(yǔ)法樹,并將執(zhí)行結(jié)果通過(guò)輸出端口輸出。

    腳本解釋器運(yùn)行時(shí),通過(guò)分析表達(dá)式所引用的數(shù)據(jù)端口,可以得出表達(dá)式所包含的變量數(shù)目與類型,從而確定表達(dá)式控件輸入端口的數(shù)目與類型;然后再通過(guò)分析表達(dá)式的運(yùn)算結(jié)果類型,確定輸出端口類型;將表達(dá)式控件的輸入端口綁定到表達(dá)式所包含變量映射的數(shù)據(jù)端口,再將綁定到表達(dá)式的數(shù)據(jù)端口綁定到該控件的輸出端口即可。

    3.2.3 數(shù)據(jù)端口函數(shù)綁定關(guān)系

    腳本里包含的函數(shù)是為了借助通用編程語(yǔ)言的表達(dá)能力,實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)綁定。因此,假設(shè)自己設(shè)計(jì)該部分語(yǔ)言,需要實(shí)現(xiàn)一種通用語(yǔ)言的設(shè)計(jì)及其編譯器,工作量將十分巨大,而且無(wú)法調(diào)用已有函數(shù)。因此,本文編程腳本的函數(shù)部分選擇內(nèi)嵌Java函數(shù)的方式實(shí)現(xiàn)。

    Java是一門動(dòng)態(tài)性極高的語(yǔ)言,可以實(shí)現(xiàn)動(dòng)態(tài)編譯。動(dòng)態(tài)編譯是指在代碼運(yùn)行過(guò)程中直接編譯一段代碼并將其加載進(jìn)來(lái)運(yùn)行,實(shí)現(xiàn)所謂的“on the fly”。

    針對(duì)基于Java的動(dòng)態(tài)編譯技術(shù),本文對(duì)于函數(shù)綁定關(guān)系的實(shí)現(xiàn)思路如圖10所示。在腳本解釋器運(yùn)行時(shí),通過(guò)對(duì)Java函數(shù)的函數(shù)頭進(jìn)行語(yǔ)義分析,動(dòng)態(tài)生成一個(gè)與函數(shù)對(duì)應(yīng)的函數(shù)控件類代碼,每個(gè)函數(shù)對(duì)應(yīng)一個(gè)函數(shù)控件類,并通過(guò)動(dòng)態(tài)編譯加載到系統(tǒng)運(yùn)行。函數(shù)控件的輸入數(shù)據(jù)端口對(duì)應(yīng)函數(shù)參數(shù),輸出端口對(duì)應(yīng)函數(shù)返回值,數(shù)據(jù)處理業(yè)務(wù)即是該函數(shù)。將函數(shù)作為函數(shù)控件類的成員函數(shù),在函數(shù)控件類的數(shù)據(jù)響應(yīng)接口中,從數(shù)據(jù)輸入端口獲取數(shù)據(jù),作為函數(shù)的參數(shù)對(duì)函數(shù)進(jìn)行調(diào)用,然后將調(diào)用結(jié)果通過(guò)數(shù)據(jù)輸出端口輸出。

    4 響應(yīng)式手機(jī)可重構(gòu)虛擬儀器平臺(tái)

    本文提出的響應(yīng)式手機(jī)可重構(gòu)虛擬儀器平臺(tái)從邏輯上可分為3層,分別是交互層、內(nèi)核層及腳本解釋層,如圖11所示。界面布局容器以及與用戶的交互邏輯。針對(duì)虛擬儀器的使用特點(diǎn)設(shè)計(jì)界面布局以及交互邏輯。

    內(nèi)核層是可重構(gòu)虛擬儀器的核心部分,該層負(fù)責(zé)控件管理、響應(yīng)式數(shù)據(jù)端口管理,以及數(shù)據(jù)響應(yīng)關(guān)系維護(hù)。其接受來(lái)自腳本層的控件實(shí)例化意圖、布局意圖以及數(shù)據(jù)關(guān)系聲明意圖,并將實(shí)例化控件添加到交互層。

    腳本解釋層是最底層的部分,該層的職責(zé)是解釋頁(yè)面腳本意圖,并將意圖傳遞給內(nèi)核層。

    5 應(yīng)用實(shí)例

    如圖12所示為一個(gè)聲音監(jiān)測(cè)儀器,其包含的儀器控件類型有:按鈕控件、麥克風(fēng)控件、拖動(dòng)條控件、FFT(快速傅里葉)控件、文本控件、數(shù)字顯示控件及波形顯示控件。其運(yùn)行邏輯為:按鈕(圖中標(biāo)號(hào)8)控制麥克風(fēng)控件開關(guān),拖動(dòng)條控件(圖中標(biāo)號(hào)5)控制麥克風(fēng)數(shù)據(jù)增益倍數(shù);增益倍數(shù)通過(guò)數(shù)字顯示控件(圖中標(biāo)號(hào)4)顯示,增益后的麥克風(fēng)數(shù)據(jù)通過(guò)波形顯示控件(圖中標(biāo)號(hào)6)顯示;增益的數(shù)據(jù)傳送到FFT控件(圖中標(biāo)號(hào)2)后,將經(jīng)過(guò)FFT處理得到的頻譜繪制到波形顯示控件(圖中標(biāo)號(hào)7)中;通過(guò)增益的波形數(shù)據(jù)進(jìn)行聲強(qiáng)計(jì)算,將得到的聲強(qiáng)值顯示到數(shù)字顯示控件(圖中標(biāo)號(hào)3)中。

    以下是該儀器的省略腳本:

    Vars:

    mic=MicVI( "micl","10, 10, 30, 30","44100",¨4096”,“O”);

    fft= FftVI(“fftl”,“50, 10, 30, 30");

    label= LabelVI( "lbl”,“90,10,65,30”,“聲強(qiáng)(分貝)”,“” “” “” “2"):

    dg= DigitaIDisplayVI( "dgl", "160, 10, 100, 30”);

    lahel2=LabeIVI( "Ib2", "90. 50, 65, 30",“增益(倍數(shù))”,“”,“”,“”,“2”);

    dg2= DigitalDisplayVI(“dg2", "160, 50, 100, 30”);

    label3= LabelVI( "lb3”,“90. 85, 65, 30”,“增益控制”,“”,“”,“”,“2");

    sb= ScrollBarVI( "sh", "160, 85, 100, 30",“1, 10",“l(fā)”,“0.1”):

    wave= WaveVI2( "wavel”,“0,120, 300, 170",…,…,“”, "-20000, 20000",“5”);

    waveFft=WaveVI2( "wave2", "0, 295. 300, 170",…,“”,“”,“0.2000”,“5”);

    btn=ButtonVI( "btnl", "20, 470, 260, 35",“,“1,0,O”,“停止一開始”,“50”);

    t= DoubleArray(“tl”);

    End

    Functions:

    douhle countDb( double[] data){

    ,,計(jì)算聲強(qiáng)函數(shù)

    }

    End

    Relation:

    mic.switch一>btn.value:

    t.in=>mic.data術(shù)sb.value:

    dg2.value一>sb.value;

    fft.data一>t.out;

    wave.dx=>1.0/44100:

    wave.data一>t.out:

    waveFft.dx=>44100.0/4096:

    waveFft.data一>fft.amp;

    dg.value=>>countDb( t.out);

    End

    為了說(shuō)明本文提出的可重構(gòu)虛擬儀器的靈活性,以下以一個(gè)實(shí)際案例進(jìn)行說(shuō)明。圖12中標(biāo)號(hào)3的數(shù)字顯示控件對(duì)應(yīng)的實(shí)例化腳本為“dg=DigitaIDisplayVI( "dgl",“160,10,100,30")”,將該行腳本替換成“bg= BarGraphVI( "bgl",“160,2,135, 46",“”,“0_30_60_90_1 20", "0, 120",“0”.“5")”;描述該數(shù)字顯示控件數(shù)據(jù)關(guān)系的腳本是“dg.value=>>countDb( t.out)”,將該行腳本替換為“bg.value=>> countDb(t.out)”。替換以上兩行腳本,便可實(shí)現(xiàn)將聲強(qiáng)顯示替換為一個(gè)棒圖進(jìn)行顯示,如圖13所示。

    6 結(jié)語(yǔ)

    本文分析了手機(jī)虛擬儀器發(fā)展現(xiàn)狀以及響應(yīng)式編程特點(diǎn),將響應(yīng)式編程引入到虛擬儀器中,并在Android平臺(tái)加以實(shí)現(xiàn)。研究表明,響應(yīng)式編程適用于虛擬儀器?;陧憫?yīng)式編程的手機(jī)可重構(gòu)虛擬儀器,其控件通訊模型更為清晰,且對(duì)復(fù)雜數(shù)據(jù)關(guān)系的表達(dá)能力更強(qiáng)。但目前本文設(shè)計(jì)的虛擬儀器響應(yīng)式編程語(yǔ)言尚不夠完善,在后續(xù)研究中,可詳細(xì)考慮虛擬儀器實(shí)際應(yīng)用中的各種功能業(yè)務(wù)需求,設(shè)計(jì)更系統(tǒng)的腳本語(yǔ)法,從而進(jìn)一步提高可用性。

    參考文獻(xiàn):

    [1] 秦樹人.虛擬儀器——測(cè)試儀器從硬件到軟件[J].振動(dòng)、測(cè)試與診斷,2000,20(1):1-6.

    [2] 張新良,馬明全.基于虛擬儀器與PCI-171IU的三軸滑臺(tái)控制系統(tǒng)設(shè)計(jì)[J].軟件導(dǎo)刊,2018,17(1):102-104.

    [3] 趙寧社.遠(yuǎn)程數(shù)據(jù)采集的現(xiàn)場(chǎng)虛擬儀器控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].國(guó)外電子測(cè)量技術(shù),2018,37(6):130-134.

    [4]王銘華,李強(qiáng),陳虹麗,基于虛擬儀器的磁特性測(cè)量系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2018,35( 9):127-129.

    [5] 劉云龍,謝壽生,彭靖波,等.基于虛擬儀器的某型航空發(fā)動(dòng)機(jī)綜合檢測(cè)系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2018,38( Sl):260-265.

    [6]田航,何嶺松,高志強(qiáng),等.基于構(gòu)件的手機(jī)可重構(gòu)虛擬儀器技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2016,33(4):1106-1110.

    [7]吳玉葉,何嶺松,韋文姬,等.基于iOS的手機(jī)虛擬儀器瀏覽器的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2017,25(11):234-238.

    [8]尹愛軍,張泉,孫兵.手機(jī)移動(dòng)平臺(tái)的虛擬軸承診斷儀的開發(fā)及應(yīng)用[J].振動(dòng)、測(cè)試與診斷,2015,35(5):897-901.

    [9] 陸文英,胡海榮.基于手機(jī)多傳感器數(shù)據(jù)融合的測(cè)步長(zhǎng)算法[J].電子科技,2018,31( 12):9-13.

    [10] 藺瑩,張引根,王珂,等.基于Android的健康監(jiān)護(hù)系統(tǒng)設(shè)計(jì)和開發(fā)[J].測(cè)控技術(shù),2018,37(12):51-56.

    [11]MEREDITH S E, ROBINSON A, ERB P,et al.A mobile-phone-based breath carbon monoxide meter to detect cigarette smoking[J].Nicotine & Tobacco Research Official Journal of the Society for Re-search on Nicotine & Tobacco, 2014, 16( 6) : 766.

    [12]MURPHY E . KINC E A. Smartphone-hased noise mapping : integrat-ing sound level meter App data into the strategic noise mapping pro-cess[J]. Science of The Total Environment, 2016, 562 : 852-859.

    [13]React Native中文網(wǎng) .使用 JavaScript和 React編寫原生移動(dòng)應(yīng)用 [ EB/OL] .https : //reactnative.cn/.

    [14]WEEX. Weex is a framework for building performant mohile APPswith modern web technology[ EB/OL ] . http : //,veex.apache.org/.

    [15]MARCARA A , SALVANESCHI G. We have a DREAM : distributedreactive programming with consistency guarantees.[ C ] . ACM Interna-tional Conference on Distrihuted Event-based Systems . 2014.

    [16] BRESSON J. Reactive visual programs for computer-aided musiccomposition [Cl.Visual Languages and Human-Centric Computing.IEEE , 2014 : 141-144.

    [17]JEITSCH . WOLFCANG. Abstract categorical semantics for resource-ful functional reactive programming [J] . Journal of Logical and Alge- braic Methods in Programming, 2016, 85( 6) : 1177-1200.

    [18] FREDERIC B. Mimicking quantum mechanics using reactive pro-gramming [J]. International Journal of Modern Physics C , 2011 , 22( 6) : 635-648.

    [19]SCHATZ R. WIRTH C, HURNAUS D. Monaco-a domain-specificlanguage solution for reactive process control programming with hier-archical components [ J] .Computer Languages Systems & Structures ,2013 . 39( 3) : 67-94.

    [20]SALVANESCHl C. PROKSCH S, AMANN S. et al. On the positiveeffect of reactive programming on software comprehension : an empiri-cal study [J].IEEE Transactions on Software Engineering, 2017, 43( 12) : 1125-1143.

    基金項(xiàng)目:國(guó)家科技重大專項(xiàng)項(xiàng)目( 2015ZX04005007)

    作者簡(jiǎn)介:謝道旺(1992-),男,華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院碩士研究生,研究方向?yàn)槭謾C(jī)化移動(dòng)測(cè)量?jī)x器;何嶺松(1962-),男,博士,華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院教授、博士生導(dǎo)師,研究方向?yàn)楣I(yè)測(cè)量與控制、計(jì)算機(jī)虛擬儀器技術(shù)、手機(jī)化移動(dòng)測(cè)量?jī)x器;高志強(qiáng)(1986-),男,華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院博士研究生,研究方向?yàn)閿?shù)控加工優(yōu)化、遠(yuǎn)程診斷。本文通訊作者:何嶺松。

    猜你喜歡
    測(cè)量技術(shù)虛擬儀器
    PCB 刻制機(jī)功能開發(fā)及在虛擬儀器實(shí)驗(yàn)室建設(shè)中的應(yīng)用
    電子制作(2017年13期)2017-12-15 09:00:26
    虛擬儀器及其在電工電子實(shí)驗(yàn)中的應(yīng)用
    電子制作(2017年1期)2017-05-17 03:54:33
    一種基于虛擬儀器的電控柴油機(jī)實(shí)驗(yàn)臺(tái)的設(shè)計(jì)
    電子制作(2017年9期)2017-04-17 03:00:35
    測(cè)繪工程測(cè)量技術(shù)的發(fā)展
    基于數(shù)字測(cè)量技術(shù)在建筑工程測(cè)量中的應(yīng)用研究
    復(fù)雜工況下的電磁性能測(cè)量技術(shù)
    虛擬儀器技術(shù)在農(nóng)業(yè)裝備測(cè)控中的應(yīng)用
    公路測(cè)量中基于CORS的高精度GPS測(cè)量技術(shù)探討
    GPS高程測(cè)量技術(shù)航道工程測(cè)繪中的應(yīng)用研究
    礦山測(cè)量技術(shù)的創(chuàng)新思考
    18在线观看网站| 午夜福利在线免费观看网站| 老汉色av国产亚洲站长工具| 日韩在线高清观看一区二区三区| 亚洲,欧美精品.| 午夜福利,免费看| av在线老鸭窝| 在线观看一区二区三区激情| 飞空精品影院首页| 日韩中文字幕欧美一区二区 | 老鸭窝网址在线观看| 寂寞人妻少妇视频99o| 制服丝袜香蕉在线| 一级,二级,三级黄色视频| 久久精品国产亚洲av高清一级| 国产白丝娇喘喷水9色精品| 美女高潮到喷水免费观看| 伦精品一区二区三区| 亚洲成av片中文字幕在线观看 | 日本色播在线视频| 波多野结衣一区麻豆| 欧美日韩视频精品一区| 色婷婷av一区二区三区视频| 18禁裸乳无遮挡动漫免费视频| 精品久久蜜臀av无| 777米奇影视久久| 十分钟在线观看高清视频www| 亚洲欧洲日产国产| 免费久久久久久久精品成人欧美视频| 欧美中文综合在线视频| 男女国产视频网站| 国产精品欧美亚洲77777| 制服人妻中文乱码| 激情五月婷婷亚洲| 午夜免费鲁丝| 王馨瑶露胸无遮挡在线观看| 日日摸夜夜添夜夜爱| 久久青草综合色| 色视频在线一区二区三区| videossex国产| a 毛片基地| 纯流量卡能插随身wifi吗| 婷婷色av中文字幕| 国产在线一区二区三区精| 国产一区有黄有色的免费视频| h视频一区二区三区| 亚洲在久久综合| 女性生殖器流出的白浆| 夫妻性生交免费视频一级片| 亚洲一码二码三码区别大吗| 亚洲av日韩在线播放| 亚洲精品日韩在线中文字幕| 亚洲精品视频女| 大陆偷拍与自拍| 天天操日日干夜夜撸| 日本午夜av视频| av又黄又爽大尺度在线免费看| 夫妻午夜视频| 一区二区三区四区激情视频| 亚洲国产最新在线播放| 午夜激情av网站| 日韩欧美一区视频在线观看| 亚洲国产看品久久| 久久av网站| 女人久久www免费人成看片| 美女脱内裤让男人舔精品视频| 久久精品国产亚洲av高清一级| 国产成人精品久久久久久| 久久99一区二区三区| 这个男人来自地球电影免费观看 | 婷婷色麻豆天堂久久| 亚洲av国产av综合av卡| 十分钟在线观看高清视频www| 制服人妻中文乱码| 欧美日韩精品网址| 男人舔女人的私密视频| 亚洲国产毛片av蜜桃av| kizo精华| 欧美日韩一区二区视频在线观看视频在线| 麻豆av在线久日| 视频区图区小说| 一级片'在线观看视频| 亚洲 欧美一区二区三区| 欧美人与性动交α欧美软件| 人妻系列 视频| 久久精品久久久久久久性| 欧美97在线视频| 人人妻人人澡人人爽人人夜夜| 国产成人精品久久二区二区91 | 国产免费福利视频在线观看| 国产福利在线免费观看视频| 成人黄色视频免费在线看| 中文字幕色久视频| 在线观看美女被高潮喷水网站| 嫩草影院入口| 中文乱码字字幕精品一区二区三区| 狠狠精品人妻久久久久久综合| 日韩精品免费视频一区二区三区| 女性生殖器流出的白浆| 欧美精品人与动牲交sv欧美| 最新中文字幕久久久久| 国产极品粉嫩免费观看在线| 国产亚洲午夜精品一区二区久久| 色视频在线一区二区三区| 一级毛片我不卡| 国产精品久久久久久精品古装| 日日啪夜夜爽| 亚洲第一av免费看| 深夜精品福利| 天天躁夜夜躁狠狠久久av| 日本午夜av视频| 欧美精品国产亚洲| 啦啦啦在线免费观看视频4| 久久久久精品性色| 日韩中文字幕欧美一区二区 | 精品久久蜜臀av无| 啦啦啦中文免费视频观看日本| av不卡在线播放| 狠狠精品人妻久久久久久综合| 久热这里只有精品99| 午夜福利在线观看免费完整高清在| 久久精品久久久久久噜噜老黄| 大码成人一级视频| 国产视频首页在线观看| 国产成人a∨麻豆精品| 欧美精品亚洲一区二区| 久久久久久人妻| 少妇被粗大的猛进出69影院| 黑丝袜美女国产一区| 久久免费观看电影| 视频区图区小说| 久久综合国产亚洲精品| 热re99久久国产66热| 侵犯人妻中文字幕一二三四区| 欧美精品亚洲一区二区| 国产在线一区二区三区精| 深夜精品福利| 久久免费观看电影| 亚洲av.av天堂| 最近中文字幕高清免费大全6| 中文乱码字字幕精品一区二区三区| 亚洲国产欧美日韩在线播放| 一区二区日韩欧美中文字幕| 90打野战视频偷拍视频| 男人操女人黄网站| av一本久久久久| 午夜福利影视在线免费观看| 亚洲伊人色综图| 亚洲成人av在线免费| 亚洲熟女精品中文字幕| 国产成人精品婷婷| 久久韩国三级中文字幕| 久久人人爽人人片av| 丝袜喷水一区| 捣出白浆h1v1| 午夜福利网站1000一区二区三区| 少妇被粗大猛烈的视频| 成人18禁高潮啪啪吃奶动态图| 下体分泌物呈黄色| 一级毛片黄色毛片免费观看视频| 久久99蜜桃精品久久| 99久久中文字幕三级久久日本| 9色porny在线观看| 国产精品99久久99久久久不卡 | 亚洲三区欧美一区| 国产精品香港三级国产av潘金莲 | 少妇人妻精品综合一区二区| 午夜福利视频在线观看免费| 国产成人精品福利久久| 一区二区三区精品91| 亚洲内射少妇av| 91精品伊人久久大香线蕉| av不卡在线播放| 欧美成人午夜精品| 久久久国产欧美日韩av| 国产在线免费精品| 街头女战士在线观看网站| 一边亲一边摸免费视频| 毛片一级片免费看久久久久| 国产 精品1| 国产日韩欧美在线精品| 成年人免费黄色播放视频| 母亲3免费完整高清在线观看 | 日韩免费高清中文字幕av| 亚洲精品国产av蜜桃| 国产精品不卡视频一区二区| 亚洲精品aⅴ在线观看| 日本色播在线视频| 一区二区三区四区激情视频| 啦啦啦啦在线视频资源| 在线精品无人区一区二区三| 久久久久久久久久久久大奶| 成年女人毛片免费观看观看9 | 我的亚洲天堂| 一二三四在线观看免费中文在| 丁香六月天网| 亚洲av电影在线进入| av在线观看视频网站免费| 国产精品欧美亚洲77777| 国产在视频线精品| 亚洲av在线观看美女高潮| 久久精品国产亚洲av涩爱| 精品福利永久在线观看| www.精华液| 欧美日韩国产mv在线观看视频| 激情视频va一区二区三区| 男人添女人高潮全过程视频| 免费女性裸体啪啪无遮挡网站| 亚洲美女视频黄频| 99久久综合免费| 18禁观看日本| 亚洲在久久综合| 香蕉国产在线看| 伦理电影免费视频| 老司机亚洲免费影院| 天天影视国产精品| 欧美xxⅹ黑人| 色婷婷av一区二区三区视频| av国产精品久久久久影院| 中文字幕制服av| 大香蕉久久网| 中文字幕人妻熟女乱码| 国产1区2区3区精品| 妹子高潮喷水视频| 国产精品二区激情视频| av在线观看视频网站免费| 久久久精品94久久精品| 欧美日韩av久久| 国产成人午夜福利电影在线观看| 午夜日本视频在线| 欧美中文综合在线视频| 国产 精品1| 国产精品香港三级国产av潘金莲 | 最近的中文字幕免费完整| 成年女人在线观看亚洲视频| 叶爱在线成人免费视频播放| 搡女人真爽免费视频火全软件| 热re99久久国产66热| 亚洲国产精品国产精品| 90打野战视频偷拍视频| 国产精品秋霞免费鲁丝片| 国产高清国产精品国产三级| 丰满少妇做爰视频| 如何舔出高潮| 性高湖久久久久久久久免费观看| 搡女人真爽免费视频火全软件| 久久久久久久精品精品| 久久久久久人人人人人| videosex国产| 国产精品秋霞免费鲁丝片| 婷婷色综合www| av在线app专区| 美女脱内裤让男人舔精品视频| 国产乱人偷精品视频| 性高湖久久久久久久久免费观看| 一区二区av电影网| 在线观看免费高清a一片| 久久精品国产a三级三级三级| 成年人免费黄色播放视频| 少妇人妻 视频| 午夜老司机福利剧场| 国产日韩欧美在线精品| 永久免费av网站大全| 可以免费在线观看a视频的电影网站 | 久久毛片免费看一区二区三区| 亚洲av欧美aⅴ国产| 高清av免费在线| 欧美成人午夜精品| 久久久久精品人妻al黑| 最黄视频免费看| 黄色毛片三级朝国网站| 国产成人欧美| 成人亚洲精品一区在线观看| 99热网站在线观看| 在现免费观看毛片| 老女人水多毛片| 成年美女黄网站色视频大全免费| 国产一区二区在线观看av| 一本大道久久a久久精品| 欧美在线黄色| 大话2 男鬼变身卡| 97在线视频观看| 麻豆精品久久久久久蜜桃| 老汉色av国产亚洲站长工具| 黄片无遮挡物在线观看| 可以免费在线观看a视频的电影网站 | 久久这里只有精品19| 成人18禁高潮啪啪吃奶动态图| 中文字幕亚洲精品专区| 精品人妻熟女毛片av久久网站| 最新中文字幕久久久久| 一级毛片我不卡| 午夜福利视频在线观看免费| 国产成人精品久久久久久| 欧美精品av麻豆av| 久久久久久人人人人人| 狠狠婷婷综合久久久久久88av| 少妇的丰满在线观看| 亚洲国产精品成人久久小说| 久久久欧美国产精品| 久久精品国产自在天天线| 久久午夜福利片| 国产精品久久久av美女十八| 久久免费观看电影| 在线观看美女被高潮喷水网站| 亚洲国产欧美日韩在线播放| 亚洲av电影在线进入| 亚洲内射少妇av| 国产精品国产三级国产专区5o| 99国产精品免费福利视频| 精品国产一区二区久久| 久久久久精品性色| 亚洲男人天堂网一区| 中文字幕人妻熟女乱码| 我要看黄色一级片免费的| 国产午夜精品一二区理论片| 日本色播在线视频| 国产精品久久久久成人av| 久热这里只有精品99| 国产一区二区三区av在线| 嫩草影院入口| 国产精品国产av在线观看| 日日撸夜夜添| 久久精品夜色国产| 久久久久精品人妻al黑| 久久久久久伊人网av| 热99国产精品久久久久久7| 少妇被粗大的猛进出69影院| 青草久久国产| 91精品伊人久久大香线蕉| 国产免费又黄又爽又色| 超色免费av| 国产综合精华液| 18禁动态无遮挡网站| 欧美激情高清一区二区三区 | 国产亚洲午夜精品一区二区久久| 免费看av在线观看网站| 日韩,欧美,国产一区二区三区| 久久久久久伊人网av| www日本在线高清视频| 熟女av电影| 国产成人免费观看mmmm| 9热在线视频观看99| 国产成人午夜福利电影在线观看| 超色免费av| 少妇猛男粗大的猛烈进出视频| 国产色婷婷99| 欧美亚洲 丝袜 人妻 在线| 免费观看无遮挡的男女| 国产又爽黄色视频| 国产一区二区三区av在线| 亚洲精品国产av成人精品| 午夜福利,免费看| 99久久中文字幕三级久久日本| 在线免费观看不下载黄p国产| 99国产精品免费福利视频| av免费在线看不卡| 最近2019中文字幕mv第一页| 久久久久精品人妻al黑| 国产男人的电影天堂91| 亚洲精品在线美女| 亚洲经典国产精华液单| 一级毛片电影观看| 国产欧美日韩一区二区三区在线| 狠狠婷婷综合久久久久久88av| av天堂久久9| 999久久久国产精品视频| 午夜福利在线观看免费完整高清在| 丰满迷人的少妇在线观看| 亚洲图色成人| 这个男人来自地球电影免费观看 | 亚洲成人手机| 精品一品国产午夜福利视频| 日韩伦理黄色片| 老司机亚洲免费影院| 亚洲,欧美,日韩| 大片电影免费在线观看免费| 国产成人欧美| 午夜福利网站1000一区二区三区| 久久99热这里只频精品6学生| 久久人人97超碰香蕉20202| 国产女主播在线喷水免费视频网站| 最近中文字幕高清免费大全6| 精品视频人人做人人爽| a级毛片在线看网站| 午夜日韩欧美国产| h视频一区二区三区| 99香蕉大伊视频| 少妇 在线观看| 欧美激情高清一区二区三区 | 亚洲,一卡二卡三卡| 男人添女人高潮全过程视频| 九草在线视频观看| 亚洲欧洲国产日韩| a 毛片基地| 久久久久精品人妻al黑| 国产男女内射视频| 欧美 日韩 精品 国产| 99国产综合亚洲精品| 亚洲av电影在线观看一区二区三区| 十八禁高潮呻吟视频| 国产精品一国产av| 热99国产精品久久久久久7| 精品人妻熟女毛片av久久网站| 自拍欧美九色日韩亚洲蝌蚪91| 欧美日韩亚洲高清精品| 久久久久久久久久久久大奶| 春色校园在线视频观看| 欧美+日韩+精品| 亚洲综合色网址| 一级黄片播放器| 国产熟女欧美一区二区| 91在线精品国自产拍蜜月| h视频一区二区三区| 26uuu在线亚洲综合色| 久久精品夜色国产| 久久人妻熟女aⅴ| 午夜日韩欧美国产| 亚洲精品美女久久久久99蜜臀 | 久久毛片免费看一区二区三区| 色吧在线观看| 一区二区三区激情视频| 寂寞人妻少妇视频99o| 国产av国产精品国产| 80岁老熟妇乱子伦牲交| 国产成人91sexporn| 啦啦啦啦在线视频资源| 成人毛片a级毛片在线播放| 国产免费视频播放在线视频| 亚洲视频免费观看视频| 色吧在线观看| 丝袜在线中文字幕| 一级片免费观看大全| 99久久精品国产国产毛片| 岛国毛片在线播放| 久久午夜综合久久蜜桃| 精品国产一区二区三区四区第35| 精品国产乱码久久久久久小说| 亚洲欧美日韩另类电影网站| 亚洲第一区二区三区不卡| 啦啦啦在线免费观看视频4| a级片在线免费高清观看视频| 久久久久视频综合| 精品亚洲乱码少妇综合久久| 国产精品成人在线| 国产精品99久久99久久久不卡 | 最近最新中文字幕大全免费视频 | 日韩一本色道免费dvd| 婷婷色综合www| 国产探花极品一区二区| 成人影院久久| 一区二区日韩欧美中文字幕| 一本—道久久a久久精品蜜桃钙片| 久久久久久久国产电影| 如日韩欧美国产精品一区二区三区| 侵犯人妻中文字幕一二三四区| 久久人人爽人人片av| 国产成人一区二区在线| 午夜久久久在线观看| 伊人久久国产一区二区| 成人黄色视频免费在线看| 一区二区三区激情视频| 日韩av在线免费看完整版不卡| 在线 av 中文字幕| av.在线天堂| 亚洲婷婷狠狠爱综合网| 日韩,欧美,国产一区二区三区| 中国国产av一级| 久热这里只有精品99| 亚洲综合色网址| 一级黄片播放器| 欧美精品人与动牲交sv欧美| 一本久久精品| 国产成人精品在线电影| 久久人人爽av亚洲精品天堂| 人妻 亚洲 视频| 日本猛色少妇xxxxx猛交久久| 国产精品香港三级国产av潘金莲 | 国产精品不卡视频一区二区| 日韩av免费高清视频| 成年女人在线观看亚洲视频| 大片电影免费在线观看免费| 午夜影院在线不卡| 69精品国产乱码久久久| 少妇人妻精品综合一区二区| 亚洲欧美一区二区三区黑人 | 香蕉丝袜av| 一区二区三区乱码不卡18| 黄色一级大片看看| 免费观看性生交大片5| 免费在线观看完整版高清| 两个人看的免费小视频| kizo精华| 两个人看的免费小视频| 宅男免费午夜| 亚洲欧洲日产国产| 少妇被粗大的猛进出69影院| 亚洲精品国产一区二区精华液| 国产免费又黄又爽又色| 日韩三级伦理在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 久久久精品国产亚洲av高清涩受| 久久久久久人妻| 少妇人妻 视频| 自线自在国产av| 欧美bdsm另类| 亚洲国产欧美日韩在线播放| 亚洲色图 男人天堂 中文字幕| 国产亚洲一区二区精品| 这个男人来自地球电影免费观看 | 日韩一区二区三区影片| 一级,二级,三级黄色视频| 久久久久国产精品人妻一区二区| 丝袜人妻中文字幕| 亚洲欧美日韩另类电影网站| 亚洲av欧美aⅴ国产| www日本在线高清视频| 99精国产麻豆久久婷婷| 好男人视频免费观看在线| 90打野战视频偷拍视频| av卡一久久| 午夜福利在线免费观看网站| 免费观看性生交大片5| 捣出白浆h1v1| 在线观看免费高清a一片| 亚洲中文av在线| 亚洲色图综合在线观看| 九草在线视频观看| 毛片一级片免费看久久久久| 五月开心婷婷网| 久久国产亚洲av麻豆专区| 看十八女毛片水多多多| 一二三四中文在线观看免费高清| 9色porny在线观看| 国产伦理片在线播放av一区| 黑人欧美特级aaaaaa片| 欧美激情 高清一区二区三区| av天堂久久9| 国产精品不卡视频一区二区| 9色porny在线观看| 亚洲在久久综合| 啦啦啦在线免费观看视频4| av有码第一页| 热re99久久国产66热| 欧美最新免费一区二区三区| 国产免费一区二区三区四区乱码| 久久亚洲国产成人精品v| 国产一区二区 视频在线| 日韩在线高清观看一区二区三区| 久久久精品94久久精品| 亚洲精华国产精华液的使用体验| 成人18禁高潮啪啪吃奶动态图| 精品少妇黑人巨大在线播放| 观看美女的网站| 国产欧美亚洲国产| 91精品伊人久久大香线蕉| 久久久久久久久久人人人人人人| 亚洲精品国产av成人精品| 亚洲欧美一区二区三区黑人 | 亚洲第一区二区三区不卡| 免费日韩欧美在线观看| 国产福利在线免费观看视频| 欧美精品亚洲一区二区| 亚洲av国产av综合av卡| 国产无遮挡羞羞视频在线观看| av福利片在线| av在线app专区| 精品午夜福利在线看| 国产淫语在线视频| 伦理电影免费视频| 捣出白浆h1v1| 色播在线永久视频| 肉色欧美久久久久久久蜜桃| 下体分泌物呈黄色| 最新的欧美精品一区二区| 国产精品久久久久久精品古装| 欧美人与性动交α欧美精品济南到 | 美女国产高潮福利片在线看| 一级片免费观看大全| 啦啦啦啦在线视频资源| 最新中文字幕久久久久| av线在线观看网站| 久久久久视频综合| 考比视频在线观看| 天堂8中文在线网| 成年人免费黄色播放视频| 欧美日韩国产mv在线观看视频| 亚洲av欧美aⅴ国产| 三级国产精品片| 波多野结衣一区麻豆| 97在线人人人人妻| 精品一区在线观看国产| 免费大片黄手机在线观看| 亚洲欧美清纯卡通| 亚洲精品视频女| 欧美 日韩 精品 国产| 99热网站在线观看| 日韩视频在线欧美| 多毛熟女@视频| 精品人妻熟女毛片av久久网站| 午夜日韩欧美国产| 寂寞人妻少妇视频99o| 在线免费观看不下载黄p国产| 五月伊人婷婷丁香| av在线app专区| 97在线视频观看| 十八禁网站网址无遮挡| 精品国产国语对白av| 寂寞人妻少妇视频99o| 免费黄色在线免费观看| 成人黄色视频免费在线看| 久久久国产欧美日韩av| 久久久精品94久久精品| 国产精品二区激情视频| 精品少妇内射三级|