- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于指纹IC卡门禁系统实现
基于指纹IC卡门禁系统实现摘要:该文以VB为编程语言和ACCESS数据库平台,解决传统C/S模式下单纯利用指纹验证时,数据库中一对多查询的低效率验证身份的问题,同时解决了单纯利用IC卡的身份验证不可靠的问题。
关键词:指纹;门禁系统;IC卡;身份识别
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)09-2169-03
指纹IC卡系统是利用指纹的唯一性和不可替代性来保证使用人身份的正确性,以IC卡的数据储存和加密功能作为使用人与使用单位的信息连接桥梁,实现使用人身份的验证。通过指纹IC卡设备实现指纹的采集、验证和读写IC卡的功能,根据结果发送信号至单片机控制电插锁,达到门禁自动化目的。
1 数据库实现
1.1数据库建立
使用Microsoft Access创建数据库,首先是用户数据表,包括用户编号(UserID),姓名(Name),性别(Sex),备注(fpc),指纹特征(Purv),有效期(vValid)等字段。其次是日志表(log),包括日志流水ID(recordID),用户编号(UserID),进入时间(userData),是否通行(result)等字段。最后是用户表的UserID和日志表的userID对应。
1.2数据库函数创建
1)创建Public Function exesql(ByVal sql As String) As ADODB.Recordset函数
2)利用ADODB建立数据连接
3)打开数据库
4)数据库的读写操作:可直接调用exesql(ByVal sql As String)函数进行操作。
2 指纹数据采集实现
指纹的采集主要依靠URU4000指纹采集仪进行,URU4000可以通过BiokeySDK控件进行操作。
2.1指纹仪初始化连接
使用BiokeySD的InitEngine()方法可以初始化指纹仪,此函数支持同个终端下多个指纹仪同时使用,初始化时必须指定指纹仪的编号进行连接,如: ZKFPEng X1. SensorIndex=0,即可对编号为0的指纹仪进行连接,通过ZKFPEngX1.InitEngine的返回值能判断指纹仪是否连接成功,其中返回0为成功,1为指纹识别驱动加载失败,2为没有连接指纹仪,3为指定的SensorIndex对应的指纹仪不存在。
2.2使用指纹仪进行指纹登记
当指纹仪连接成功后可对指纹进行扫描登记。扫描前必须设置登记指纹的取样次数,原则上不少于3次。在Biokey的ActiveX控件中提供了EnrollCount属性来设置采样次数,本系统将此属性设置为3。另外进行指纹3次采样时,还必须知道成功的次数,防止由于软硬件问题导致无限次取样。同样Biokey控件返回相应的只读属性EnrollIndex确定成功的次数。
2.3 指纹数据调用验证
采集完毕的指纹系统将信息写入数据库,为保证数据正确性,Biokey提供方法Function VerFinger(byval regTemplate, verTemplate, AdoLearning As Boolean, byval AregFeatureChanged As Boolean) As Boolean,可以比对两枚指纹的特征模版是否匹配。
3 IC卡数据读写实现
数据的读写由RUK-200IC实现,使用动态库OUR_MIFARE.dll,用VC6.0++开发,编译成Release实体,适用于WIN2003、XP环境。
3.1 IC卡读卡
动态库提供了读卡函数piccreadex,可一次性读整个区的第0块、第1块、第2块共3块的信息,并返回卡序列号。其原始声明为:
其中ctrlword读卡的控制字,ctrlword是一个字节,相当于八个位,每个位只有0和1两种状态。可定义以下常量:
读块0、块1、块2,仅读指定序列号的卡,需要每次指定密码:
Ctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + NEEDSERIAL+ EXTERNKEY
serial只需指向一个至少已分配了4个char空间的可写数组 unsigned char *指针,serial的下标由0开始。keyA1B0为0时以B密码来认证,为非0时以A密码来认证。系统中使用A密码来认证。
*picckey 指向存放卡密码的数组(6个char的密码数组)。
*piccdata0_2是指向下标个数大于48的字节数组,用于存放3个块的数据,其中下标0~15存放作为读出块0的数据,下标16~31存放作为读出块1的数据,下标32~
文档评论(0)