999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于iOS的手機虛擬儀器瀏覽器的設計

2017-12-15 00:53:38,,,
計算機測量與控制 2017年11期
關鍵詞:信號

,,,

(華中科技大學 機械科學與工程學院,武漢 430074)

基于iOS的手機虛擬儀器瀏覽器的設計

吳玉葉,何嶺松,韋文姬,高志強

(華中科技大學機械科學與工程學院,武漢430074)

為了動態調整手機端虛擬儀器的功能,提出了一種基于iOS平臺的手機虛擬儀器瀏覽器的設計方法;其主要原理是通過往瀏覽器中加載不同的虛擬儀器腳本,將瀏覽器變成不同的虛擬儀器;虛擬儀器的基本組成模塊是擁有多個輸入和輸出接口的控件,控件之間采用KVO模式進行組裝和通訊,并采用腳本描述組裝。所有控件類都繼承自UIView類,需要調用和重寫UIView的部分函數;信號發生顯示器的例子證明了虛擬儀器瀏覽器的可行性。

iOS平臺; 虛擬儀器瀏覽器; 控件; KVO模式

0 引言

虛擬儀器技術是指利用高性能的模塊化硬件,結合高效靈活的軟件來完成各種測試[1]。過去,虛擬儀器軟件僅存在于PC機上,例如NI公司開發的LabView和LabWindows/CVI[2]等。近些年來,智能手機的發展異常迅速,它的處理器性能越來越高端,根據2017年第一季度智能手機處理器性能排行榜,排名第一的是驍龍835處理器[3],主頻為1.9 GHz+2.45 GHz,并采用八核設計,不弱于一般的PC機處理器。并且,智能手機與外部進行通訊的方式也更加多樣化,既能通過有線方式例如USB、OTG等,也有藍牙、WiFi等無線方式,因此將虛擬儀器技術應用于手機端已具備了很好的硬件基礎。

在手機各大應用市場上,可以找到一些虛擬儀器軟件,比如Heart Rate這款心率測試軟件。它的硬件模塊是手機閃光燈,用手指遮住閃光燈,通過感知手指透光率的變化來間接測量心率,軟件的作用是根據透光率值計算心率并顯示給用戶。然而,這些虛擬儀器軟件都只擁有一種或者幾種特定的測量功能,如果想實現不同功能,只能再次安裝新的App,這既繁瑣也占用了更多的存儲空間,使手機運行速度減慢。為了改善這種狀況,本文在手機端設計了一個可以動態改變測量功能的虛擬儀器瀏覽器,借鑒了網頁瀏覽器的模式,以腳本的形式描述儀器,只要往瀏覽器中加載不同的虛擬儀器腳本,經瀏覽器解析后就能生成不同的虛擬儀器。對于虛擬儀器用戶,只需安裝一個軟件就能實現各種測量功能;對于虛擬儀器開發者,也不用再遵循編碼、編譯等復雜的軟件開發流程,只要編寫簡單的腳本就能開發出虛擬儀器。

目前,智能手機的主流操作系統有Android和iOS兩種,據相關調查顯示,2017年第一季度智能手機全球市場占有率,安卓和iOS的比例分別為86.1%和13.7%,這兩者幾乎霸占了智能手機操作系統的全部江山[4]。與Android相比,iOS的優點主要體現在兩方面:流暢性和安全性。流暢性而言,iOS的軟件與硬件的整合度非常高,使其分化大大降低,而Android則不是這樣,導致Android的碎片化很嚴重,手機經常卡頓甚至死機。安全性而言,iOS用戶只能通過App Store才能下載和安裝軟件,App Store的審核機制非常嚴格,許多惡意軟件都被拒之門外,Android用戶的軟件下載途徑則五花八門,安全性非常低[5]。基于以上優點,本文選擇在iOS系統上開發手機虛擬儀器瀏覽器。

1 虛擬儀器瀏覽器工作原理

虛擬儀器瀏覽器的工作原理如圖1所示。瀏覽器加載來自網絡、本地或者下位機的虛擬儀器腳本并對其解析后生成對應的虛擬儀器,三種腳本的具體加載方式如下所述。

圖1 虛擬儀器瀏覽器工作原理

1)網絡腳本:網絡腳本存儲在云端,例如百度云盤、阿里云服務器等,如果腳本的權限設置為允許其他用戶訪問,瀏覽器就可以通過網絡直接向腳本的存儲地址發送請求獲取腳本數據。

