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