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

        ?

        基于響應式編程的手機可重構虛擬儀器

        2020-07-14 00:36:53謝道旺何嶺松高志強
        軟件導刊 2020年1期
        關鍵詞:測量技術虛擬儀器

        謝道旺 何嶺松 高志強

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

        關鍵詞:虛擬儀器:響應式編程;動態(tài)可重構;測量技術

        DOI: 10. 11907/rjdk.191197

        開放科學(資源服務)標識碼(OSID):

        中圖分類號:TP319

        文獻標識碼:A

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

        0 引言

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

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

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

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

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

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

        1 手機可重構虛擬儀器總體設計原理

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

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

        2 響應式設計

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

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

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

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

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

        2.2 虛擬儀器控件模型

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

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

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

        2.3 響應式控件通訊架構

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

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

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

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

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

        3 響應式編程腳本

        3.1 響應式編程腳本設計

        本文的響應式編程腳本是一種針對虛擬儀器重構任務設計的領域特定語言。本腳本語言設計目標是使虛擬儀器使用者能快速按照自己的意圖實現(xiàn)虛擬儀器搭建。由于虛擬儀器使用者的編程水平可能有限,因此語法設計應該盡量從簡。

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

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

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

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

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

        3.2 響應式編程腳本實現(xiàn)

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

        對于數(shù)據(jù)端口一對一綁定,以下分為響應式內核端與腳本解釋器端兩方面進行說明。

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

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

        3.2.2 數(shù)據(jù)端口表達式綁定關系

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

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

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

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

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

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

        4 響應式手機可重構虛擬儀器平臺

        本文提出的響應式手機可重構虛擬儀器平臺從邏輯上可分為3層,分別是交互層、內核層及腳本解釋層,如圖11所示。界面布局容器以及與用戶的交互邏輯。針對虛擬儀器的使用特點設計界面布局以及交互邏輯。

        內核層是可重構虛擬儀器的核心部分,該層負責控件管理、響應式數(shù)據(jù)端口管理,以及數(shù)據(jù)響應關系維護。其接受來自腳本層的控件實例化意圖、布局意圖以及數(shù)據(jù)關系聲明意圖,并將實例化控件添加到交互層。

        腳本解釋層是最底層的部分,該層的職責是解釋頁面腳本意圖,并將意圖傳遞給內核層。

        5 應用實例

        如圖12所示為一個聲音監(jiān)測儀器,其包含的儀器控件類型有:按鈕控件、麥克風控件、拖動條控件、FFT(快速傅里葉)控件、文本控件、數(shù)字顯示控件及波形顯示控件。其運行邏輯為:按鈕(圖中標號8)控制麥克風控件開關,拖動條控件(圖中標號5)控制麥克風數(shù)據(jù)增益倍數(shù);增益倍數(shù)通過數(shù)字顯示控件(圖中標號4)顯示,增益后的麥克風數(shù)據(jù)通過波形顯示控件(圖中標號6)顯示;增益的數(shù)據(jù)傳送到FFT控件(圖中標號2)后,將經(jīng)過FFT處理得到的頻譜繪制到波形顯示控件(圖中標號7)中;通過增益的波形數(shù)據(jù)進行聲強計算,將得到的聲強值顯示到數(shù)字顯示控件(圖中標號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”,“聲強(分貝)”,“” “” “” “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){

        ,,計算聲強函數(shù)

        }

        End

        Relation:

        mic.switch一>btn.value:

        t.in=>mic.data術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

        為了說明本文提出的可重構虛擬儀器的靈活性,以下以一個實際案例進行說明。圖12中標號3的數(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ù)關系的腳本是“dg.value=>>countDb( t.out)”,將該行腳本替換為“bg.value=>> countDb(t.out)”。替換以上兩行腳本,便可實現(xiàn)將聲強顯示替換為一個棒圖進行顯示,如圖13所示。

        6 結語

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

        參考文獻:

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

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

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

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

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

        [6]田航,何嶺松,高志強,等.基于構件的手機可重構虛擬儀器技術[J].計算機應用研究,2016,33(4):1106-1110.

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

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

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

        [10] 藺瑩,張引根,王珂,等.基于Android的健康監(jiān)護系統(tǒng)設計和開發(fā)[J].測控技術,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編寫原生移動應用 [ 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.

        基金項目:國家科技重大專項項目( 2015ZX04005007)

        作者簡介:謝道旺(1992-),男,華中科技大學機械科學與工程學院碩士研究生,研究方向為手機化移動測量儀器;何嶺松(1962-),男,博士,華中科技大學機械科學與工程學院教授、博士生導師,研究方向為工業(yè)測量與控制、計算機虛擬儀器技術、手機化移動測量儀器;高志強(1986-),男,華中科技大學機械科學與工程學院博士研究生,研究方向為數(shù)控加工優(yōu)化、遠程診斷。本文通訊作者:何嶺松。

        猜你喜歡
        測量技術虛擬儀器
        PCB 刻制機功能開發(fā)及在虛擬儀器實驗室建設中的應用
        電子制作(2017年13期)2017-12-15 09:00:26
        虛擬儀器及其在電工電子實驗中的應用
        電子制作(2017年1期)2017-05-17 03:54:33
        一種基于虛擬儀器的電控柴油機實驗臺的設計
        電子制作(2017年9期)2017-04-17 03:00:35
        測繪工程測量技術的發(fā)展
        基于數(shù)字測量技術在建筑工程測量中的應用研究
        復雜工況下的電磁性能測量技術
        虛擬儀器技術在農業(yè)裝備測控中的應用
        公路測量中基于CORS的高精度GPS測量技術探討
        GPS高程測量技術航道工程測繪中的應用研究
        礦山測量技術的創(chuàng)新思考
        国产一区二区丁香婷婷| 成人免费无遮挡在线播放| 国产精品视频免费播放 | 日韩精品一区二区三区含羞含羞草 | 嗯啊好爽高潮了在线观看| 娜娜麻豆国产电影| 300部国产真实乱| 中文字幕一区二区三区在线不卡| 亚洲日本视频一区二区三区| h视频在线免费观看视频| 情爱偷拍视频一区二区| 亚洲综合在线一区二区三区| 国产精品亚洲成在人线| 丰满少妇棚拍无码视频| 日本黄色特级一区二区三区| 中文字幕女优av在线| 亚洲色成人网站www永久| 一本之道高清无码视频| 亚洲国产福利成人一区二区 | 国产麻豆一区二区三区在| 久久精品国产99久久久| 青楼妓女禁脔道具调教sm | 国产电影一区二区三区| 欧美日韩亚洲国产精品| 高清国产亚洲va精品| 99亚洲女人私处高清视频| 久久精品国产亚洲av麻豆会员| 国产精品无码无片在线观看3d| 好男人视频在线视频| 绿帽人妻被插出白浆免费观看| 极品少妇人妻一区二区三区| 成人国产一区二区三区| 日日噜噜噜夜夜爽爽狠狠视频| 国产成人av综合色| 国产成人久久精品77777综合| 激情亚洲的在线观看| 久久综合伊人有码一区中文字幕| 亚洲欧洲av综合色无码| 最近最新中文字幕| 国产未成女年一区二区| 麻豆精品国产免费av影片|