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