2)本地腳本:本地腳本存儲在虛擬儀器瀏覽器的應用文件夾中。iOS的應用文件夾稱為沙盒,所有非代碼文件都存儲在沙盒中,每個應用只能對自己的沙盒進行訪問。默認情況下,每個沙盒含有3個文件夾:Documents、Library和tmp,Documents一般存儲程序中建立的或在程序中瀏覽到的文件,iTunes備份和恢復時會包括此目錄,本地腳本就存儲在Documents文件夾中[6]。將瀏覽器的info.plist文件的“Application supports iTunes file sharing”屬性值設為YES,用戶就能通過iTunus直接對本應用的Documents文件夾進行操作,例如往Documents文件夾中添加腳本。

3)下位機腳本:下位機腳本存儲在硬件模塊例如sd卡中,正式測量開始前,硬件模塊的微控制器可以通過藍牙、WiFi等方式將腳本發送給虛擬儀器瀏覽器。

2 虛擬儀器瀏覽器實現方法

虛擬儀器的基本組成模塊是控件,控件是具有某種功能的獨立模塊,把多個控件按照一定的邏輯順序組裝好后,就能形成一個完整的虛擬儀器。下文將圍繞控件介紹虛擬儀器瀏覽器的實現方法。

2.1 iOS的KVO機制

控件之間的通訊基于觀察者模式,觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象在狀態上發生變化時,會通知所有觀察者,使它們能夠更新自己或者做出相應的一些動作[7]。iOS的觀察者模式實現方式有Notification(通知)和KVO(Key-Value Observing,鍵值觀察)兩種,Notification發送的通知僅以名字標識,因此不同對象的對外通知必須取不同名字,KVO的通知則通過發送者和屬性共同標識,不必給每個通知取特定名字,為了簡化取名步驟,本文采用了KVO機制[8]。KVO的工作原理是:對象B觀察對象A的屬性N,當屬性N由值1變為值2時,A會發送通知給B,告訴它屬性N的新值。KVO有兩種通知觸發方法,分別是自動通知和手動通知,自動通知由系統自動觸發,手動通知則需要手動書寫代碼發出通知,但手動通知更加靈活,可以自由決定發送通知的時間和方式,瀏覽器的控件關系并沒有特別復雜,因此可采用自動通知的方法。本文所有控件類都間接繼承自iOS的根類NSObject,NSObject已經實現了KVO機制,控件類只需要調用KVO的相關函數,就能使用它。使用KVO分三個步驟:(1)被觀察者注冊觀察關系;(2)觀察者實現通知送達自身時的回調方法;(3)被觀察者移除觀察關系。

2.2 基于KVO的虛擬儀器控件化裝配模型

2.2.1 支持KVO的多輸入多輸出控件模型

KVO機制的觀察粒度是屬性,一個對象能夠觀察多個對象的多個屬性,它的屬性也能被多個對象觀察。因此,每個控件可以擁有多個輸入接口和多個輸出接口,每個輸入接口對應一個觀察的屬性,每個輸出接口對應一個自身對外屬性。控件觀察的所有屬性中的任何一個屬性值發生變化,都會收到擁有此屬性的對象發送的通知,同樣,它的任何一個對外屬性值變化時,也會給觀察此屬性的所有控件發送通知。

2.2.2 虛擬儀器控件裝配原理

利用輸入輸出接口可以實現控件之間的裝配,每個輸出接口都對應一個自身對外屬性,將被觀察控件的輸出接口與觀察者控件的接收此屬性的輸入接口連接就能實現裝配。由于KVO是一種一對多關系,因此一個輸出接口可能會連接多個輸入接口,但每個輸入接口只能連接它所觀察屬性的輸出接口。假設控件B、C都觀察控件A的屬性a,那么A的屬性a輸出接口與B、C的接收屬性a的輸入接口相連。如上文所述,使用KVO有三步,第一步是注冊觀察關系,實質就是連接輸入輸出接口,KVO注冊函數是-(void)addObserver:(NSObject*)observer forKeyPath:(NSString*)keyPath options:(NSKeyValue-ObservingOptions)options context:(nullable void*)context,此函數由被觀察控件調用,其中observer是觀察控件,keyPath是被觀察屬性,被觀察控件調用一次此函數,相當于連接了一個輸入和一個輸出接口。

2.3 控件裝配描述方法

