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