文中從系統整體結構設計、移動(dòng)監管系統的總體流程設計、功能和關(guān)鍵技術(shù)的實(shí)現等方面,闡述了如何基于 Android 和 NFC 技術(shù)實(shí)現電子秤移動(dòng)監管系統。該系統可滿(mǎn)足政府部門(mén)對電子秤監管的需要,保護市場(chǎng)的公平公正,維護消費者的利益。
1.引言
隨著(zhù)電子技術(shù)的迅速發(fā)展,不少商販為謀取利益,采用改裝、加裝電路開(kāi)關(guān)、遙控裝置、加裝芯片等作弊手段,坑害消費者利益。由于缺乏行之有效的監管手段,這些電子秤基本處于失控狀態(tài),對社會(huì )的公平公正造成了嚴重的影響。文中提出了一種基于 Android 和 NFC 技術(shù)的電子秤移動(dòng)監管系統,該系統具有電子秤信息登記、激活授權、維修授權、拆開(kāi)授權、檢定登記、檢定信息讀取等監管功能,實(shí)現對電子秤高效便捷的監管。系統的所有操作均可以上傳到后臺管理系統,以方便監管人員進(jìn)行追溯 , 從而防止電子秤作弊現象的發(fā)生。
2 Android 系統及 NFC 技術(shù)簡(jiǎn)介
2.1 Android 系統簡(jiǎn)介
Android 系統是由 Google 發(fā)布的一款開(kāi)源的智能移動(dòng)終端操作系統,其對智能移動(dòng)終端的迅速普及起著(zhù)至關(guān)重要的作用。Android 系統架構共包括四層。
2.1.1 應用程序層
該層存在著(zhù)一些系統應用,例如電話(huà)、聯(lián)系人、短信息等。開(kāi)發(fā)人員開(kāi)發(fā)的第三方應用也存在于該層,應用程序開(kāi)發(fā)使用 Java 語(yǔ)言。
2.1.2 應用程序框架層
開(kāi)發(fā)人員可以完全訪(fǎng)問(wèn)核心應用程序所使用的 API 框架。該應用程序的架構設計簡(jiǎn)化了組件的重用。任何一個(gè)應用程序,都可以發(fā)布它的功能塊供其它的應用程序引用 ( 不過(guò)得遵循框架的安全性限制 )。用戶(hù)可以對系統提供的一些基礎控件進(jìn)行重新設計,以實(shí)現多樣化、定制化的效果。
2.1.3系統運行庫層
該層包含了一些 C/C++ 庫,這些庫能被Android 系統中不同的組件使用,它們通 過(guò) Android 應用程序框架為開(kāi)發(fā)者提供服務(wù)。該層還包含了一個(gè) Java 核心庫,該核心庫提供了 Java 編程語(yǔ)言核心庫的大部分功能。
2.1.4 Linux 內核層
Android 的核心系統服務(wù)依賴(lài)于 Linux 2.6內核,如安全性、內存管理、進(jìn)程管理、網(wǎng)絡(luò )協(xié)議棧和驅動(dòng)模型,Linux 內核也同時(shí)作為硬件和軟件棧之間的抽象層。
2.2NFC 技術(shù)簡(jiǎn)介
近 場(chǎng) 通 信(Near Field Communication,NFC),又稱(chēng)近距離無(wú)線(xiàn)通信,是一種短距離的高頻無(wú)線(xiàn)通訊術(shù),允許電子設備之間進(jìn)行非接觸式點(diǎn)對點(diǎn)數據傳輸,在十厘米(3.9 英吋)內交換數據。這個(gè)技術(shù)由非接觸式射頻識別(RFID)演變而來(lái),由飛利浦半導體(現恩智浦半導體)、諾基亞和索尼共同研制開(kāi)發(fā),其基礎是 RFID 及互連技術(shù)。目前近場(chǎng)通信已通過(guò)成為 ISO/IEC IS 18092 國際標準、EMCA-340 標準與 ETSI TS 102 190 標準。
3.系統整體結構設計
本系統主要由防作弊電子秤、移動(dòng)終端和后臺監管平臺組成。移動(dòng)終端通過(guò) 3G 或 WIFI 接入互聯(lián)網(wǎng)與監管系統平臺進(jìn)行通訊,監管系統將密鑰和數據下發(fā)到移動(dòng)終端,移動(dòng)終端將數據上傳到監管系統平臺。電子秤和移動(dòng)終端之間通過(guò) NFC 協(xié)議進(jìn)行通訊,移動(dòng)終端將獲得的密鑰和數據下發(fā)到電子秤或者從電子秤中讀取數據。
移動(dòng)終端是電子秤和監管系統平臺間通訊的橋梁,移動(dòng)終端需支持 NFC 通訊。普通用戶(hù)、監管機構、檢定機構、生產(chǎn)廠(chǎng)家、維修廠(chǎng)家均可以通過(guò)移動(dòng)終端進(jìn)行相應的功能的操作,移動(dòng)終端的主要功能有電子秤登記、電子秤激活、電子秤授權、拆開(kāi)授權、檢定登記、電子秤信息讀取、檢定登記等功能,通過(guò)這些功能,移動(dòng)終端可以向電子秤和管理系統平臺進(jìn)行數據交換。
4.移動(dòng)監管系統的實(shí)現
4.1 電子秤移動(dòng)監管總體流程
(1)電子秤生產(chǎn)廠(chǎng)家利用支持 NFC 的手持端進(jìn)行電子秤登記(可逐臺登記也可批量登記),由監管部門(mén)審核后,每臺電子秤均生成電子秤 ID 和密鑰。(2)通過(guò) NFC 手持端進(jìn)行電子秤激活授權,把管理系統平臺上生成的電子秤 ID 和密鑰下發(fā)到電子秤,激活后的電子秤就可以進(jìn)行檢定登記,而后交付用戶(hù)使用。
(3)如果電子秤內損壞需要維修或者部件需要更換可以進(jìn)行電子秤授權,把新的電子秤信息更新到服務(wù)器并重新下發(fā)密鑰。
(4)電子秤需要拆開(kāi)可進(jìn)行拆開(kāi)授權,防止電子秤被非法拆開(kāi),非法拆開(kāi)的電子秤無(wú)法使用。
(5)檢定不合格的電子秤或者周檢到期的電子秤無(wú)法使用,需進(jìn)行檢定授權后重新檢定才能用。
4.2移動(dòng)監管系統功能簡(jiǎn)介
4.3 系統關(guān)鍵技術(shù)的實(shí)現
4.3.1 NFC 標簽和移動(dòng)終端的初始化
文中的 NFC 標簽采用的是 NTAG216,NTAG216具有 888 字節用戶(hù)存儲器,符合 ISO/IEC14443 類(lèi)型 A 規范,工作頻率為 13.56 MHz,傳輸波特率為 106 kb/s,具有低功耗、防干擾、快速讀取等特點(diǎn),在使用本系統前需對 NFC 標簽中的存儲內容進(jìn)行地址分配,NFC 標簽中的存儲內容包括電子秤硬件信息、廠(chǎng)家信息、檢定信息等內容。移動(dòng)終端的初始化如下圖 3 所示:
4.3.2 WEBSERVIC 服務(wù)連接的實(shí)現
智能終端是通過(guò) WEBSERVICE 與管理系統平臺進(jìn)行通訊,以下代碼實(shí)現了服務(wù)連接的類(lèi): publicclassConnRequest{publicstaticStringbaseUrl= "http://esms.fjjl.net/WS/EscaleWS.asmx/"; publicStringTAG = getClass().getName(); voidConnLogin(Contextcontext,ConnHandle
rconnHandler,StringuserId,StringmsCode) {String operation = "Login";
if (!HttpCaller.isNetWorkStatus(context)) { Toast.makeText(context, R.string.
NetWorkAlarm, Toast.LENGTH_SHORT).show();} e l s e { H t t p C a l l e r h c = H t t p C a l l e r .
getInstance();
Stringurl = baseUrl+operation+"?" + "us erId="+userId+"&msCode="+msCode;
Log.d("ConnLogin", "url : "+url); LogingParse parse = newLogingParse(0,
connHandler);
hc.request(url, connHandler, HttpOrder. CT_XML, parse);
LoadingActCotroller la = LoadingActCotroller.
getInstance(context, hc); la.startLoading();
}}}
4.3.3 NFC 通訊功能的實(shí)現
智能終端與電子秤之間采用的是 NFC 進(jìn)行通訊,以下代碼分別實(shí)現了讀取標簽和寫(xiě)入標簽的功能:
/* 讀取標簽內容 */
privatebyte[] readFormTag(int offset, int length) throwsIOException,
Exception {if (length == 0)returnnull; byte[] result = null;
intloaction = 0;
int page = offset / 4;// 讀取初始頁(yè)面
i n t r e a d p a g e s = ( l e n g t h - ( 1 6 - loaction)) / 16 + 1 + 1;// 需要讀的頁(yè)面
for (inti = 0; i
}elseif (i == readpages - 1) {byte[] datas = null;
datas = cutOutByte(this . tagUtil . readFourPage(intent,(byte) (page + i * 4), false), 0, length- (16 - loaction) - (readpages - 2) * 16);
result = getMergeBytes(result, datas); }else {byte[] datas = null;
d a t a s = t h i s . t a g U t i l . readFourPage(intent,(byte) (page + i * 4), false);
result = getMergeBytes(result, datas);
}
}return result;}} /* 寫(xiě)入標簽內容 */
privatevoidwriteToTag(int offset, byte[] data) throwsIOException,
Exception {
intloaction = offset % 4;// 在一個(gè) page中的位置
byte[] pByteA = null;// 在一個(gè) page 中要寫(xiě)入初始位置前的數據
int page = offset / 4;// 寫(xiě)入頁(yè)面的初始頁(yè)int length = data.length;// 數據的長(cháng)度 this.tagUtil.writeTag(intent, (byte)
(page),cutOutByte(data, 0, 4), false);// 寫(xiě)
入第一頁(yè)
intmore_pages = (length - 4) / 4 + 1;//
繼續寫(xiě)入的頁(yè)數(總頁(yè)數 -1) for (inti = 1; i<= more_pages; i++) {
if (i == more_pages) {// 最后一頁(yè) intwriteNum = (length - 4) % 4;// 最后
一頁(yè)寫(xiě)入的位數
this.tagUtil.writeTag(intent,(byte) (page + more_pages),
getMergeBytes(
cutOutByte(data, 4 * i, writeNum), this.readFormTag((page + more_pages) * 4 + writeNum, 4 - writeNum)), false);
}else { this.tagUtil.writeTag(intent, (byte)
(page + i),
cutOutByte(data, 4 * i, 4), false);
}
}}
5.應用界面展示
Android 系統中,程序布局由 Layout 文件夾中的 XML 文件進(jìn)行設置,以下是部分應用頁(yè)面的展示:
6.結束語(yǔ)
隨著(zhù)無(wú)線(xiàn)網(wǎng)絡(luò )的不斷發(fā)展,智能移動(dòng)終端的迅速普及,基于 Android 和 NFC 技術(shù)已經(jīng)在越來(lái)越多的領(lǐng)域得到了應用,比如門(mén)禁、車(chē)票、支付、海報、數據傳輸等。當前作弊電子秤越來(lái)越泛濫,已成為監管者越來(lái)越頭疼的一個(gè)問(wèn)題,文中設計的基于 Android 和 NFC 技術(shù)的電子秤監管系統實(shí)現了電子秤與監管平臺之間的數據交換,為現場(chǎng)監管提供了一種有效、便捷的手段,保證市場(chǎng)的公平公正,維護消費者利益,樹(shù)立消費者對計量器具的信心。