馬玉杰,程永強,郝潤芳
(太原理工大學信息與計算機學院,山西晉中 030600)
磁彈性傳感器是一新型生物傳感器,它是根據磁彈性效應建立起來的,即磁致伸縮效應,它的測量通過諧振檢測來實現。在磁彈性材料中加交變磁場時,材料會發生磁致伸縮與共振現象,反映出待測量受到的應力以及負載質量等參數的變化。磁彈性傳感器以其靈敏度高、成本低、非接觸測量和無源性等優點引起了人們的廣泛關注,在很多領域都有良好的發展前景,如生物檢測、食品安全、環境監測以及無損檢測等[1]。
國外研究磁彈性傳感器檢測設備相對于中國起步要早一些。前期的檢測裝置大部分應用于網絡分析儀、鎖相放大器、頻譜分析儀和阻抗分析儀等成型儀器。不過這些設備不僅體型笨重而且價格高昂,所以很難應用于實際[2]。經過深入研究,現在有了獨立的檢測平臺。然而這些儀器基本上都是針對單個檢測應用而設計研發,所以應用的范圍具有局限性,當需求變化時,就不得不重新開發設備。對于磁彈性傳感器的研究,我國起步相對較晚,利用國外研究直接進入用獨立儀器檢測的研究與應用,儀器大多數都是為了某一種類型或是某一種特性的檢測需求定向設計。所以應用范圍有局限性,當需求發生改變,只能重新設計,時間和資金消耗加大。為解決以上問題,對基于阻抗測量法的高頻磁彈性傳感器諧振頻率檢測系統進行優化設計,讓磁彈性傳感器位于交流的激勵磁場中,由于固定的直流偏置磁場發生的共同作用,磁彈性傳感器會因為磁致伸縮效應產生共振現象,偏置磁場在清除磁致伸縮材料的倍頻效應時,負載質量影響磁彈性材料的應變特征發生共振變化,此時磁場對變化進行調整,因此用多頻率激勵信號驅動線圈,能使檢測儀得到準確有效的結果。根據以上原理設計并完成一種便攜可靠的高頻磁彈性傳感器檢測儀,此檢測儀成本低、精度高、功耗低、抗干擾性強。但是獲取該檢測儀所測得的數據信息還是需要工作人員親臨檢測現場,需要消耗較多的時間和精力,因此文中設計并開發了一款針對此磁彈性傳感器檢測儀的Android 系統手機端上位機軟件。
移動設備便攜、靈活、高效,因此得到人們的青睞。在今天發展迅速的手機市場上,Android 手機憑借著其良好的性能和系統的持續更新,擁有了非常龐大的用戶群體[3-5]。為檢測生物樣本的磁彈性傳感器檢測儀設計和開發的手機軟件,可以使工作人員解決傳統的個人電腦笨重、攜帶不便等問題,通過藍牙通信接收實時數據,在移動終端顯示下位機檢測到的數據信息及曲線圖[6],使檢測結果更清晰直觀,且操作簡單、使用方便。
該軟件基于Android 系統開發,利用Android Studio 當作開發平臺、運用Java 開發語言進行程序開發,使用Android 模擬器和Android 手機來調試系統。
Android Studio 是一個Android 開發環境,有集成的Android 軟件開發工具,能夠用它來進行軟件的開發以及調試[7-8]。
Android Stuido 具有下面幾個優勢:
1)由谷歌發行,為Android 系統開發量身打造,基于IntelliJ IDEA的IDE 轉換而來。
2)速度很快,Eclipse 有啟動、響應慢以及內存占據問題等缺點,而且時常卡死,Studio 則在各種方面都比Eclipse 更出色。
3)UI 界面很美觀,而且操作更加智能,具有提示補全的功能,這個特性對開發人員來說具有重要的意義,此外還可以智能保存,使得效率得到大大提高。
4)整合了Gradle 構建工具,Studio 支持Gradle,它擁有Ant 與Maven的優勢,因此它的配置、編譯和打包都很優秀;
5)UI 編輯器的功能很強大,特別智能,不止擁有Eclipse+ADT的優勢,而且還能實時預覽幾個設備,Android Studio 擁有大量不同大小的屏幕和不同大小的分辨率,開發人員在工作的時候可以看見自己此時正在編寫的程序在各個不同分辨率和尺寸的屏幕里的體現效果,方便程序員及時作出修改和調整。
6)內置終端,支持各類插件,如Git、Markdown、Gradle 等,需要時直接搜索下載。
7)有一個完美集成版本的控制系統,安裝時自身攜帶熱門的版本控制系統,如GitHub、Git、SVN等,能夠直接對項目進行檢查。
Android Studio的缺點主要是舊版本與新版本不可以互相兼容,需要人工修改對應的gradle 配置并升級buildtool,而且Android Studio 是一個比較新的軟件開發平臺,用戶的數量還比較少,如果在使用中碰到開發或技術等方面的困難,不容易找到可以溝通并解決問題的人[9-11]。
1)Android 技術
Android 是一個基于Linux、開源的移動設備的操作系統,比如在智能手機、平板電腦中等都有應用[11]。它是2007 年谷歌和開放手機聯盟共同設計并開發的平臺軟件。這款操作平臺軟件專門為移動設備而設計,擁有其特別的優勢,不再被運營商束縛、選擇,其硬件選擇范圍也非常廣泛,系統兼容性良好,打破了傳統平臺軟件的各類限制,與此同時其使用者也擁有了非常好的移動服務體驗。Android 提供了統一的應用程序軟件的開發方式,這相當于程序員只用為Android 開發程序就可以在不同的Android 移動設備上來運行。Android 開發有很多優勢,如開放源代碼、龐大開發者群和強大的社區、不停擴大的市場、國際化App 集成、低廉的成本、較高的成功率、完善的開發環境等。Android 軟件開發含4 個組件,分別是:活動(Activity)、服務(Service)、廣播接收器(Broadcast Receiver)以及內容提供商(Content Provider)[12-14]。
①Activity 組件是一切程序的基礎,所有程序過程都在Activity 運行,能夠包含用戶的界面,主要用在與用戶的交互方面,它是程序員接觸最頻繁、Android 中最基礎的模塊之一。Android的程序里,Activity 常代表手機的一屏,Activity 組件主要有4 個基本狀態。第一個狀態為激活態Active/Running,它處于屏幕最前端,和用戶直接交互;第二個狀態為暫停態Paused,表示Activity 丟失焦點,這時Activity 不可以和用戶交互;第三個狀態為停止態Stopped,這個時候Activity 界面不可見,一般情況是系統收回了較緊張的系統資源;第四個狀態為死亡態Killed,這時系統會從內存里把Activity 清除出去。
②Service 組件作為服務組件,由運行在后臺的一段代碼組成,其運行的狀態不可見。Service 組件可以結合自身的需求,在自己的進程里進行運行,還能夠在別的應用程序里運行。Service 服務組件有兩種服務類型,分別為本地服務以及遠程服務。本地進程通常依附于主進程,因此減少了系統資源的占用。不過一旦主進程結束運行以后,Service 便跟著主程序的結束而相應結束了。bind Service 以及context.start Service 是Service 組件啟動的兩種方法。與此同時,Service 組件也有生命周期,它主要歷經4 個階段,分別為on Create、on Start、on Destroy、on Bind。Service 組件經常被用在數據處理方面,比如背景音樂的播放,從網絡獲得遠程的數據都是Service的應用范圍。因此Service 是只能后臺運行,能和別的組件交互,具有長生命周期的代碼。
③Broadcast Receiver 組件的主要作用是接收系統里的廣播信息,程序員能夠依據不同的廣播類型來設定廣播的機制。在進行Android 應用程序開發的時候,熟悉Broadcast Receiver 組件非常重要。Broadcast Receiver 組件也有著生命周期,它包括3 個進程,分別為創建Broadcast Receiver 對象、調用on Receive 方法、廣播銷毀。Broadcas 用于傳輸信息,Broadcast Receiver 對發出的Broadcast 過濾、接收以及響應。Android 數據有嚴密的防護,除SD 卡里的數據,數據庫和文件等都不可直接訪問。但Android的各應用間并非各自孤立,Content Provider 可為儲存和讀出數據規定統一標準接口,用它讓應用交流數據,許多內置數據用Content Provider 形式以方便程序員調用。
④Content Provider 組件作為共享機制,可以讓不同的數據之間進行共享。比如,發短信時選擇一個聯系人,此時Content Provider 組件就能夠發揮自身的用途,使得系統更加方便利用。Android 平臺用URI的形式為每項資源都規定了自己的資源名,形式與“content://應用的標準前綴/URI 標識/路徑/需獲取的記錄ID”非常相像。Conten Provider 就是在URI的基礎上來實現的。Content Provider的數據共享用接口中的標準方式完成。on Create、update、query、insert、delete 等都是很常見的操作方式。
2)Java 技術。Java 吸收C++的優勢且廢棄難懂、少用的性能。Java 沒有指針,而是引用,自動收集垃圾,無內存問題。Java 簡單、功能強大,是面向對象編程語言的代表。
①Java 編程語言擁有獨立的平臺,它使用“Java虛擬機”作為指導,在應用里首先編譯成為中間碼,然后對其進行裝載和校驗,最后經過解釋來生成機器碼,從而使得應用程序得以執行。Java 能夠屏蔽掉平臺里的特征要求,系統只用支持Java 虛擬機就可成功運行Java 程序。
②Java 編程語言不支持自動強制、多級繼承以及運算符重載這些作用,因為這些功能在實際開發應用中很少用到,而且如果使用的話很容易出現混淆,所以Java 拋棄這些功能使得編程復雜性降低很多、更加簡單。Java 里加入一些能夠增加實用性的新功能,因為Java 語言的復雜性不是很高,所以它的應用門檻比較低,在計算機軟件的開發中可靠性非常好,而且它所占用系統的空間也比較小。
③Java 編程語言是多線程的,能保證軟件并行,Java 語言的同步原語較完整,可保證數據的共享。在開發軟件程序的時候,用多線程的方式控制各個特定的行為,不僅如此,還能使它們進行交互。
④計算機的程序編寫不是對于一整個程序的全部內容直接進行,而是把程序分割成為幾個不同的模塊,然后來編寫小模塊。實際操作時,編寫必須能夠保證不同的模塊之間是相互獨立的,從而使得編寫效率得到提高。對于程序的編寫,需要考慮模塊的組成結構,它們應該是獨立的,避免對單個模塊進行改變,其他模塊就不會發生連帶反應。Java 面向對象,各模塊的建立對應程序,功能分解,此外Java還有分布式、健壯性、安全性、平臺獨立、可移植性、多線程、封裝性、繼承性、動態性等優點。
3)藍牙技術
藍牙是一種新興的無線通信規范。藍牙本質上是創建通用的無線電空中接口,在沒有電線、電纜連接時,使得各個廠家生產的移動設備可以在一定范圍內互相連接、操作。藍牙技術不但使移動設備之間的相互通信簡單化,也使設備與因特網間的通信簡化,使得通信設備與因特網之間的信息傳輸更加快速、高效,且讓便攜式的通信設備不需要電纜就可以聯網[15-16]。
該設計應用藍牙的2.1 協議標準,它能自動使用數字密碼配對,比如在手機的選項里選擇配對特定裝置,確定后手機能自動列出當前環境中的可用設備,并自動連接配對。藍牙2.1 裝置之間互相確認的信號發送時間間隔約0.5 s,使芯片負載大大降低,還能使藍牙能有更多時間徹底的休眠,藍牙裝置在聯機后的待機時間也很長。
4)數據庫技術
Microsoft SQL Server 是分布式的關系型數據庫管理系統,擁有客戶機/服務器的體系結構,應用Transact-sql的sql 語言在客戶機和服務器之間傳送客戶機請求以及服務器的處理結果[17-20]。
SQL Server 可提供符合當前商業環境下所要求的各個類型的數據庫解決方案。它的應用非常廣泛,擁有很多非常明顯的優勢:易用性、適用于分布式組織的可伸縮性、用在決策支持的數據倉庫功能和很多別的服務器軟件關系密切的集成性、較高的性價比等。
SQL Server 除了這些優勢以外,還能為使用者的數據信息的管理和分析帶來靈活性,允許在迅速改變的環境里從容地響應,因此有很高的競爭優勢。從數據的管理與分析這兩個方面來看,把原始的數據轉變成為商業智能以及充分地利用Web 帶來的機會特別重要。SQL Server 是一個完整的數據庫與數據分析包,作為重要的基準測試可伸縮性以及速度獎的記錄保持者,SQL Server 是一個具備完全Web支持的數據庫產品,有對可擴展標記語言(XML)的核心支持和在Internet 上與防火墻外查詢的能力。
針對磁彈性傳感器共振頻率檢測的單一化研究設計,利用磁彈性傳感器和交流磁場無線耦合的共振檢測方法,設計出了一種多通道的磁彈性試紙共振頻率檢測系統,能夠檢測多種生物樣本。該傳感器檢測儀能夠檢測多種生物樣本,生物樣本的特性可以通過檢測儀檢測出來并反映在檢測的數據中,結合磁彈性傳感器檢測儀的實際應用情況,并且進行全面的需求分析以及對市場調研,此Android 手機上位機軟件需要有5 個功能,分別是接收數據、數據處理、數據存入SQL Server、數據可視化以及顯示曲線的功能,具體的工作流程如圖1 所示。

