1 引言
一卡通管理係統中(zhōng)包含很多模塊,比如考勤係統,門(mén)禁管理係統,消(xiāo)費係統,人事管理係統,射頻IC卡在一卡通中應用較廣,經常應用於一卡通中的考勤管(guǎn)理係統的應用場景,非接觸式lC卡又稱射(shè)頻卡(kǎ),由lC芯(xīn)片、感應天線組成,封裝在一個標準的PVC卡(kǎ)片內,芯片及天線無(wú)任何(hé)外露部分,是近幾年發展起來的一項新(xīn)技術。由於射頻IC卡(kǎ)具有存儲容量大、抗幹擾能力強、便於攜帶(dài)、安全性高等優點(diǎn),在公交、金融等很多領(lǐng)域都得(dé)到了廣(guǎng)泛的應用。本文主要以某旅遊景點門禁管理係統為例,介紹基於射頻IC卡的應用係(xì)統(tǒng)的開發思路和設計過程(chéng)。
2 係統需求以及設計思路
目前我國大部分旅遊景點仍遵循傳統的管理模式(shì),門票(piào)一般(bān)采用紙質票,這種方式不僅在售票(piào)與驗票過程中(zhōng)存在較大的(de)財務漏洞,容易產生偷票、漏票、重複使用票(piào)的現象(xiàng),也無法及時、準確統計遊客的數量、流量以及區內(nèi)的消費情況等。在旅(lǚ)遊景點門票發(fā)行中采用射頻IC卡,不僅可以有(yǒu)效地消除這些(xiē)隱患、堵絕漏洞,還有利於年卡和月卡的發行。另外,一般景點都(dōu)有很多的遊樂項目,特(tè)別是節假日,遊樂場的售票亭前總(zǒng)會出現長長的人龍,為了避免遊客排隊購票的時間浪費以及可(kě)能的消費流失,進入景點的遊(yóu)客可以在進場時購臨(lín)時卡用於刷(shuā)卡遊樂,到出場(chǎng)時再退卡。這樣遊(yóu)客在遊樂(lè)的時候(hòu),就可以省(shěng)去排隊購票的(de)麻煩,大大提高了消費熱情和消費強度。可以看出,在大型旅遊景點開發基於射頻IC卡的門禁管理係統,不僅可以較(jiào)好地實現景點的自動化管(guǎn)理,而且還可以通過射頻IC卡的發行來刺激遊客的消費,實現遊(yóu)客不同娛樂項目的自動收費。
如何設計一卡通的射頻IC卡管理係統?
該旅遊景點有(yǒu)一個正門,設2個驗卡通道,4個主要的遊樂場所,考慮用5台電(diàn)腦組成局域網。由於景點占地麵積較大,不同遊樂場(chǎng)所相距較遠,采用R5485串行網(wǎng)絡無法實現長距離的連接,所以係統對各遊樂場(chǎng)均配備一台電腦和讀卡器。選擇(zé)一台性能較好的電腦A,放在景點入(rù)口處,用來實現發卡和(hé)進正門的刷卡功能,其中讀卡器和發卡控製器分別接入其COM1口和COM2口:另外四台電腦B、C、D和E分別設(shè)置在4個(gè)遊樂場所用於刷卡消費,相應的讀卡器接入上位機的COM1口,在(zài)兩個主要的遊樂場(chǎng)中(zhōng)增設充值點,用2台發卡器分別連(lián)接到上位機的COM2口。由於(yú)本係統選擇具有存儲功能的射頻IC卡,金(jīn)額的(de)扣除在射頻(pín)IC卡上完成,後台數據庫主要用於存儲信(xìn)息完(wán)成查詢和統計(jì)等操作,對實時性要求相(xiàng)對不高,所以考慮將電腦A作(zuò)為服務(wù)器,存放集中數據庫的信息,電腦B、C、D、E客戶(hù)端程(chéng)序的登錄驗證(zhèng)、IC卡有效(xiào)性驗證等(děng)都需(xū)要訪問電腦A中數據庫(kù)才可以完成,其本地數據庫(kù)中(zhōng)隻存放在指(zhǐ)定遊樂場所刷卡消費的(de)信息,可選(xuǎn)擇相對空閑的(de)時間對集中數據庫的(de)信息進行更新(xīn)。
根據需求(qiú),我們大致確定了係統實現的主要功能,分別是(shì)卡發(fā)行功(gōng)能、刷卡(kǎ)功能(néng)、卡充值、掛失和解掛、查詢統計、數據庫維護、用戶管理等,執行流(liú)程是:遊客可(kě)以在進入景(jǐng)點之前通(tōng)過(guò)發卡功能辦理(lǐ)永久或臨時IC卡(kǎ),相關信息存入集中數據庫相應的永(yǒng)久或臨時(shí)IC卡表中;在進入景點(diǎn)或遊玩某(mǒu)個遊樂(lè)項(xiàng)目之(zhī)前(qián),根據永久(jiǔ)卡還是臨時卡訪問相應的表,檢查卡是否是有效卡,如果不是,給(gěi)出相應的提示信息,拒絕其進(jìn)入,否則通過刷卡程序按照事先設定好的金額,判斷IC卡(kǎ)中(zhōng)的餘額是否充足,如果餘額不足,則提示相應的信息,不允(yǔn)許進入,否則更改IC卡中的餘(yú)額,並將(jiāng)該刷卡信息記錄在本地數據庫中,作為以(yǐ)後更新集(jí)中數據庫中消費表信息的依據;臨時卡(kǎ)在退園時可以根據餘額退還,為了查詢統計方便,退卡後(hòu)除了將臨時(shí)卡表的(de)對(duì)應(yīng)記錄(lù)刪除(chú)外,還應在相應的消(xiāo)費表中將(jiāng)該操作(zuò)記錄下來。
3 具(jù)體實現
由於Visual Basic對串(chuàn)口和數據庫的訪問控(kòng)製均提供了豐富(fù)的功能,且具有簡單易學的特點,所以本(běn)係統采(cǎi)用Visual Basic 6.0作為開發環境。
3.1訪問IC卡發卡器和讀卡器
在VB中,上位機(jī)對串(chuàn)口的通訊可(kě)采用兩種方法,一種是調用W indows的API函數,另一種是利(lì)用VB的通信控件。本係統采用VB提供(gòng)的MSComm通信控件(jiàn)實現對IC卡發卡(kǎ)器和讀卡器的訪問。注(zhù)意,由於係統的設計涉及(jí)上下位機的通訊,需事先為每一個下位機分配一個唯一的機號,在(zài)處理時還可以根據刷卡機的機號確定(dìng)刷卡的(de)業務。
在所有提供和下位機通信功能的程序界麵上放(fàng)置MSComm控件,為(wéi)了實現上下位機的通信,MSComm控件在使(shǐ)用前有許多參數需要設置,比如確定下位機和上位機的哪個端口連接,設置波特率等,假設MSComm控件的名稱為MSComml,IC卡讀寫器與串口2連接,則具體屬性設置參考(kǎo)以(yǐ)下程序段:
MSComm1.CommPort=2設置串口號
MSComm1.SetTIngs = ”9600,N,8,1” 串口(kǒu)的屬性
設置InputLen為0時(shí),用Input將使?MSComm 控件讀(dú)取接收緩衝區中全部的內容
MSComm1.InputLen = 0
MSComm1.InpulMode = comlnputModeBiary 二進製接(jiē)受(shòu)方式
MSComm1.RThreshold =1,每1個字節響應消(xiāo)息
MSComm1.InBuferSize=1024設置接收(shōu)緩衝區的字節長度
MSComm1.Po~Open=True,打開開通信串口
一般將(jiāng)以上程(chéng)序段放置在窗體的(de)Load事件中(zhōng),當執行卡發行功能或運行刷卡程序時,一運行程序就可以(yǐ)打開串口,隻要將lC卡靠近發卡器(qì)或讀卡器,它們就可以讀出保存征 C卡中的卡號和(hé)餘額等信息,MSComm控倬會自動觸發OnComm事件(jiàn)過程,在該(gāi)過(guò)程中,可以讀取接收緩(huǎn)衝區中的數(shù)據,獲得相關(guān)的卡號和餘額(é)等信息,根據要求對數(shù)據庫(kù)進行操作。
3.2 串行網絡中多讀卡器的訪問控製
由於對每個遊樂(lè)項目的(de)刷卡消(xiāo)費隻有一台讀卡機通過RS232串口和計算機相連,所以(yǐ)在讀卡程序(xù)控製時采用被動模式,隻有讀卡器接收到信(xìn)息後,才觸發上位機對其進行處理。如果是大型遊樂場(chǎng)所,可能需要設置多個讀卡器同時(shí)進(jìn)行刷卡,應該如何處理呢?如果多個遊客同時刷卡怎麽辦?本係統(tǒng)中,在(zài)景點入口處,由於人流量比較(jiào)大,為減少等待時間(jiān),提高檢(jiǎn)票的速度,設置了兩個讀卡通道,這兩個讀卡器(qì)通過RS485網絡並聯,利用RS4851RS232轉接器和上位機的(de)串口連接。為防止(zhǐ)同時讀卡造成的衝(chōng)突(tū),對RS485網絡並聯的多個讀卡器的控製,一般不再被動等待(dài)讀卡器觸發事件,而是采用主(zhǔ)動模式編程。我們利用定時器(qì)控件TImerl來控製程(chéng)序按照一定的時間間隔順序訪(fǎng)問多個讀卡器(qì),取得了良好的處理效果(guǒ)。參考程序段如下(xià):
Private Sub Command1_Click()‘訪問指定讀卡器程序段
m = m + 1
‘o數組中保存RS485網絡中每個(gè)讀卡器(qì)的機號,UBound(a)獲得讀卡器的個數,讀卡時按指(zhǐ)定的順序依次訪問每個讀(dú)卡器
If m 》 UBound(a)Then
m = 1
End If
If Not MSComm1.PortOpen Then MSComm1.PortOpen= True
3.3集中數據庫(kù)的更新處理
本係統為了提高處理速度,減少多台設備並行訪問對係統性能產生的影響,將每個客戶端程序處(chù)理(lǐ)的刷卡信息保存在本地(dì)數據庫中,但同時也帶來了一係(xì)列的問題,比如對集中數據庫(kù)刷卡數據的及時更新,數據(jù)庫更新時異常情況的處理等。為提高(gāo)係統的安全性,集中數據(jù)庫的(de)更新(xīn)處理采用存(cún)儲過(guò)程實現。客戶端程序通過調用事先編製好的存儲過程,實現對遠程數據庫的更新操作。與標準的SQL語句不同,由於存儲過程由數據庫服務器編譯和(hé)優化,可以有效提高程序的運行速度,另外,存儲過程中的SQL語句屬於事務處理範疇,即存(cún)儲過程中的所有SQL語句要麽都執行,要(yào)麽(me)都(dōu)不執行,從而(ér)保證了數據的完整性和一致性。
4 結束語
本文根據某旅遊景點IC卡業務的需(xū)求,從係統的設計思路、讀卡器的訪(fǎng)問控製以及數據庫的更新處理等幾個(gè)方麵詳細敘述了係(xì)統的設計過程和實現的技術。除(chú)了可以(yǐ)應用於門禁管理,本文所(suǒ)介紹的Ic卡應用係(xì)統的開發技術(shù)具有(yǒu)一定的普及性(xìng),可應用(yòng)於停車場、電影院、校園一卡(kǎ)通等領域,具有廣泛的應用前景。從已有係統的投入運行情況來(lái)看(kàn),係統的開發使用均收到了(le)良好的經濟效益和社會(huì)效(xiào)益(yì)。