,, ,,
(1.中國科學(xué)院上海技術(shù)物理研究所 傳感技術(shù)聯(lián)合國家重點(diǎn)實(shí)驗(yàn)室,上海 200083;2.中國科學(xué)院上海技術(shù)物理研究所 中國科學(xué)院紅外成像材料與器件重點(diǎn)實(shí)驗(yàn)室, 上海 200083;3.中國科學(xué)院大學(xué),北京 100049; 4.上海科技大學(xué),上海 200083)
近紅外光譜是指波長在780-2526nm范圍內(nèi)的電磁波[1]。由于絕大多數(shù)無機(jī)化合物和有機(jī)化合物的化學(xué)鍵的振動在近紅外光譜區(qū)會產(chǎn)生的倍頻和合頻的吸收,通過對物質(zhì)的近紅外光譜分析可定性或定量的分析其組分[2]。近紅外光譜分析技術(shù)具有無損、快速高效、便于在線分析以及測量結(jié)果穩(wěn)定性好等優(yōu)點(diǎn)[3],已經(jīng)廣泛應(yīng)用于農(nóng)業(yè)、醫(yī)藥、食品、紡織、石油化工等多個領(lǐng)域[4]。將近紅外采集設(shè)備與物聯(lián)網(wǎng)結(jié)合起來也是當(dāng)下的研究熱點(diǎn)。
據(jù)工信部報(bào)道,世界物聯(lián)網(wǎng)用戶已經(jīng)突破十億,并且每一季度仍保持2.5%的增速[5]。在物聯(lián)網(wǎng)的飛速發(fā)展中,感知層成功實(shí)現(xiàn)了溫濕度信息、位置信息、視頻監(jiān)控等信息的獲取和感知,關(guān)于物質(zhì)光譜的定性、定量分析可以通過近紅外技術(shù)來實(shí)現(xiàn)。傳統(tǒng)的光譜分析儀器由于體積和成本的限制,難以直接應(yīng)用于物聯(lián)網(wǎng)領(lǐng)域。為方便用戶隨時隨地獲取物質(zhì)光譜信息,本課題組以自研光譜感知節(jié)點(diǎn)[6],搭建了光譜傳感物聯(lián)網(wǎng)。如圖1所示,光譜傳感物聯(lián)網(wǎng)由節(jié)點(diǎn)區(qū)域(BLOCK,包括光譜節(jié)點(diǎn)與環(huán)境節(jié)點(diǎn),其中環(huán)境節(jié)點(diǎn)包括二氧化碳濃度節(jié)點(diǎn)、溫度節(jié)點(diǎn)、濕度節(jié)點(diǎn)以及光照強(qiáng)度節(jié)點(diǎn))、云服務(wù)器、數(shù)據(jù)庫、移動終端四部分構(gòu)成。光譜節(jié)點(diǎn)采集光譜數(shù)據(jù)上傳到云數(shù)據(jù)庫,移動終端通過訪問云服務(wù)器請求數(shù)據(jù),云服務(wù)器從云數(shù)據(jù)庫獲取移動終端所請求的對應(yīng)時間、區(qū)域的光譜數(shù)據(jù)傳輸給移動終端。
圖1 光譜傳感物聯(lián)網(wǎng)結(jié)構(gòu)
近年來國內(nèi)微型光譜儀移動終端軟件發(fā)展迅速。哈爾濱工業(yè)大學(xué)趙楊進(jìn)行了基于Android平臺的激光光譜儀數(shù)據(jù)處理的研究,作者采用Android平臺,利用USB接口連接光譜儀與移動終端實(shí)現(xiàn)數(shù)據(jù)傳輸[7]。江蘇大學(xué)耿德春進(jìn)行了基于Android平臺近紅外光譜儀控制及工作狀態(tài)監(jiān)測的開發(fā)研究,實(shí)現(xiàn)通過移動終端對光譜儀的硬件控制,光譜掃描,數(shù)據(jù)與處理,模型調(diào)用等功能[8]。桂林電子科技大學(xué)糜榮,王永,熊顯名等進(jìn)行了基于Android平臺的微型光譜儀數(shù)據(jù)傳輸與顯示研究,通過wifi網(wǎng)絡(luò)將光譜儀與移動終端進(jìn)行連接[9]。但應(yīng)用于光譜傳感物聯(lián)網(wǎng)的移動終端軟件研究未見報(bào)道。
光譜傳感物聯(lián)網(wǎng)可突破感知節(jié)點(diǎn)與終端設(shè)備距離的限制,用戶在蜂窩網(wǎng)絡(luò)下即可獲取數(shù)據(jù)。其中移動終端是用戶與光譜傳感物聯(lián)網(wǎng)數(shù)據(jù)交互的媒介,本文對光譜傳感物聯(lián)網(wǎng)專用移動終端軟件設(shè)計(jì)進(jìn)行了研究??烧故疚锫?lián)網(wǎng)下光譜節(jié)點(diǎn)及環(huán)境節(jié)點(diǎn)信息,通過蜂窩網(wǎng)絡(luò)獲取數(shù)據(jù)并以圖形化形式顯示,以及對圖像進(jìn)行保存,進(jìn)一步在移動終端上實(shí)現(xiàn)了光譜數(shù)據(jù)的歸一化,一階微分,二階微分,峰值尋找的數(shù)據(jù)處理功能。
近年來Android系統(tǒng)發(fā)展迅速,測控系統(tǒng)和儀器設(shè)備有使用基于Android操作系統(tǒng)的移動設(shè)備代替計(jì)算機(jī)設(shè)備的趨勢,從而具有體積小、輕便易攜、功耗低、處理能力強(qiáng)等優(yōu)點(diǎn)[10]。Android是由谷歌公司推出的移動設(shè)備操作系統(tǒng),基于Linux,主要包括應(yīng)用程序?qū)?、?yīng)用程序框架層、程序庫、Android運(yùn)行庫和Linux內(nèi)核等部分[11]。
本項(xiàng)目開發(fā)的移動終端重點(diǎn)在于實(shí)現(xiàn)手機(jī)與云服務(wù)器之間的通信及數(shù)據(jù)交互,使用戶在使用蜂窩網(wǎng)絡(luò)時可以隨時隨地訪問數(shù)據(jù)庫獲取任意時刻的光譜或者環(huán)境數(shù)據(jù),進(jìn)行圖形化展示及光譜數(shù)據(jù)的預(yù)處理,并將結(jié)果保存在手機(jī)。
移動終端作為用戶與光譜傳感物聯(lián)網(wǎng)交互的入口,需要實(shí)現(xiàn)登錄注冊,節(jié)點(diǎn)信息獲取,數(shù)據(jù)獲取與處理,圖像數(shù)據(jù)保存功能。可分為三大模塊:用戶信息模塊、節(jié)點(diǎn)信息模塊以及數(shù)據(jù)信息模塊,移動終端系統(tǒng)功能圖由圖2所示。
圖2 移動終端系統(tǒng)功能結(jié)構(gòu)圖
用戶信息模塊實(shí)現(xiàn)登錄與注冊功能。節(jié)點(diǎn)信息模塊中由于光譜節(jié)點(diǎn)與環(huán)境節(jié)點(diǎn)是以Block為區(qū)域進(jìn)行排布的,一個Block中包含數(shù)十個光譜節(jié)點(diǎn)與環(huán)境節(jié)點(diǎn)。為了提高查找對應(yīng)節(jié)點(diǎn)信息的效率,先獲取其所在Blcok信息,再從中進(jìn)行查找。數(shù)據(jù)信息模塊包括訪問數(shù)據(jù)庫獲取數(shù)據(jù),數(shù)據(jù)繪圖,數(shù)據(jù)處理以及將圖像保存在系統(tǒng)相冊的功能。
計(jì)算機(jī)系統(tǒng):macOS 64位操作系統(tǒng);Java Jdk版本:1.8.0;Android 開發(fā)工具:Eclipse 及 Android Sdk; Android調(diào)試環(huán)境:Android虛擬機(jī)及魅族手機(jī)一臺。
云服務(wù)器:阿里云服務(wù)器,配置是1核cpu,2 G內(nèi)存,1 Mbps帶寬。
數(shù)據(jù)庫版本:SQL Server 2008。
用戶信息模塊實(shí)現(xiàn)了登錄與注冊這兩種移動終端常用功能。
注冊功能要求用戶錄入賬戶名稱、密碼、手機(jī)號碼以及常用郵箱。當(dāng)用戶點(diǎn)擊確認(rèn)注冊按鈕時,先判斷注冊信息是否符合格式:格式不符合要求時會提醒用戶更改注冊信息,格式正確的話使用Socket與服務(wù)器進(jìn)行通信。服務(wù)器端判斷數(shù)據(jù)庫中用戶表里是否已經(jīng)存在此賬戶名,如果存在則提示用戶“用戶名已存在,請更換”,如果不存在且用戶各項(xiàng)信息格式正確,則在數(shù)據(jù)庫用戶表中新增用戶,并在手機(jī)上顯示注冊成功。
在注冊時用到的Socket又稱“套接字”,其本質(zhì)是編程接口,對TCP/IP進(jìn)行封裝??蛻舳撕头?wù)器進(jìn)行通信,兩者都要實(shí)例化一個Socket對象??蛻舳撕头?wù)器端的Socket是不一樣的,客戶端可以實(shí)現(xiàn)遠(yuǎn)程連接服務(wù)器、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等功能;服務(wù)器端還需實(shí)現(xiàn)綁定端口、監(jiān)聽到達(dá)的數(shù)據(jù)、接受來自遠(yuǎn)程機(jī)器的連接等功能。Android在包java.net里提供了兩個類:Socket和ServerSocket,前者用于實(shí)例化客戶端Socket對象,后者用于實(shí)例化服務(wù)器Socket對象[12]??蛻舳讼蚍?wù)器發(fā)送注冊信息步驟如下:
1)創(chuàng)建Socket對象
Socket socket = new Socket(ip,port);
2)創(chuàng)建輸出流
DataOutputStream ds = new DataOutputStream
(socket.getOutputStream());
3)將注冊信息傳送給服務(wù)器
ds.writeUTF(register_info);
4)關(guān)閉輸出流與Socket
ds.close();
socket.close();
其中ip指服務(wù)器IP地址,port指服務(wù)器連接端口,register_info指客戶端發(fā)送至服務(wù)器的注冊信息。
登錄功能的實(shí)現(xiàn)使用Soap協(xié)議與服務(wù)器進(jìn)行通信(Soap協(xié)議將在節(jié)點(diǎn)信息模塊介紹),服務(wù)器端將用戶名和密碼與數(shù)據(jù)庫用戶表中的信息進(jìn)行匹配,匹配成功后登錄成功。
在移動終端節(jié)點(diǎn)展示界面上采用雙List列表形式展示,左邊一列展示Block信息,右邊一列顯示所選Block下的節(jié)點(diǎn)信息。為了區(qū)分光譜節(jié)點(diǎn)以及環(huán)境節(jié)點(diǎn),在界面底部設(shè)置菜單欄,分別為光譜信息、環(huán)境信息及個人信息,由圖3所示。底部菜單欄的設(shè)計(jì)提高了移動終端功能開發(fā)的靈活性,因?yàn)楦鱾€菜單欄下的開發(fā)相互獨(dú)立,可以分別開發(fā)最后合并,方便日后由于移動終端功能的改變對于模塊的增加修改。
為實(shí)現(xiàn)菜單欄左右滑動切換頁面view的效果,移動終端中采用ViewPager類。其為Android擴(kuò)展包v4中的類。建立底部菜單欄的方法如下:
1)為底部菜單欄新建一個布局。
2)將ViewPage添加到頁面布局,其下方添加底部菜單欄布局。
3)為每個菜單對應(yīng)的頁面內(nèi)容建立各自的布局,通過適配器關(guān)聯(lián)各個頁面與ViewPager。
4) 監(jiān)聽ViewPager與底部菜單欄事件,進(jìn)行頁面的切換展示。
圖3 節(jié)點(diǎn)信息展示界面
登陸成功后會跳轉(zhuǎn)到節(jié)點(diǎn)顯示界面,此界面默認(rèn)獲取云數(shù)據(jù)庫中用戶名下的Block并進(jìn)行顯示。在光譜信息菜單欄時,當(dāng)選擇具體的Block后,移動終端會向服務(wù)器上傳用戶名以及Block信息以請求對應(yīng)Block下的光譜節(jié)點(diǎn)信息,云服務(wù)器從數(shù)據(jù)庫中獲取對應(yīng)數(shù)據(jù)后傳輸給移動終端進(jìn)行展示。
環(huán)境節(jié)點(diǎn)包括溫度、濕度、二氧化碳濃度與光照強(qiáng)度節(jié)點(diǎn)。頁面上的環(huán)境信息節(jié)點(diǎn)被選擇后會跳轉(zhuǎn)環(huán)境節(jié)點(diǎn)數(shù)據(jù)顯示頁面,此頁面會顯示4種環(huán)境節(jié)點(diǎn)采集的最新數(shù)據(jù)。特定選擇某一個環(huán)境節(jié)點(diǎn)后會跳轉(zhuǎn)到時間段選擇頁面,用戶可以選擇時間段從而獲取此時間段內(nèi)采集的所有環(huán)境信息。環(huán)境信息菜單請求服務(wù)器獲取數(shù)據(jù)的方式與光譜信息菜單的方式相同。
以上所涉及到的網(wǎng)絡(luò)通信均采用Soap協(xié)議。Soap(簡單對象訪問協(xié)議)是一種標(biāo)準(zhǔn)化的通信規(guī)范,主要用于Web服務(wù)。Soap基于XML標(biāo)準(zhǔn),用于在分布式環(huán)境中發(fā)布信息,并執(zhí)行遠(yuǎn)程過程調(diào)用。使用Soap不用考慮任何特定的傳輸協(xié)議(通常選用HTTP協(xié)議),就能使數(shù)據(jù)序列化[12]。本實(shí)例中Soap調(diào)用WebService的獲取光譜數(shù)據(jù)具體步驟如下:
1) 添加ksoap2包。WebService是一種基于SOAP協(xié)議的遠(yuǎn)程調(diào)用標(biāo)準(zhǔn),通過WebService可以將不同的操作系統(tǒng)平臺,不同技術(shù),不同語言整合在一塊。在Android SDK中沒有提供調(diào)用WebService的庫,因此需要使用第三方的SDK來調(diào)用WebService。在這里采用ksoap2第三方SDK。
2) 指定命名空間和調(diào)用的方法名,如:
String namespace ="http://spectrum_data";
Stringmethodname = "spectrum_data";
SoapObjectreq = new SoapObject(namespace, methodname);
3) 設(shè)置調(diào)用方法的參數(shù)值:
req.addProperty("username", username);
req.addProperty("block", blockname);
req.addProperty("lightnode", lightnode);
req.addProperty("time", time);
4) 生成調(diào)用WebService方法的Soap請求信息。該信息由SoapSerializationEnvelope描述:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut = req;
5) 創(chuàng)建HttpTransportsSE對象,訪問云服務(wù)器url:
String URL = "IP_port" + /spectrumdata
/services/spectrum_data";
HttpTransportSE transport = new HttpTransportSE(URL);
6) 使用call方法調(diào)用WebService方法:
transport.call(null, envelope);
7) 使用getResponse方法獲得WebService返回的結(jié)果:
result = (SoapObject) envelope.getResponse();
8) 解析返回的內(nèi)容。
在進(jìn)行網(wǎng)絡(luò)請求時需創(chuàng)建一個新的線程。Android4.0之后在主線程里執(zhí)行網(wǎng)絡(luò)請求會報(bào)NetworkOnMainThreadException的異常。網(wǎng)絡(luò)請求會耗費(fèi)大量時間,造成主線程的阻塞,使移動終端運(yùn)行時出現(xiàn)阻塞卡頓,所以不能在主線程里進(jìn)行網(wǎng)絡(luò)請求。創(chuàng)建線程并啟動的方法為:
Thread t1 = new Thread(webInstance);
t1.start();
其中webInstance是創(chuàng)建的網(wǎng)絡(luò)請求類的對象。
2.3.1 數(shù)據(jù)繪圖
經(jīng)光譜感知節(jié)點(diǎn)采集到的數(shù)據(jù)信息為204個離散的光譜數(shù)據(jù)點(diǎn),格式為“波長-強(qiáng)度”。波長范圍為939~1 688 nm,強(qiáng)度范圍為0~1。有機(jī)分子的基團(tuán)會對特定近紅外波長產(chǎn)生吸收,因此光譜數(shù)據(jù)中蘊(yùn)含著豐富的物質(zhì)成分信息。但將原始數(shù)據(jù)直接以數(shù)字的方式在移動終端上進(jìn)行顯示,會對用戶觀測光譜數(shù)據(jù)造成諸多不便。因此移動終端進(jìn)行光譜數(shù)據(jù)的圖形化展示,這樣做更為直觀的展現(xiàn)不同波長所對應(yīng)光譜的變化。
Android中繪圖常用Paint、Canvas類或MPAndroidChart、AChartEngine等開源圖表庫。本軟件數(shù)據(jù)繪圖部分采用Android開源項(xiàng)目AChartEngine,其為一個制作常用圖表的框架,該框架支持豐富的圖表展示(如條形圖、折線圖、散點(diǎn)圖、積圖、氣泡圖等)[13]。數(shù)據(jù)繪圖的過程如下:
1)創(chuàng)建二維多系列數(shù)據(jù)集用以存儲光譜數(shù)據(jù)或者環(huán)境信息數(shù)據(jù):
XYMultipleSeriesDataset dataset;
創(chuàng)建二維多系列畫圖器,用作設(shè)置圖表的基本屬性:
XYMultipleSeriesRenderer renderer;
創(chuàng)建GraphicalView對象,用以作為顯示圖表的View:
GraphicalView line;
2)創(chuàng)建XYSeries對象存儲圖表的x,y軸數(shù)據(jù),即光譜數(shù)據(jù)波長與吸光度,或環(huán)境信息時間與環(huán)境數(shù)據(jù)。并添加其至dataset。
XYSeriesspseries;
dataset.addSeries(spseries);
for(i = 0; i< y_set.lenth-1;i++){
spseries.add(s_set[i],y_set[i]);
}
3)使用ChartFactory.getLineChartInten方法繪圖至GraphicalView對象,并將此對象添加至界面View。
line=ChartFactory.getLineChartIntent(this, dataset, renderer);
layout.addView(line, 0);
2.3.2 數(shù)據(jù)處理
由于光譜感知節(jié)點(diǎn)本身固有的原因,所采集到的光譜數(shù)據(jù)中除了樣本信息以外,還會包含其他干擾信息,如雜散光、散射光、儀器噪聲等。這會對光譜圖像精確性產(chǎn)生影響,如導(dǎo)致光譜的基線漂移,因此對采集到的近紅外光譜數(shù)據(jù)進(jìn)行預(yù)處理操作是十分必要的。
本軟件中使用了兩種數(shù)據(jù)處理方法,分別是歸一化與微分去噪,微分方法包括一階微分及二階微分。實(shí)際應(yīng)用中可根據(jù)需要進(jìn)行預(yù)處理方法的選擇。
1)歸一化[14]:
歸一化使數(shù)據(jù)處于同一范圍內(nèi),可以有效減小奇異樣本數(shù)據(jù)導(dǎo)致的誤差影響。其對應(yīng)的計(jì)算公式如下:
(1)
式中,x指處理前的吸光度,x'指處理后的吸光度。
2)微分處理[8]:
在近紅外光譜分析中,微分(一階微分,二階微分)是常用的光譜處理方法,主要作用是消除基線漂移。
一階微分:
(2)
二階微分:
(3)
式中,g指微分窗口寬度,在本軟件中一階微分中g(shù)取3,二階微分中g(shù)取6;x指處理前的吸光度,x'指處理后的吸光度。
光譜處理以及處理后的圖像如圖4所示??梢园l(fā)現(xiàn)歸一化處理將數(shù)據(jù)范圍縮小至0~1.0,一階微分給出了整張譜圖數(shù)據(jù)的變化率,二階微分表示譜圖變化率的變化情況,可以顯示出原始譜圖中的肩峰的確切峰位。
圖4 光譜數(shù)據(jù)處理
3)峰值尋找:
近紅外光譜主要是有機(jī)分子倍頻與合頻在近紅外區(qū)域的吸收光譜[13]。是光譜圖像中蘊(yùn)含物質(zhì)信息最豐富的位置。因此波峰的尋找對于物質(zhì)光譜的分析具有重要意義。
本軟件存使用兩個數(shù)組存儲光譜數(shù)據(jù),一個數(shù)組存儲波長,另一個數(shù)組存儲波長所對應(yīng)的強(qiáng)度。在尋峰時使用尋找數(shù)組峰值的方法,遍歷數(shù)組元素,與其周圍元素進(jìn)行比較,當(dāng)差大于閾值(光譜數(shù)據(jù)最大值最小值之差的十分之一)時則可認(rèn)為是尋找的峰值。
2.3.3 圖像保存
移動終端每進(jìn)行一次光譜數(shù)據(jù)請求都會將數(shù)據(jù)繪制成為圖像。為方便用戶記錄保存圖像以及將前后光譜圖像進(jìn)行對比,將圖像保存到系統(tǒng)相冊以備后續(xù)調(diào)用是移動終端必須的功能。
將Android界面上的光譜圖像以圖片格式保存至系統(tǒng)相冊,方法是:
1)將對應(yīng)區(qū)域的View轉(zhuǎn)換為bitmap對象:
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache);2)獲取手機(jī)SD卡,設(shè)置存儲路徑:
File sdCardDir = Environment;
getExternalStorageDirectory();
String strpath = "/IOT記錄/" + time + "圖像.png";
File file = new File(sdCardDir, strpath);
3)使用Bitmap的compress方法指定壓縮格式為PNG格式:
bitmap.compress(CompressFormat.PNG,100,fos);
4)存儲到系統(tǒng)相冊中時需使用sendBroadcast方法向系統(tǒng)進(jìn)行廣播:
Intent intent = new Intent(Intent.
ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
sendBroadcast(intent);
經(jīng)測試,可以將顯示圖像的區(qū)域保存為PNG格式圖片到相冊,滿足了用戶保存圖像的需求。
為檢驗(yàn)移動終端軟件運(yùn)行情況,于2018年6月14日早9:00進(jìn)行試驗(yàn)。
試驗(yàn)時以云數(shù)據(jù)庫中用戶liming為登錄賬號,其名下有2個block,其中BLOCK1中有3個光譜節(jié)點(diǎn),6個環(huán)境節(jié)點(diǎn)。
光譜節(jié)點(diǎn)1號最新存儲數(shù)據(jù)采集時間為2018年6月13日上午10:05:00,參見圖5。開啟軟件,登錄liming賬號后選擇BLOCK1中的光譜節(jié)點(diǎn)1號,然后選擇2018年6月13日10:00,來檢測移動終端的光譜數(shù)據(jù)獲取、數(shù)據(jù)處理及保存功能。試驗(yàn)結(jié)果如圖6所示。
圖5 數(shù)據(jù)庫截圖
圖6 移動終端數(shù)據(jù)處理檢測結(jié)果
由光譜圖像及微分處理圖像可知,一階微分圖像可以分析光譜圖像中的肩峰。一階微分給出了光譜曲線的變化率,其最大值最小值點(diǎn)不是光譜曲線的最大值最小值點(diǎn),而是光譜曲線的最大斜率點(diǎn)。在一階微分圖像中,肩峰變窄,更容易識別。
二階微分圖像表示光譜曲線變化率的變化情況,可以找到光譜曲線的確切峰位。二階微分比一階微分基線噪聲更多,每做一次微分,噪聲就會增加,但是信號強(qiáng)度卻減小,可以降低信噪比。
環(huán)境節(jié)點(diǎn)1號最新數(shù)據(jù)為2018年6月10日的數(shù)據(jù),如圖7所示,溫度,濕度,二氧化碳濃度,光照強(qiáng)度展示的為最新檢測結(jié)果。階段性的環(huán)境數(shù)據(jù)獲取以溫度為例,獲取2018年6月10日10:29至15:29的數(shù)據(jù),繪制圖像見圖8。
圖7 節(jié)點(diǎn)1號的環(huán)境信息
圖8 節(jié)點(diǎn)1號溫度曲線圖
由試驗(yàn)結(jié)果可得移動終端成功從云服務(wù)器請求光譜數(shù)據(jù)進(jìn)行處理并繪制出圖像,找出峰值。期間網(wǎng)絡(luò)請求流暢,圖像繪制精準(zhǔn),數(shù)據(jù)處理無誤,可將光譜數(shù)據(jù)簡單形象的呈現(xiàn)給用戶。對于環(huán)境信息,此移動終端可以實(shí)時展示最新環(huán)境數(shù)據(jù),以及獲取對應(yīng)時間段的環(huán)境數(shù)據(jù)繪制圖像,直觀的將環(huán)境信息變化情況用圖像展現(xiàn),可以輔助用戶對生產(chǎn)生活做出決策。此移動終端與服務(wù)器完成通信,數(shù)據(jù)獲取、繪圖、保存以及處理功能實(shí)現(xiàn)正常,實(shí)現(xiàn)了開發(fā)的預(yù)期效果,滿足了光譜傳感物聯(lián)網(wǎng)專用移動終端的需求。
本文設(shè)計(jì)的軟件實(shí)現(xiàn)了光譜傳感物聯(lián)網(wǎng)移動終端的基本功能。界面簡潔,與用戶交互性好。移動終端與服務(wù)器通信穩(wěn)定,可以方便用戶獲取數(shù)據(jù)并處理。使移動端光譜處理軟件突破與光譜儀節(jié)點(diǎn)距離的限制,在蜂窩網(wǎng)絡(luò)環(huán)境下隨時隨地訪問光譜及環(huán)境信息,在將來的智能農(nóng)業(yè),智慧城市等領(lǐng)域會有廣泛用處。