基于射頻IC卡的旅游景點(diǎn)門(mén)禁系統研究與設計
文章出處:http://psychicreadingswithdeb.com 作者: 人氣: 發(fā)表時(shí)間:2011年12月14日
摘 要:本文以某旅游號點(diǎn)門(mén)禁管理系統為例,主要介紹基于射頻IC卡應用系統的設計過(guò)程,并詳細敘述了系統實(shí)現的具體技術(shù)。
1 引言
非接觸式lC卡又稱(chēng)射頻卡,由lC芯片、感應天線(xiàn)組成,封裝在一個(gè)標準的PVC卡片內,芯片及天線(xiàn)無(wú)任何外露部分,是近幾年發(fā)展起來(lái)的一項新技術(shù)。由于射頻IC卡具有存儲容量大、抗干擾能力強、便于攜帶、安全性高等優(yōu)點(diǎn),在公交、金融等很多領(lǐng)域都得到了廣泛的應用。本文主要以某旅游景點(diǎn)門(mén)禁管理系統為例,介紹基于射頻IC卡的應用系統的開(kāi)發(fā)思路和設計過(guò)程。
2 系統需求以及設計思路
目前我國大部分旅游景點(diǎn)仍遵循傳統的管理模式,門(mén)票一般采用紙質(zhì)票,這種方式不僅在售票與驗票過(guò)程中存在較大的財務(wù)漏洞,容易產(chǎn)生偷票、漏票、重復使用票的現象,也無(wú)法及時(shí)、準確統計游客的數量、流量以及區內的消費情況等。在旅游景點(diǎn)門(mén)票發(fā)行中采用射頻IC卡,不僅可以有效地消除這些隱患、堵絕漏洞,還有利于年卡和月卡的發(fā)行。另外,一般景點(diǎn)都有很多的游樂(lè )項目,特別是節假日,游樂(lè )場(chǎng)的售票亭前總會(huì )出現長(cháng)長(cháng)的人龍,為了避免游客排隊購票的時(shí)間浪費以及可能的消費流失,進(jìn)入景點(diǎn)的游客可以在進(jìn)場(chǎng)時(shí)購臨時(shí)卡用于刷卡游樂(lè ),到出場(chǎng)時(shí)再退卡。這樣游客在游樂(lè )的時(shí)候,就可以省去排隊購票的麻煩,大大提高了消費熱情和消費強度??梢钥闯?,在大型旅游景點(diǎn)開(kāi)發(fā)基于射頻IC卡的門(mén)禁管理系統,不僅可以較好地實(shí)現景點(diǎn)的自動(dòng)化管理,而且還可以通過(guò)射頻IC卡的發(fā)行來(lái)刺激游客的消費,實(shí)現游客不同娛樂(lè )項目的自動(dòng)收費。
該旅游景點(diǎn)有一個(gè)正門(mén),設2個(gè)驗卡通道,4個(gè)主要的游樂(lè )場(chǎng)所,考慮用5臺電腦組成局域網(wǎng)。由于景點(diǎn)占地面積較大,不同游樂(lè )場(chǎng)所相距較遠,采用R5485串行網(wǎng)絡(luò )無(wú)法實(shí)現長(cháng)距離的連接,所以系統對各游樂(lè )場(chǎng)均配備一臺電腦和讀卡器。選擇一臺性能較好的電腦A,放在景點(diǎn)入口處,用來(lái)實(shí)現發(fā)卡和進(jìn)正門(mén)的刷卡功能,其中讀卡器和發(fā)卡控制器分別接入其COM1口和COM2口:另外四臺電腦B、C、D和E分別設置在4個(gè)游樂(lè )場(chǎng)所用于刷卡消費,相應的讀卡器接入上位機的COM1口,在兩個(gè)主要的游樂(lè )場(chǎng)中增設充值點(diǎn),用2臺發(fā)卡器分別連接到上位機的COM2口。由于本系統選擇具有存儲功能的射頻IC卡,金額的扣除在射頻IC卡上完成,后臺數據庫主要用于存儲信息完成查詢(xún)和統計等操作,對實(shí)時(shí)性要求相對不高,所以考慮將電腦A作為服務(wù)器,存放集中數據庫的信息,電腦B、C、D、E客戶(hù)端程序的登錄驗證、IC卡有效性驗證等都需要訪(fǎng)問(wèn)電腦A中數據庫才可以完成,其本地數據庫中只存放在指定游樂(lè )場(chǎng)所刷卡消費的信息,可選擇相對空閑的時(shí)間對集中數據庫的信息進(jìn)行更新。
根據需求,我們大致確定了系統實(shí)現的主要功能,分別是卡發(fā)行功能、刷卡功能、卡充值、掛失和解掛、查詢(xún)統計、數據庫維護、用戶(hù)管理等,執行流程是:游客可以在進(jìn)入景點(diǎn)之前通過(guò)發(fā)卡功能辦理永久或臨時(shí)IC卡,相關(guān)信息存入集中數據庫相應的永久或臨時(shí)IC卡表中;在進(jìn)入景點(diǎn)或游玩某個(gè)游樂(lè )項目之前,根據永久卡還是臨時(shí)卡訪(fǎng)問(wèn)相應的表,檢查卡是否是有效卡,如果不是,給出相應的提示信息,拒絕其進(jìn)入,否則通過(guò)刷卡程序按照事先設定好的金額,判斷IC卡中的余額是否充足,如果余額不足,則提示相應的信息,不允許進(jìn)入,否則更改IC卡中的余額,并將該刷卡信息記錄在本地數據庫中,作為以后更新集中數據庫中消費表信息的依據;臨時(shí)卡在退園時(shí)可以根據余額退還,為了查詢(xún)統計方便,退卡后除了將臨時(shí)卡表的對應記錄刪除外,還應在相應的消費表中將該操作記錄下來(lái)。
3 具體實(shí)現
由于Visual Basic對串口和數據庫的訪(fǎng)問(wèn)控制均提供了豐富的功能,且具有簡(jiǎn)單易學(xué)的特點(diǎn),所以本系統采用Visual Basic 6.0作為開(kāi)發(fā)環(huán)境。
3.1訪(fǎng)問(wèn)IC卡發(fā)卡器和讀卡器
在VB中,上位機對串口的通訊可采用兩種方法,一種是調用W indows的API函數,另一種是利用VB的通信控件。本系統采用VB提供的MSComm通信控件實(shí)現對IC卡發(fā)卡器和讀卡器的訪(fǎng)問(wèn)。注意,由于系統的設計涉及上下位機的通訊,需事先為每一個(gè)下位機分配一個(gè)唯一的機號,在處理時(shí)還可以根據刷卡機的機號確定刷卡的業(yè)務(wù)。
在所有提供和下位機通信功能的程序界面上放置MSComm控件,為了實(shí)現上下位機的通信,MSComm控件在使用前有許多參數需要設置,比如確定下位機和上位機的哪個(gè)端口連接,設置波特率等,假設MSComm控件的名稱(chēng)為MSComml,IC卡讀寫(xiě)器與串口2連接,則具體屬性設置參考以下程序段:
MSComm1.CommPort=2設置串口號
MSComm1.Settings = ”9600,N,8,1” 串口的屬性
設置InputLen為0時(shí),用Input將使?MSComm 控件讀取接收緩沖區中全部的內容
MSComm1.InputLen = 0
MSComm1.InpulMode = comlnputModeBiary 二進(jìn)制接受方式
MSComm1.RThreshold =1,每1個(gè)字節響應消息
MSComm1.InBuferSize=1024設置接收緩沖區的字節長(cháng)度
MSComm1.Po~Open=True,打開(kāi)開(kāi)通信串口
一般將以上程序段放置在窗體的Load事件中,當執行卡發(fā)行功能或運行刷卡程序時(shí),一運行程序就可以打開(kāi)串口,只要將lC卡靠近發(fā)卡器或讀卡器,它們就可以讀出保存征 C卡中的卡號和余額等信息,MSComm控倬會(huì )自動(dòng)觸發(fā)OnComm事件過(guò)程,在該過(guò)程中,可以讀取接收緩沖區中的數據,獲得相關(guān)的卡號和余額等信息,根據要求對數據庫進(jìn)行操作。
3,2 串行網(wǎng)絡(luò )中多讀卡器的訪(fǎng)問(wèn)控制
由于對每個(gè)游樂(lè )項目的刷卡消費只有一臺讀卡機通過(guò)RS232串口和計算機相連,所以在讀卡程序控制時(shí)采用被動(dòng)模式,只有讀卡器接收到信息后,才觸發(fā)上位機對其進(jìn)行處理。如果是大型游樂(lè )場(chǎng)所,可能需要設置多個(gè)讀卡器同時(shí)進(jìn)行刷卡,應該如何處理呢?如果多個(gè)游客同時(shí)刷卡怎么辦?本系統中,在景點(diǎn)入口處,由于人流量比較大,為減少等待時(shí)間,提高檢票的速度,設置了兩個(gè)讀卡通道,這兩個(gè)讀卡器通過(guò)RS485網(wǎng)絡(luò )并聯(lián),利用RS4851RS232轉接器和上位機的串口連接。為防止同時(shí)讀卡造成的沖突,對RS485網(wǎng)絡(luò )并聯(lián)的多個(gè)讀卡器的控制,一般不再被動(dòng)等待讀卡器觸發(fā)事件,而是采用主動(dòng)模式編程。我們利用定時(shí)器控件Timerl來(lái)控制程序按照一定的時(shí)間間隔順序訪(fǎng)問(wèn)多個(gè)讀卡器,取得了良好的處理效果。參考程序段如下:
Private Sub Command1_Click()‘訪(fǎng)問(wèn)指定讀卡器程序段
m = m + 1
‘o數組中保存RS485網(wǎng)絡(luò )中每個(gè)讀卡器的機號,UBound(a)獲得讀卡器的個(gè)數,讀卡時(shí)按指定的順序依次訪(fǎng)問(wèn)每個(gè)讀卡器
If m > UBound(a)Then
m = 1
End If
If Not MSComm1.PortOpen Then MSComm1.PortOpen= True
Readrecord a(m),向指定讀卡器發(fā)出訪(fǎng)問(wèn)命令
‘打開(kāi)定時(shí)器,間隔一定時(shí)間自動(dòng)引發(fā)Timer1 Timer事件,對指定讀卡器讀取的信息進(jìn)行處理
Timer1.Enabled = True
End Sub
Private Sub Timer1 Timer()
Dim InByte()As Byte,定義一個(gè)二進(jìn)制指針?lè )沤邮盏降臄祿?br />
‘關(guān)掉定時(shí)器,注意,這里必須關(guān)掉定時(shí)器,否則很容易破壞程序的執行時(shí)序
Timer1.Enabled = False
InByte()=NLSComm1.Input請理接收緩沖區,此時(shí)接收的字節數已經(jīng)為0
‘對接收到的信息根據不同情況進(jìn)行處理
Command1.Valu0=True‘繼續對下一個(gè)讀卡器進(jìn)行訪(fǎng)問(wèn)
End Sub
3.3集中數據庫的更新處理
本系統為了提高處理速度,減少多臺設備并行訪(fǎng)問(wèn)對系統性能產(chǎn)生的影響,將每個(gè)客戶(hù)端程序處理的刷卡信息保存在本地數據庫中,但同時(shí)也帶來(lái)了一系列的問(wèn)題,比如對集中數據庫刷卡數據的及時(shí)更新,數據庫更新時(shí)異常情況的處理等。為提高系統的安全性,集中數據庫的更新處理采用存儲過(guò)程實(shí)現??蛻?hù)端程序通過(guò)調用事先編制好的存儲過(guò)程,實(shí)現對遠程數據庫的更新操作。與標準的SQL語(yǔ)句不同,由于存儲過(guò)程由數據庫服務(wù)器編譯和優(yōu)化,可以有效提高程序的運行速度,另外,存儲過(guò)程中的SQL語(yǔ)句屬于事務(wù)處理范疇,即存儲過(guò)程中的所有SQL語(yǔ)句要么都執行,要么都不執行,從而保證了數據的完整性和一致性。
4 結束語(yǔ)
本文根據某旅游景點(diǎn)IC卡業(yè)務(wù)的需求,從系統的設計思路、讀卡器的訪(fǎng)問(wèn)控制以及數據庫的更新處理等幾個(gè)方面詳細敘述了系統的設計過(guò)程和實(shí)現的技術(shù)。除了可以應用于門(mén)禁管理,本文所介紹的Ic’卡應用系統的開(kāi)發(fā)技術(shù)具有一定的普及性,可應用于停車(chē)場(chǎng)、電影院、校園一卡通等領(lǐng)域,具有廣泛的應用前景。從已有系統的投入運行情況來(lái)看,系統的開(kāi)發(fā)使用均收到了良好的經(jīng)濟效益和社會(huì )效益。
作者簡(jiǎn)介:淮陰工學(xué)院計算機工程系 周蕾 劉虎
參考文獻:
1 董加敏,停車(chē)場(chǎng)管理系統的設計與優(yōu)化[J],河南師范大學(xué)學(xué)報(自然科學(xué)版),2007,35(1):190—193.
2 肖文波,梁楚樵,基于非接觸式IC卡的管理信息系統的設計[J].武漢理工大學(xué)學(xué)報:信息與管理工程版,2005,27(5):279—281.
3 魏永祿,溫慧明,李彥軍.基于RFID技術(shù)的無(wú)障礙門(mén)禁管理[J].微計算機信息,2007,23(4—2):255—256,243
【稿件聲明】:如需轉載,必須注明來(lái)源和作者,保留文中圖片和內容的完整性,違者將依法追究。