虛擬儀器瀏覽器采用腳本作為描述控件裝配的工具,腳本語言選擇XML(Extensible Markup Language,可擴展標記語言)。XML文件由文檔說明和根元素組成,根元素只有一個,但根元素里面可以包含若干子元素,子元素間相互獨立[9],每個子元素描述一個控件,若干控件子元素集結在一起就組裝成一個完整的虛擬儀器腳本,每個控件的通用描述格式如下所示。

ControlName代表控件類名,ID和Rect是每個控件必須具備的屬性,ID用于區別不同控件,Rect表示控件在虛擬儀器界面中的布局位置和高寬,Input是輸入屬性,Output是輸出屬性,在某些虛擬儀器中,有的控件可能不受其他控件狀態影響,可以省略其輸入屬性,有的控件可能沒被其他控件觀察,可以省略其輸出屬性,其它屬性根據控件種類不同變化,下面一段腳本描述了一個麥克風控件。

Input的內容包括被觀察控件ID、被觀察屬性和本控件對應屬性,Output僅包含本控件的對外屬性。假設控件A的屬性a被控件B觀察,且B的屬性b與之相關,則A的Output中對外屬性為屬性a,B的Input中被觀察控件ID為A的ID,被觀察屬性為屬性a,本控件對應屬性為屬性b。根據麥克風控件的Input屬性,它有五個輸入接口,分別對應自身的switch(啟停)、fs(采樣頻率)、bit(采樣位數)、gain(音頻信號增益)以及length(音頻信號輸出長度)屬性;根據Output屬性,它只有一個輸出接口,對應自身的audiodata(音頻數據)屬性。

2.4 基于UIView的控件定義

iOS的開發平臺Xcode已經為開發者提供了一些常用的控件,例如標簽、按鈕等,但它們相互獨立,而虛擬儀器瀏覽器的所有控件必須遵循相同的接口原則,這樣才能相互通信。為了統一控件的開發方法,提高開發效率,本文所有控件類都繼承自基礎視圖類UIView,不會在Xcode已有控件類的基礎上開發。UIView表示屏幕上的一塊矩形區域,它負責渲染這片區域的內容并且響應該區域內發生的觸摸事件。每個控件都包括控件ID、位置坐標、高寬度、被觀察控件對象數組(observedControls)、被觀察屬性數組(observedProperties)和自身對應屬性數組(correspondingProperties)這些通用屬性,還包括一些專有屬性。每個控件還要定義一個賦值函數,其作用是根據控件腳本中的屬性值給實際對應的屬性賦值,除了自定義函數外,控件類還需要重寫和調用UIView的部分函數,如表1所示。

表1 控件類重寫和調用函數

2.5 滑動條控件設計實例

對于滑動條控件,用戶可以拖動滑塊位置調節滑動條的輸出值,它也能根據外部傳進來的值設定滑塊位置,因此滑動條控件的輸入接口和輸出接口都需要實現。除了通用屬性外,滑動條控件還包括minValue (輸出下限值,滑塊位于最左端)、maxValue(輸出上限值,滑塊位于最右端)、value(輸出值)和position(滑塊位置,取值范圍0到1)四個專有屬性。滑動條控件只有一個輸入接口,對應的自身屬性是position,這個輸入接口的實現如下所示。

-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)object change:(NSDictionary*)change context:(void*)context{

@synchronized(self){//給本控件上鎖,防止線程沖突

NSString* property;//本控件對應屬性

for(inti=0;i<[observedControls count];i++){

if(object==[observedControlsobjectAtIndex:i]&&keyPath==[observedPropertiesobjectAtIndex:i]){

property==[correspondingProperties objectAtIndex:i];break;

}

}

id newValue=[change objectForKey:@”new”]//被觀察屬性的新值

if([property isEqualToString:@”position”]){//對應position屬性的輸入接口

position=[newValuedoubleValue];

...//根據position計算滑塊坐標,重新繪制外形

}

}

}

在用戶開始對滑塊進行拖動時,系統會自動進入-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event函數中,需要重寫這個函數。

先根據用戶觸摸點坐標計算value的值,再調用-(void)setValue:(id)value forKeyPath:(NSString*)keyPath函數對value屬性賦值,這樣系統就會感知到value的變化,自動給所有觀察value屬性的控件發送通知,實現value屬性的輸出接口,輸出接口實現如下所示。

-(void)touchesBegan:(NSSet*)touches withEvevt:(UIEvent*)event{

UITouch* touch=[touches anyObject];

CGPoint point=[touch locationInView:self];

value=minValue+(maxValue-minValue)*point.x/width;//通過觸摸點坐標計算滑塊輸出值

[self setValue:[NSNumbernumberWithDouble:value]forKeyPath:@”value”];//實現value的輸出接口

}

