基于射頻IC卡的粉煤灰銷售系統(tǒng)的設計與實現(xiàn)
文章出處:http://m.overnightmodel.com 作者: 人氣: 發(fā)表時間:2012年04月08日
前言
射頻IC卡又稱非接觸式IC卡,與接觸式IC卡相比。它不需要與讀寫設備進行接觸就可以進行通信,并具有更高的安全性以及抗干擾性,另外對環(huán)境的適應性也更強。目前國內(nèi)引進的射頻IC卡主要基于Philips公司的Mifare技術,本系統(tǒng)就采用了Mifare 1射頻IC卡(簡稱Ml卡)。
1 M1卡
M1卡由天線和ASIC(專用集成電路)組成。其中ASIC包括一個高速(106KB波特率)的射頻接口,一個控制單元和一個8K位EEPROM。
1.1工作原理
M1卡內(nèi)沒有電源。當與讀寫器進行通信時,讀寫器會向M1卡發(fā)一組固定頻率的電磁波,在電磁波的激勵下,卡內(nèi)Lc諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷。當所積累的電荷達到2V時,它將做為電源為其它電路提供工作電壓,從而與Ml卡進行數(shù)據(jù)交換。
1.2存儲結構
Ml卡內(nèi)部有16個扇區(qū)(0—15),每扇區(qū)有4個塊(0-3),共64塊(0-63)。0扇區(qū)的塊0用于存放廠商信息,不能更改。其他各扇區(qū)的0、1、2塊為數(shù)據(jù)塊用于存儲數(shù)據(jù)塊3為控制塊,用于設計該扇區(qū)其他3個數(shù)據(jù)塊的存取策略。
2系統(tǒng)設計與實現(xiàn)
2.1系統(tǒng)流程與結構圖
xx電廠粉煤灰銷售系統(tǒng)最核心的業(yè)務為記錄各個貨車每次的提貨信息(提貨種類、重量、單價、總金額、提貨時間等),從而滿足日后企業(yè)決策者的查詢、統(tǒng)計及報表操作。系統(tǒng)涉及四個部門,各部門主要職責如下:
銷售部:負責辦理IC卡發(fā)放、掛失、退卡、充值等操作。
門房:司機刷卡后,根據(jù)卡中余額判斷是否允許進廠。并記錄進出廠時間。
磅房:記錄貨車空磅重量以及提貨后的重量。
庫房:記錄貨車的提貨種類及相關提貨信息。
一次完整的銷售流程如圖1所示。
圖1系統(tǒng)流程圖
四個部門在物理位置上比較分散,首先組成無線局域網(wǎng),再與中心數(shù)據(jù)庫服務器相連,實現(xiàn)數(shù)據(jù)的存取。各部門均配置了讀卡器(通過USB接口與電腦連接),對IC卡進行讀寫。系統(tǒng)結構如圖2所示。
圖2系統(tǒng)結構圖
2.2數(shù)據(jù)存儲結構
經(jīng)分析,IC卡中可存儲的數(shù)據(jù)項包含兩類:一類是靜態(tài)數(shù)據(jù)項,該類數(shù)據(jù)項一旦寫入IC中后,就不會或很少會再去修改。如IC卡號、貨車車號、提貨種類、IC卡狀態(tài)(正常、掛失、無效)。另一類為動態(tài)數(shù)據(jù)項。該類數(shù)據(jù)項為每次銷售流程所J“’t-的數(shù)據(jù)項,如提貨重量、單價、總金額、提貨時間等等,這些數(shù)據(jù)項每次都會根據(jù)具體提貨情況不同而變化。
如圖1所示,在提貨過鞭中,門房、磅房、庫房各自產(chǎn)生一部分數(shù)據(jù)構成一次完整的銷售數(shù)據(jù)。那么在形成一次完整的銷售數(shù)據(jù)之前,是將已產(chǎn)生的臨時數(shù)據(jù)先緩存在IC卡中,還是先提交到數(shù)據(jù)庫,是系統(tǒng)設計的重點。因為這涉及到IC卡中數(shù)據(jù)的存儲結構。對該問題考慮過兩種方式:
一、將臨時銷售數(shù)據(jù)先緩存在IC卡中,然后在出廠時將本次銷售數(shù)據(jù)一次性提交到數(shù)據(jù)庫。這種方式的好處在于可以在數(shù)據(jù)庫端保證銷售數(shù)據(jù)的完整性,因為銷售數(shù)據(jù)是一次性提交,而不是分步提交的。但這種方式有兩個弊端:1、安全性不高,本系統(tǒng)使用的IC卡只是邏輯加密卡,一些重要的數(shù)據(jù)存放在數(shù)據(jù)庫更加安全:2、需要非常頻繁的對IC卡進行寫操作,但設備本身對IC卡進行寫操作的次數(shù)是有限的。
二、IC卡中只存儲之前提到的靜態(tài)數(shù)據(jù)項。這種方式數(shù)據(jù)更加安全,同時又不需要頻繁的對IC卡進行寫操作。系統(tǒng)采用該方式。最后存儲結構如表1所示:
表1 IC卡內(nèi)部數(shù)據(jù)存儲結構
2.3讀寫M1卡
Ml卡讀寫流程如圖3所示。整個系統(tǒng)在.NET平臺下使用c#語言實現(xiàn)。本系統(tǒng)使用的是深圳明華公司的URF—R330 USB接口的讀卡器,附帶了動態(tài)鏈接庫mwrf32.dll。在.NET平臺中編寫的面向CLR的代碼為托管代碼,要調(diào)用非托管代碼。需要使用DllImport聲明庫中的函數(shù)。所有有關的函數(shù)都被封裝在類Common中。為了節(jié)省篇幅,只列出了其中一個函數(shù)聲明,代碼如下所示:
圖3 M1卡讀寫流程圖
此處只列出了最簡單的讀IC卡操作。在實際的應用中,使用了多線程用來進行IC卡讀寫操作,提高了系統(tǒng)的性能。
結語
本文對軟件結構、IC卡內(nèi)部存儲結構、M1卡的操作流程做了詳細的闡述。從實踐中的運行結果來看,達到了預期的目標?,F(xiàn)有IC卡只能稱為邏輯加密卡,若要進一步的提高安全性。則可以使用CPU卡,它具備計算和加密能力,安全性十分高,不過成本也會相應增加。
參考文獻
[1]張可可.基于c#的射頻卡讀寫原理及實現(xiàn)[J].微型機與應用.2010.29(14).
[2]謝高生.動態(tài)密鑰在Mifare射頻IC卡識別系統(tǒng)中的應用[J].計算機測量與控制.2009.17(4).
[3]NXP SemIConductors.MIFARE Standard 4KByte Card IC func—tional speci cation,F(xiàn)ebruary 2007.
【稿件聲明】:如需轉載,必須注明來源和作者,保留文中圖片和內(nèi)容的完整性,違者將依法追究。