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