3 虛擬儀器瀏覽器應用實例

虛擬儀器瀏覽器是基于iOS系統開發的,目前只有iPhone系列手機使用iOS操作系統,本文以iPhone5s作為試驗手機。打開應用后,首先進入瀏覽器主界面,如圖2(a)所示,主界面分為六個欄目,依次是瀏覽器介紹、藍牙通訊、WiFi通訊、網絡虛擬儀器庫、本地虛擬儀器庫以及下位機虛擬儀器庫,其中,點擊藍牙通訊和WiFi通訊會進入藍牙和WiFi的設置界面;點擊網絡虛擬儀器庫,將彈出網絡腳本網址輸入框;點擊本地虛擬儀器庫,會彈出列表顯示沙盒中所有腳本文件;點擊下位機虛擬儀器庫,瀏覽器向已連接的下位機請求腳本數據。以加載本地腳本為例,選擇本地虛擬儀器庫,如圖2(b)所示,選擇其中一個儀器腳本,然后選擇對腳本的操作,如圖2(c)所示,點擊生成儀器,就能對腳本進行解析生成虛擬儀器界面。以信號發生顯示器為例,驗證虛擬儀器瀏覽器的可行性。

圖2 虛擬儀器瀏覽器界面

工程實驗中常用到信號發生器和示波器,信號發生器可以產生多種類型的信號,示波器則負責顯示輸入的信號波形,本文將這兩種裝置結合在一起,設計了一個信號發生顯示器。它由8個控件組成:按鈕控件1、多聯按鈕控件2、數字調節鈕控件3、標簽控件4和6、滑動條控件5、信號發生器控件7以及示波器控件8。工作原理是:用戶點擊按鈕,按鈕狀態改變,會發送通知給信號發生器,啟動或停止發生器的工作,發生器工作時,每隔固定時間就生成一定幅值、頻率、相移的信號數據,用戶通過點擊多聯按鈕可以改變產生的信號類型,點擊數字調節鈕改變信號幅值,拖動滑動條的滑塊改變信號頻率,兩個標簽則負責顯示滑動條的上下限值,不參與儀器運行,信號波形由示波器的通道1顯示,當發生器的信號數據改變時,會發送通知給示波器,使之更新顯示的波形。下面是信號發生顯示器的簡化腳本,圖3是它的運行界面。

圖3 信號發生顯示器運行界面

4 結束語

本文分析了當前智能手機的發展狀況以及虛擬儀器技術在手機端的應用現狀,在比較了iOS和Android的優缺點之后,提出了一種基于iOS的手機虛擬儀器瀏覽器的設計方法。虛擬儀器瀏覽器以腳本為儀器載體,大大降低了虛擬儀器開發者在手機端開發虛擬儀器的難度,同時也提高了虛擬儀器用戶的使用體驗。

[1] 伍星華,王旭.國內虛擬儀器技術的應用研究現狀及展望[J].現代科學儀器,2011(4):112-116.

[2] 崔紅梅,麻碩士,裴喜春,等.虛擬儀器及其軟件開發平臺LabVIEW與LabWindows/CVI[J].內蒙古農業大學學報(自然科學版),2004,25(1):87-90.

[3] 白沛然.魯大師公布第一季度處理器TOP20:驍龍835奪冠[EB/OL].http://www.pcpop.com/doc/3/3966/3966133.shtml,2017.

[4] 王彥恩.2017Q1蘋果iOS系統份額降1.1%安卓漲2%[EB/OL].http://mobile.zol.com.cn/640/6407752.html, 2017.

[5] 孫曉文.iOS與Android操作系統的優缺點比較[J].無線互聯科技,2013(12):51.

[6] 趙 力.細數iOS上的那些安全防護[J].計算機與網絡,2016,42(17):50-51.

[7] 單丹丹,韓 冬.Android源碼中觀察者模式的運用[J].電腦知識與技術,2017(2):68-69.

[8] 關東升.iOS開發指南:從零基礎到App Store上架(第3版)[M].北京:人民郵電出版社,2015.

[9] 賈福林,王國仁,于 戈.基于DOM的XML數據庫的索引技術研究[J].計算機研究與發展,2004,41(1):175-186.

DesignofMobileVirtualInstrumentBrowserbasedoniOS

Wu Yuye, He Lingsong,Wei Wenji,Gao Zhiqiang

