武悅俊 劉日威 張冠文 倪樹(shù)標(biāo)
0 引言
近年來(lái),農(nóng)藥殘留量檢測(cè)技術(shù)發(fā)展至今已取得很大進(jìn)展,但在傳統(tǒng)農(nóng)殘檢測(cè)設(shè)備的開(kāi)發(fā)和維護(hù)中,往往是通過(guò)串口、以太網(wǎng)等有線的方式對(duì)儀器進(jìn)行參數(shù)設(shè)置,獲取儀器的檢測(cè)數(shù)據(jù)。這就需要有線傳輸所依靠的各種線材,又需要安裝有專(zhuān)用軟件的個(gè)人電腦,否則終端用戶就只能手動(dòng)錄入儀器的檢測(cè)數(shù)據(jù),不但效率低,而且很容易出錯(cuò)。
本文針對(duì)中廣測(cè)NC系列農(nóng)藥殘留快速檢測(cè)儀,采用市場(chǎng)占有率最高的Android終端替代PC作為上位機(jī)來(lái)構(gòu)建數(shù)據(jù)的采集與維護(hù)系統(tǒng),可以很好地解決傳統(tǒng)的“有線+個(gè)人電腦”數(shù)據(jù)采集的弊端,使儀器更適應(yīng)外場(chǎng)工作,提高信息化水平。
1 系統(tǒng)架構(gòu)設(shè)計(jì)
本系統(tǒng)總體架構(gòu)的設(shè)計(jì)上采用面向移動(dòng)終端的C/S模式,Android客戶端的設(shè)計(jì)上采用MVC模式,并應(yīng)用Web Service技術(shù)實(shí)現(xiàn)了客戶端與服務(wù)器端的數(shù)據(jù)交互。系統(tǒng)框架如圖1所示:
整個(gè)系統(tǒng)是由具有藍(lán)牙通信功能的農(nóng)藥殘留快速檢測(cè)儀、運(yùn)行在Android上的移動(dòng)客戶端和通過(guò)移動(dòng)互聯(lián)網(wǎng)進(jìn)行連接的中心服務(wù)器組成。Android起到了數(shù)據(jù)中轉(zhuǎn)的作用,是整個(gè)系統(tǒng)的核心。
檢測(cè)人員在現(xiàn)場(chǎng)按照農(nóng)殘檢測(cè)流程對(duì)農(nóng)產(chǎn)品樣品進(jìn)行檢測(cè),檢測(cè)數(shù)據(jù)通過(guò)儀器藍(lán)牙模塊發(fā)送到Android手機(jī),手機(jī)將接收到的數(shù)據(jù)暫時(shí)存儲(chǔ)在系統(tǒng)自帶的SQLite數(shù)據(jù)庫(kù)里,可以對(duì)這些數(shù)據(jù)的附加信息進(jìn)行編輯修改,并將這些暫存的數(shù)據(jù)通過(guò)4G或WLAN網(wǎng)絡(luò)上傳到中心服務(wù)器,最后將數(shù)據(jù)存儲(chǔ)在系統(tǒng)運(yùn)營(yíng)商的數(shù)據(jù)庫(kù)里,主管部門(mén)可以通過(guò)查看后臺(tái)數(shù)據(jù)庫(kù)對(duì)大量檢測(cè)點(diǎn)進(jìn)行實(shí)時(shí)動(dòng)態(tài)監(jiān)控。
2 移動(dòng)客戶端設(shè)計(jì)
移動(dòng)客戶端采用支持藍(lán)牙功能的Android平板電腦或手機(jī),程序開(kāi)發(fā)基于Android5.0系統(tǒng),開(kāi)發(fā)平臺(tái)為PC,所用開(kāi)發(fā)工具為Android Studio集成開(kāi)發(fā)環(huán)境,移動(dòng)客戶端整體功能設(shè)計(jì)如圖2所示:
(1)藍(lán)牙操作
藍(lán)牙操作模塊通過(guò)使用Android提供的藍(lán)牙API,實(shí)現(xiàn)查找并連接檢測(cè)儀器,讀取檢測(cè)數(shù)據(jù),設(shè)置儀器參數(shù)等功能。
(2)本地?cái)?shù)據(jù)管理
本地?cái)?shù)據(jù)管理模塊具有查詢、分類(lèi)、匯總、統(tǒng)計(jì)和報(bào)表生成功能,包括將檢測(cè)數(shù)據(jù)存儲(chǔ)到手機(jī),導(dǎo)出為Excel文件以及生成QR二維碼等。具有多種方式數(shù)據(jù)統(tǒng)計(jì)匯總功能,例如可以對(duì)某一時(shí)間段的檢測(cè)信息進(jìn)行統(tǒng)計(jì)匯總,也可以對(duì)某一類(lèi)農(nóng)產(chǎn)品的檢測(cè)信息進(jìn)行統(tǒng)計(jì)匯總,還可以對(duì)某一檢測(cè)點(diǎn)的檢測(cè)信息進(jìn)行統(tǒng)計(jì)匯總。
(3)用戶登錄
用戶登錄模塊主要用于用戶登錄服務(wù)器,只有用戶名和密碼驗(yàn)證通過(guò)的用戶才可以更新或者下載數(shù)據(jù)。
(4)上傳下載
上傳模塊和下載模塊通過(guò)調(diào)用服務(wù)器端提供的Web Service接口API,進(jìn)行檢測(cè)數(shù)據(jù)的網(wǎng)絡(luò)共享。
2.1基于藍(lán)牙的數(shù)據(jù)傳輸
Android應(yīng)用框架層提供了實(shí)現(xiàn)藍(lán)牙功能的API,通過(guò)它們可以實(shí)現(xiàn)與其他藍(lán)牙設(shè)備的無(wú)線通信,建立點(diǎn)到點(diǎn)的連接。農(nóng)藥殘留檢測(cè)儀的藍(lán)牙模塊選用的是HC-06,它與Android的通信方式使用SPP協(xié)議。
在Android應(yīng)用程序開(kāi)發(fā)中,藍(lán)牙設(shè)備之間要建立連接,必須實(shí)現(xiàn)客戶端和服務(wù)器端代碼,分別用來(lái)開(kāi)啟連接監(jiān)聽(tīng)服務(wù)和發(fā)送連接請(qǐng)求。服務(wù)器端采用accept()方法接受連接,客戶端則采用connect()方法請(qǐng)求連接,由于這兩個(gè)方法都是阻塞調(diào)用,所以需要單獨(dú)的線程來(lái)管理連接。SPP協(xié)議的UUID為00001101-0000-1000-8000-00805F9B34FB,使用此UUID創(chuàng)建套接字并連接,直到當(dāng)它們都擁有一個(gè)藍(lán)牙套接字在同一RFCOMM信道上時(shí),說(shuō)明它們之間連接成功,然后就可以實(shí)現(xiàn)設(shè)備之間數(shù)據(jù)的共享,同樣,數(shù)據(jù)的讀取和寫(xiě)入操作也是阻塞調(diào)用,需要建立一個(gè)獨(dú)立的線程來(lái)進(jìn)行操作。
2.2數(shù)據(jù)庫(kù)存儲(chǔ)
數(shù)據(jù)庫(kù)管理模塊提供數(shù)據(jù)庫(kù)創(chuàng)建、更新、查詢和刪除功能,用來(lái)暫存從檢測(cè)儀器接收來(lái)的數(shù)據(jù),以便后續(xù)通過(guò)網(wǎng)絡(luò)共享。在Android智能手機(jī)上,使用開(kāi)源的、與操作系統(tǒng)無(wú)關(guān)的嵌入式SQL數(shù)據(jù)庫(kù)SQLite3來(lái)存儲(chǔ)檢測(cè)數(shù)據(jù)。
根據(jù)需求,客戶端數(shù)據(jù)庫(kù)的設(shè)計(jì)包含6張表:t_checkresult,t_checktype,t_goods, t_overflows,t_source,t_vendor,分別用來(lái)存儲(chǔ)檢測(cè)數(shù)據(jù)、檢測(cè)類(lèi)型、樣品名稱(chēng)、超標(biāo)限值、被檢測(cè)單位信息、檢測(cè)單位信息。t_checkresult表的結(jié)構(gòu)說(shuō)明如表1所示。
3 服務(wù)器端設(shè)計(jì)
移動(dòng)客戶端不直接訪問(wèn)中心數(shù)據(jù)庫(kù),而是引入了Web Service接口作為業(yè)務(wù)邏輯層,客戶端將本地暫存的檢測(cè)數(shù)據(jù)先通過(guò)報(bào)文的形式發(fā)送給Web Service,Web Service接收處理后更新數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)了數(shù)據(jù)的分布式處理。
Web Service即Web服務(wù),是用標(biāo)準(zhǔn)的規(guī)范的基于XML的WDSL語(yǔ)言描述的,它向外界暴露出一個(gè)能夠通過(guò)Web進(jìn)行調(diào)用的API,使得程序員能夠通過(guò)標(biāo)準(zhǔn)化的消息傳遞機(jī)制來(lái)訪問(wèn)這個(gè)的API。通過(guò)Web Service系統(tǒng)可以非常靈活的部署和升級(jí)維護(hù)。
本文在.NET框架的支持下,采用ASP.NET和C#語(yǔ)言,開(kāi)發(fā)了數(shù)據(jù)交換接口,通過(guò)IIS部署Web Service,中心數(shù)據(jù)庫(kù)系統(tǒng)選用SQL Server 2008。
提供管理員和普通用戶兩種賬戶類(lèi)型,管理員賬戶具有最高權(quán)限,不僅具有普通用戶基本的數(shù)據(jù)上傳下載功能,也可以對(duì)其他用戶賬戶進(jìn)行操作,如對(duì)其轄區(qū)內(nèi)用戶的檢測(cè)信息進(jìn)行統(tǒng)計(jì)匯總,添加用戶、修改用戶、刪除用戶和更改用戶權(quán)限等。
系統(tǒng)對(duì)外接口訪問(wèn)地址:http://ip:port/services/ptcck.asmx。其中ip表示W(wǎng)eb服務(wù)器的網(wǎng)絡(luò)地址,port表示提供Web服務(wù)的端口號(hào)。系統(tǒng)對(duì)外接口包括查詢接口和寫(xiě)入接口,例如:
獲取某用戶一段時(shí)間內(nèi)的檢測(cè)信息
public string[] selectUserDayCheckResult(string vendorid, string startday, string endday)
4 結(jié)語(yǔ)
本文結(jié)合智能手機(jī)廣泛應(yīng)用的優(yōu)勢(shì),設(shè)計(jì)開(kāi)發(fā)了基于Android終端的采集和報(bào)送系統(tǒng),實(shí)現(xiàn)了智能的農(nóng)產(chǎn)品安全監(jiān)控網(wǎng)絡(luò)。使用藍(lán)牙技術(shù)采集農(nóng)藥殘留檢測(cè)數(shù)據(jù),然后通過(guò)移動(dòng)通信技術(shù)傳輸,解決了傳統(tǒng)有線采集傳輸模式的弊端,使儀器在現(xiàn)場(chǎng)的使用更加方便快捷,提高了工作效率。本系統(tǒng)有較強(qiáng)的實(shí)用性,對(duì)今后設(shè)計(jì)集成化更高的智能儀器也有一定的參考意義。