基于RFID的小區(qū)門(mén)禁管理系統(tǒng)
引言
隨著科技的發(fā)展,人們生活質(zhì)量不斷提高,為方便管理小區(qū)車(chē)輛,同時(shí)防止外來(lái)車(chē)輛進(jìn)入小區(qū),本文給出了一種新的方法。
伴隨著產(chǎn)業(yè)化信息時(shí)代的到來(lái),物聯(lián)網(wǎng)這個(gè)概念出現(xiàn)在了人們視線。一種新的技術(shù)簡(jiǎn)稱(chēng)RFID,英文全名為RadioFrequencyIdentification,中文稱(chēng)之為無(wú)線射頻識(shí)別技術(shù)。這項(xiàng)技術(shù)目前已經(jīng)得到廣泛的應(yīng)用。我國(guó)目前對(duì)此項(xiàng)技術(shù)的研究也日趨成熟,不久的將來(lái),RFID技術(shù)將發(fā)揮出巨大的作用。
我們目前熟知的數(shù)據(jù)庫(kù)包括Oracle、SQL、Access數(shù)據(jù)庫(kù)。其中,Oracle數(shù)據(jù)庫(kù)為關(guān)系數(shù)據(jù)庫(kù),雖然應(yīng)用廣泛,但是安裝復(fù)雜、價(jià)格昂貴、維護(hù)復(fù)雜。SQL算是一種中型數(shù)據(jù)庫(kù),但是復(fù)雜程度高,性?xún)r(jià)比不強(qiáng)。因此,本文采用最常見(jiàn)的Access數(shù)據(jù)庫(kù),簡(jiǎn)單、方便、實(shí)用,價(jià)格低廉,后期維護(hù)也比較簡(jiǎn)單。同時(shí),它還是Windows自帶的數(shù)據(jù)庫(kù),從而省去了安裝的繁瑣過(guò)程。
本文主要是利用RFID技術(shù),通過(guò)RS232將上位機(jī)與RFID讀寫(xiě)器連接通信,將數(shù)據(jù)傳遞到上位機(jī)[2],上位機(jī)軟件利用VC6.0的ADO技術(shù)來(lái)訪問(wèn)Access數(shù)據(jù)庫(kù)[3]。
1系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)由RFID讀寫(xiě)器、電子標(biāo)簽、PC機(jī)、VC6.0以及Access數(shù)據(jù)庫(kù)軟件組成。基本原理:RFID的讀寫(xiě)器通過(guò)天線,發(fā)送無(wú)線載波信號(hào),當(dāng)有電子標(biāo)簽的車(chē)輛經(jīng)過(guò)發(fā)射區(qū)域時(shí)會(huì)被激活,并將自身的信息通過(guò)天線發(fā)送回讀寫(xiě)器。讀寫(xiě)器將收到的信號(hào)進(jìn)行轉(zhuǎn)換,通過(guò)RS232串口發(fā)送到上位機(jī)軟件。該軟件在VC6.0環(huán)境編譯下,采用C++語(yǔ)言編寫(xiě),采集接收到的數(shù)據(jù),并將數(shù)據(jù)與之前錄入Access數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行對(duì)比。如果符合條件,則利用RS232發(fā)出通過(guò)命令,讓車(chē)輛進(jìn)入;否則,禁止進(jìn)入。本系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)圖
2RFID技術(shù)簡(jiǎn)介
RFID技術(shù)是一種射頻識(shí)別技術(shù),主要是利用感應(yīng)、電磁場(chǎng)或者電磁波進(jìn)行的一種自動(dòng)識(shí)別技術(shù)。RFID技術(shù)的優(yōu)點(diǎn)是非接觸式的,不用人工干預(yù),適合各種環(huán)境等。此項(xiàng)技術(shù)非常適用于多目標(biāo)和運(yùn)動(dòng)目標(biāo)的識(shí)別,這非常符合小區(qū)內(nèi)車(chē)輛運(yùn)動(dòng)的特點(diǎn)。
RFID系統(tǒng)由讀寫(xiě)器和電子標(biāo)簽組成。
電子標(biāo)簽作為RFID系統(tǒng)的重要組成部分,存儲(chǔ)著被識(shí)別物體的相關(guān)信息。電子標(biāo)簽里面的電子編碼具有唯一性。一般情況下電子標(biāo)簽會(huì)放置在被識(shí)別物體上,本文里應(yīng)該放置在居民車(chē)輛上,被讀寫(xiě)器所識(shí)別。
讀寫(xiě)器是一種射頻技術(shù)設(shè)備,一般用來(lái)讀寫(xiě)電子標(biāo)簽的信息。讀寫(xiě)器一般具有與PC機(jī)的通信接口,比如RS232、RS485、以太網(wǎng)接口等。本文主要利用讀寫(xiě)器的RS232接口,通過(guò)串口線與PC機(jī)通信。
3系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)在VC6.0環(huán)境編譯下,通過(guò)C++語(yǔ)言編寫(xiě)軟件界面。軟件包括用戶(hù)界面設(shè)計(jì)、通信接口部分和數(shù)據(jù)庫(kù)處理部分。圖2所示為其軟件設(shè)計(jì)流程圖。
圖2 系統(tǒng)軟件流程圖
3.1用戶(hù)界面設(shè)計(jì)
本系統(tǒng)在基于MFC框架進(jìn)行設(shè)計(jì)時(shí),系統(tǒng)界面主要有通信連接操作、數(shù)據(jù)庫(kù)鏈接操作和信息顯示部分。當(dāng)有車(chē)輛進(jìn)入時(shí),電子標(biāo)簽數(shù)據(jù)發(fā)送到PC機(jī),本軟件會(huì)顯示當(dāng)前該用戶(hù)所有的詳細(xì)信息。
3.2通信接口[4]
在Windows環(huán)境下,VisualC++6.0軟件采用其自帶的MSComm控件,可以實(shí)現(xiàn)讀寫(xiě)器與PC機(jī)的串口通信,利用RS232實(shí)現(xiàn)數(shù)據(jù)的接收。使用該控件的方法如下:
第一步,在當(dāng)前工程中插入該控件,并為其添加變量m_ctrlComm。
第二部,添加串口處理消息函數(shù)OnComm(),當(dāng)有數(shù)據(jù)發(fā)送來(lái)時(shí),響應(yīng)該函數(shù)。此處要注意的是,接收到的數(shù)據(jù)格式為字符,并需要對(duì)該字符變量進(jìn)行轉(zhuǎn)換。程序如下:
BYTEbt=*(char*)(rxdata+k);//接收到的數(shù)據(jù),為字符型temp=atoi(m_tempstr);〃最終需要的數(shù)據(jù)
第三步,添加串口初始化函數(shù),其初始化代碼如下:
m_ctrlComm.SetCommPort(1);//選擇comlm_ctrlComm.SetSettings("9600,n,8,1");//波特率9600,無(wú)校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位
m_ctrlComm.SetInputModel(1);〃1表示以二進(jìn)制方式檢取數(shù)據(jù)
本軟件提供有對(duì)串口參數(shù)的多種配置選擇,用戶(hù)可根據(jù)實(shí)際情況選擇適當(dāng)?shù)膮?shù)。
3.3數(shù)據(jù)庫(kù)處理[5]
在VisualC++6.0軟件中提供有ADO技術(shù)訪問(wèn)Access數(shù)據(jù)庫(kù)。因此,首先必須建立一個(gè)Access數(shù)據(jù)庫(kù)文件并命名為CarData,并在此文件中建立一個(gè)表,命名為admin,在此表中可以包含User、Old、ID、Telephone、Photo這幾個(gè)字段,分別用以存儲(chǔ)用戶(hù)的姓名、年齡、車(chē)牌號(hào)、用戶(hù)電話、照片詳細(xì)信息。其中,User字段格式為文本,Photo字段的格式為OLE對(duì)象,其余字段格式為整型變量。在首次使用或者有新的用戶(hù)購(gòu)買(mǎi)車(chē)輛時(shí),還必須對(duì)用戶(hù)信息進(jìn)行錄入。
3.3.1數(shù)據(jù)庫(kù)鏈接
以下是對(duì)數(shù)據(jù)庫(kù)操作的步驟:
在StdAfx.h頭文件中導(dǎo)入msado15.dll文件。
在主窗口類(lèi)聲明兩個(gè)變量,分別是記錄集的指針和ADO的編程中創(chuàng)建數(shù)據(jù)庫(kù)鏈接的智能指針。與此同時(shí),還需要在CDatabaseApp應(yīng)用程序類(lèi)中加入初始化函數(shù)InitInstance(),代碼如下:
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=CarData.mdb","","",adModeUnknown)
3.3.2數(shù)據(jù)庫(kù)信息的添加
首先要定義一個(gè)類(lèi)型為CString的變量sql,并給該變量賦值,讓其選中我們之前建立的表admin,然后打開(kāi)數(shù)據(jù)庫(kù),代碼如下:
sql="SELECT*FROMadmin";m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimist,adCmdTe
之后,就可以給數(shù)據(jù)庫(kù)添加每個(gè)用戶(hù)自己的信息,添加函數(shù)為PutCollect()。
3.3.3從數(shù)據(jù)庫(kù)查詢(xún)信息
軟件進(jìn)入正常使用后,當(dāng)車(chē)輛攜帶的電子標(biāo)簽被激活時(shí),相關(guān)信息被發(fā)送到PC機(jī)上,本軟件將所得到的信息與數(shù)據(jù)庫(kù)中存儲(chǔ)的信息進(jìn)行對(duì)比,如果信息匹配,則對(duì)車(chē)輛放行。
以查詢(xún)車(chē)牌號(hào)為例子,m_ID為獲取的車(chē)牌號(hào),代碼如下:sql="SELECT*FROMadminwhereID='"+m_ID+"'”;m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdTeXt);
4結(jié)語(yǔ)
伴隨著現(xiàn)代科技的突飛猛進(jìn),物聯(lián)網(wǎng)技術(shù)已迅速普及,本文正是在這一技術(shù)基礎(chǔ)上,進(jìn)行的軟件設(shè)計(jì),而且,本軟件也可以應(yīng)用到其他帶有RS232串口的外圍設(shè)備上,只要稍加改動(dòng),便可方便移植應(yīng)用。
20211020_616ef48739166__基于RFID的小區(qū)門(mén)禁管理系統(tǒng)