圖1 系統工作流程圖
磁彈性傳感器檢測儀上位機軟件的設計包括前端設計和后端設計兩個部分,系統的設計如圖2所示,前端設計部分由登錄界面、藍牙連接界面和UI 界面3 部分構成,工作人員利用登錄界面進入應用程序,然后在藍牙界面中利用藍牙技術連接磁彈性檢測儀下位機使得軟件與硬件進行數據連接,UI界面中顯示出數據信息和曲線圖,工作人員可通過UI 界面獲取下位機數據信息。后端設計部分包括與下位機的藍牙通信、數據處理、數據存儲以及歷史查詢4 個部分。該系統采用藍牙技術傳輸數據,使得數據信息由磁彈性檢測儀下位機傳輸到手機上位機軟件中。數據處理模塊對數據進行可視化處理,使得數據可以以曲線的形式表現出來。數據存儲模塊把數據信息存儲在數據庫中,當工作人員需要獲取歷史數據信息時就能夠從數據庫中調取存儲的數據。

圖2 系統設計圖
該軟件設計了登錄界面(如圖3 所示),工作人員點擊APP 圖標進入程序后到達登錄界面,點擊“START”按鈕便可進入藍牙配對界面(如圖4 所示),此時點擊“搜索設備”按鈕搜索可配對的設備,這時屏幕上會列出通信范圍內所有可連接的設備名稱,找到磁彈性傳感器的設備名稱后點擊配對即可配對成功。此時可把此設備設置為默認連接設備,下一次連接時應用會自動和磁彈性傳感器檢測儀下位機配對。

