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