基于RFID的小区门禁管理系统
扫描二维码
随时随地手机看文章
引言
随着科技的发展,人们生活质量不断提高,为方便管理小区车辆,同时防止外来车辆进入小区,本文给出了一种新的方法。
伴随着产业化信息时代的到来,物联网这个概念出现在了人们视线。一种新的技术简称RFID,英文全名为RadioFrequencyIdentification,中文称之为无线射频识别技术。这项技术目前已经得到广泛的应用。我国目前对此项技术的研究也日趋成熟,不久的将来,RFID技术将发挥出巨大的作用。
我们目前熟知的数据库包括Oracle、SQL、Access数据库。其中,Oracle数据库为关系数据库,虽然应用广泛,但是安装复杂、价格昂贵、维护复杂。SQL算是一种中型数据库,但是复杂程度高,性价比不强。因此,本文采用最常见的Access数据库,简单、方便、实用,价格低廉,后期维护也比较简单。同时,它还是Windows自带的数据库,从而省去了安装的繁琐过程。
本文主要是利用RFID技术,通过RS232将上位机与RFID读写器连接通信,将数据传递到上位机[2],上位机软件利用VC6.0的ADO技术来访问Access数据库[3]。
1系统总体设计
本系统由RFID读写器、电子标签、PC机、VC6.0以及Access数据库软件组成。基本原理:RFID的读写器通过天线,发送无线载波信号,当有电子标签的车辆经过发射区域时会被激活,并将自身的信息通过天线发送回读写器。读写器将收到的信号进行转换,通过RS232串口发送到上位机软件。该软件在VC6.0环境编译下,采用C++语言编写,采集接收到的数据,并将数据与之前录入Access数据库的数据进行对比。如果符合条件,则利用RS232发出通过命令,让车辆进入;否则,禁止进入。本系统的总体设计框图如图1所示。
图1 系统总体设计图
2RFID技术简介
RFID技术是一种射频识别技术,主要是利用感应、电磁场或者电磁波进行的一种自动识别技术。RFID技术的优点是非接触式的,不用人工干预,适合各种环境等。此项技术非常适用于多目标和运动目标的识别,这非常符合小区内车辆运动的特点。
RFID系统由读写器和电子标签组成。
电子标签作为RFID系统的重要组成部分,存储着被识别物体的相关信息。电子标签里面的电子编码具有唯一性。一般情况下电子标签会放置在被识别物体上,本文里应该放置在居民车辆上,被读写器所识别。
读写器是一种射频技术设备,一般用来读写电子标签的信息。读写器一般具有与PC机的通信接口,比如RS232、RS485、以太网接口等。本文主要利用读写器的RS232接口,通过串口线与PC机通信。
3系统软件设计
本系统在VC6.0环境编译下,通过C++语言编写软件界面。软件包括用户界面设计、通信接口部分和数据库处理部分。图2所示为其软件设计流程图。
图2 系统软件流程图
3.1用户界面设计
本系统在基于MFC框架进行设计时,系统界面主要有通信连接操作、数据库链接操作和信息显示部分。当有车辆进入时,电子标签数据发送到PC机,本软件会显示当前该用户所有的详细信息。
3.2通信接口[4]
在Windows环境下,VisualC++6.0软件采用其自带的MSComm控件,可以实现读写器与PC机的串口通信,利用RS232实现数据的接收。使用该控件的方法如下:
第一步,在当前工程中插入该控件,并为其添加变量m_ctrlComm。
第二部,添加串口处理消息函数OnComm(),当有数据发送来时,响应该函数。此处要注意的是,接收到的数据格式为字符,并需要对该字符变量进行转换。程序如下:
BYTEbt=*(char*)(rxdata+k);//接收到的数据,为字符型temp=atoi(m_tempstr);〃最终需要的数据
第三步,添加串口初始化函数,其初始化代码如下:
m_ctrlComm.SetCommPort(1);//选择comlm_ctrlComm.SetSettings("9600,n,8,1");//波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetInputModel(1);〃1表示以二进制方式检取数据
本软件提供有对串口参数的多种配置选择,用户可根据实际情况选择适当的参数。
3.3数据库处理[5]
在VisualC++6.0软件中提供有ADO技术访问Access数据库。因此,首先必须建立一个Access数据库文件并命名为CarData,并在此文件中建立一个表,命名为admin,在此表中可以包含User、Old、ID、Telephone、Photo这几个字段,分别用以存储用户的姓名、年龄、车牌号、用户电话、照片详细信息。其中,User字段格式为文本,Photo字段的格式为OLE对象,其余字段格式为整型变量。在首次使用或者有新的用户购买车辆时,还必须对用户信息进行录入。
3.3.1数据库链接
以下是对数据库操作的步骤:
在StdAfx.h头文件中导入msado15.dll文件。
在主窗口类声明两个变量,分别是记录集的指针和ADO的编程中创建数据库链接的智能指针。与此同时,还需要在CDatabaseApp应用程序类中加入初始化函数InitInstance(),代码如下:
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=CarData.mdb","","",adModeUnknown)
3.3.2数据库信息的添加
首先要定义一个类型为CString的变量sql,并给该变量赋值,让其选中我们之前建立的表admin,然后打开数据库,代码如下:
sql="SELECT*FROMadmin";m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimist,adCmdTe
之后,就可以给数据库添加每个用户自己的信息,添加函数为PutCollect()。
3.3.3从数据库查询信息
软件进入正常使用后,当车辆携带的电子标签被激活时,相关信息被发送到PC机上,本软件将所得到的信息与数据库中存储的信息进行对比,如果信息匹配,则对车辆放行。
以查询车牌号为例子,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结语
伴随着现代科技的突飞猛进,物联网技术已迅速普及,本文正是在这一技术基础上,进行的软件设计,而且,本软件也可以应用到其他带有RS232串口的外围设备上,只要稍加改动,便可方便移植应用。
20211020_616ef48739166__基于RFID的小区门禁管理系统