圖3 登錄界面

圖4 藍牙配對界面
配對成功以后系統就進入UI 數據曲線顯示的界面(如圖5 所示),點擊界面的右下角的開關按鈕,系統就進入檢測狀態,這時檢測儀有數據傳輸進來系統就可以實時接收并顯示出來,界面頂部的“Instant measured value”顯示接收到的實時測量數值,點擊右下角曲線顯示的按鈕,界面開始實時顯示數據曲線。界面中的4 個坐標軸曲線圖分別表示四個檢測通道各自的檢測數值,實線部分表示測量值“measured value”,虛線部分表示標準值“standard value”,檢測時測量值平穩輸出,當測量值突然出現一個向下的脈沖時,數據就能夠反映出被檢測生物樣本的特性,這時通過對比測量值與標準值,就可以獲得此被測生物樣本的特性。所以把測量值與標準值在同一坐標系中顯示非常有必要,更加便于兩組數據的比較,而且都用曲線顯示使得數據信息更加清晰直觀。

圖5 數據曲線顯示界面
完成每次檢測后,都可通過局域網把該次檢測所使用的ID、檢測時間(DT)、以及檢測到的數據傳入電腦存進SQL Server 數據庫中,當工作人員需要獲取某個時間或者某個ID 操作的數據信息時,就可進入SQL Server 中輸入日期時間或ID 信息調取當時檢測得到的數據(如圖6 所示)。

圖6 數據庫查詢界面
文中設計完成了基于Android 手機的磁彈性傳感器檢測儀軟件設計,傳統的檢測儀獲得數據信息必須要親臨現場、操作復雜,而且得到的數據不直觀,本軟件可以遠程接收數據得到檢測的結果,提高了工作效率,并以圖表的形式表現出來,有較好的實用性和較大的市場前景。