(Huazhong University of Science and Tecnology School of Mechanical Science &Engineering , Wuhan 430074, China)

In order to adjust functions of mobile virtual instruments dynamically,amobile virtual instrument browser based on iOSplatformhas been proposed. The principle is to turn thebrowser into differentvirtual instruments by loading different virtual instrument scriptsintoit.Avirtual instrument consists of several controls with many input and output interfaces.The assembly and communication of controls are based on KVO,and scripts are used to describe the assembly. All control classes inherit from UIView class and need to call and override a part of UIViewfunctions.The feasibility of the virtual instrument browser has been demonstrated by a signal generating-and-displaying instrument.

iOS platform; virtual instrument browser;control;KVO model

2017-07-14;

2017-09-14。

國家科技重大專項“高檔數控系統關鍵共性技術創新能力平臺(二期)”(2015ZX04005007)。

吳玉葉(1993-),女,湖南岳陽人,碩士研究生,主要從事手機虛擬儀器領域的研究。

何嶺松(1962-),男,四川成都人,教授,博導,主要從事工業測量控制、虛擬儀器技術領域的研究。

1671-4598(2017)11-0234-05

10.16526/j.cnki.11-4762/tp.2017.11.060

TP311.52

A

猜你喜歡
信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7個信號,警惕寶寶要感冒
媽媽寶寶(2019年10期)2019-10-26 02:45:34
孩子停止長個的信號
《鐵道通信信號》訂閱單
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
基于Arduino的聯鎖信號控制接口研究
《鐵道通信信號》訂閱單
基于LabVIEW的力加載信號采集與PID控制
Kisspeptin/GPR54信號通路促使性早熟形成的作用觀察
主站蜘蛛池模板: 精品福利网| 欧美成人综合在线| 波多野结衣视频网站| 热这里只有精品国产热门精品| 67194成是人免费无码| 四虎精品国产AV二区| 中文字幕调教一区二区视频| 日韩在线成年视频人网站观看| 久久99精品久久久大学生| 一本大道东京热无码av| a级毛片在线免费| 亚洲中文字幕在线精品一区| 国产精品毛片在线直播完整版| 国产91视频免费| 夜夜高潮夜夜爽国产伦精品| 精品無碼一區在線觀看 | 欧美自拍另类欧美综合图区| 免费无码在线观看| 亚洲自拍另类| 亚洲系列中文字幕一区二区| 99久久精品国产自免费| 国产无码网站在线观看| 幺女国产一级毛片| 亚洲精品自在线拍| 久久永久免费人妻精品| 久久久国产精品免费视频| 中日韩一区二区三区中文免费视频| 亚洲黄色高清| 久青草国产高清在线视频| 国产aⅴ无码专区亚洲av综合网| 伊人五月丁香综合AⅤ| 欧美狠狠干| 久久9966精品国产免费| 精品综合久久久久久97超人| 91午夜福利在线观看| 国产精品亚洲а∨天堂免下载| 国产欧美在线观看一区| 国产福利小视频高清在线观看| 国产又粗又猛又爽视频| 国产高清无码第一十页在线观看| 国产人人乐人人爱| 久久毛片网| 亚洲第一视频网站| 中文字幕日韩欧美| 欧亚日韩Av| 手机看片1024久久精品你懂的| 国产成人h在线观看网站站| 日本久久网站| 亚洲精品你懂的| 亚洲精品卡2卡3卡4卡5卡区| 国产理论一区| 欧美一级专区免费大片| 国产成人a毛片在线| 九色在线视频导航91| 国产女人在线| 日韩在线视频网站| 亚洲国产日韩欧美在线| 亚洲国产天堂久久综合226114| 国产18在线播放| 欧洲欧美人成免费全部视频| 亚洲天堂网站在线| 色天天综合久久久久综合片| 亚洲日本韩在线观看| 免费一级毛片在线观看| 国产后式a一视频| 欧美日本一区二区三区免费| 很黄的网站在线观看| 尤物在线观看乱码| 国产本道久久一区二区三区| 亚洲成人www| 国产在线八区| 欧美中文字幕在线二区| 丁香亚洲综合五月天婷婷| 国产成人h在线观看网站站| 亚洲中文字幕23页在线| 国产波多野结衣中文在线播放| 色香蕉影院| 免费毛片在线| www.91在线播放| 亚洲天堂日韩av电影| 亚洲综合日韩精品| 麻豆国产精品视频|