指纹识别 指纹采集器接口控制软件的设计与实现.doc_第1页
指纹识别 指纹采集器接口控制软件的设计与实现.doc_第2页
指纹识别 指纹采集器接口控制软件的设计与实现.doc_第3页
指纹识别 指纹采集器接口控制软件的设计与实现.doc_第4页
指纹识别 指纹采集器接口控制软件的设计与实现.doc_第5页
免费预览已结束,剩余45页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xx 学院 200 x200 x 届届 毕毕 业业 论论 文 设计 文 设计 设计 论文 题目设计 论文 题目指纹采集器接口控制软件的设计与 实现 院系名称院系名称计算机科学与技术系 专业 班级 专业 班级 姓名 学号 姓名 学号 指导教师指导教师 系负责人系负责人 二二O O O O xxxxxx I 摘摘 要要 随着社会和经济的发展 人们对身份鉴别的准确性 安全性与实用性提出了更高的 要求 基于信物或口令的传统身份鉴别方式存在容易丢失 遗忘 被复制及盗用的隐患 通过辨识人的生理和行为特征进行身份认证的生物识别技术提供了一个方便可靠的解决 方案 生物识别技术以生物特征为基础 以信息处理技术为手段 将生物技术和信息技 术有机结合在一起 在众多的生物识别技术中 指纹识别技术以方便易用 高准确率和 低成本等诸多优势备受关注 已经成为身份认证的最有效手段 在电子商务 犯罪 识别 信息安全等领域得到广泛的应用 指纹识别系统中指纹采集是其他各个部分或子系统的基础 本设计的主要任务是通 过对指纹采集器电路结构的分析设计出指纹驱动程序 完成指纹采集器接口控制软件对 指纹采集器的接口控制 正常的采集指纹 显示指纹图像 指纹数据传输和用户基本资 料的保存这些基本功能 指纹采集器的接口控制主要是对指纹采集器的启动 断开和连 接进行控制 指纹的采集主要根据指纹采集器的采集数据原理和方式进行对像素点进行 排列 然后显示出整体的指纹图像 指纹数据的保存要将指纹图像的特征值转化成二进 制的数据形式存储到数据库的相应字段中 用户信息资料的存储可以对数据进行增 查 删 改操作 关键词 位图关键词 位图 指纹采集指纹采集 数据库数据库 II Abstract Acurate secure and practical personal identification methods are highly required with the development of the social and economy The traditional personal identification methods based on token or password have the hidden troubles The token or password is prone to being lost forgoten copied and stolen The traditional personal identification methods cannot satisfy the security requirement of our highly interconected information society Biometrics based on the physiological or behavior traits identification provides a convenient and reliablescheme Among the numerous biometrics more attentions have been paid to the fingerprint identification technology due to its convenience high accuracy and low cost The technique of fingerprint identification has become one of the widest used biometric identification techniques It has been widely used in electronic commerce criminal identification information safety etc In the Fingerprint Identification System fingerprint acquisition is the basis of other each part or subsystem In this design the main task is collecting fingerprints through the driver s fingerprint analysis emphasis is those essential functions such as the controlling of fingerprint interface the normal collecting fingerprint showing fingerprint image saving fingerprint data and inputting users information etc The control interface of Fingerprint collector mainly control Fingerprint collector disconnectedly and connectedly Fingerprint collection according to the principle of fingerprint collector s data or mode make the arrangement to the pixel point and then show that the overall fingerprint image The preservation of Fingerprint data is to convert the characteristics of fingerprint image into a binary form and store to the database of the appropriate field The storage of user information could make the operation of adding inquring deleting and modifying on the data Key Words bitmap fingerprint gathering database III 目目 录录 摘 要 I Abstract II 目 录 III 第一章 绪 论 1 1 1 课题的来源与背景 1 1 2 指纹识别的优势 1 1 3 指纹识别技术的应用 2 1 4 指纹识别发展趋势 2 1 5 指纹识别系统 2 1 5 1 选题的目的和意义 2 1 5 2 指纹识别系统简述 3 1 6 本文主要工作及结构 3 第二章 系统需求分析 4 2 1 功能要求分析 4 2 1 1 驱动的功能 4 2 1 2 图像采集功能 4 2 1 3 图像显示功能 4 2 1 4 数据存储功能 4 2 2 模块分析 5 2 2 1 模块框架分析 5 2 2 2 数据库需求分析 6 2 2 3 系统数据的完整性 7 2 2 4 系统的数据安全性高 7 2 3 可行性的分析 7 第三章 接口控制设计 8 3 1 系统硬件 8 3 2 控制结构 8 3 2 1 数字图像传感器 OV7620 工作原理 8 3 2 2 AN2131QC 微处理器 8 3 3 接口的软件设计 9 3 3 1 WDM 驱动程序的调用机制 10 IV 3 3 2 WDM 设备驱动程序的组成模块 10 3 3 3 初始化模块 11 3 3 4 分发例程模块 11 3 3 5 采集器的断开和连接 12 第四章 系统设计与实现 15 4 1 指纹录入模块设计 15 4 2 详细设计 15 4 2 1 界面框架设计 15 4 3 2 特征值传输接口设计 20 4 3 3 数据库设计 22 第五章 编码调试和测试 24 5 1 编码调试 24 5 2 程序测试 25 5 2 1 图像显示测试 25 5 2 2 数据库测试 26 结 论 29 参考文献 30 致 谢 31 附 录 32 1 第一章第一章 绪绪 论论 1 11 1 课题的课题的来源与背景来源与背景 每个人的指纹皮肤纹路在图案 断点和交叉点上各不相同 是唯一的 并且终生不 变 依靠这种唯一性和稳定性 就可以把一个人同他的指纹对应起来 通过将他的指纹 和预先保存的指纹进行比较 便可验证他的真实身份 这就是指纹识别技术 指纹识别 技术是最早的通过计算机实现的身份识别手段 它在今天也是应用最为广泛的生物识别 技术 过去它主要应用于刑侦系统 但近几年来 它逐渐走向市场和更为广泛的民用市 场 在几种生物识别技术中 指纹识别可算是历史最为悠久的一种 很久以前 我们的 祖先就已经使用 签字画押 的方法确定身份 从那时出土的粘土陶器上留有的陶艺匠 人的指纹 纸稿上印有的起草者的大拇指指纹 古城市的房屋留下的砖匠拇指指纹的印 记中可以看出 指纹认证己被应用于当时社会的许多领域里 指纹识别是成熟的生物识别技术 它的发展得益于现代电子集成制造技术和快速可 靠的算法研究 最初的指纹识别采用手工方法 即将指纹卡片存放在指纹库中 需要时 在指纹库中人工查找由指纹专家比对指纹卡 20 世纪六十年代后 人们利用计算机代替 了效率低 投入高的手工方式来处理指纹 个人电脑和光学扫描仪成为指纹取像工具 九十年代后期 低价位取像设备的出现 为个人身份识别技术的发展提供了舞台 尽管 指纹只是人体皮肤的一小部分 但用于识别的数据量相当大 对这些数据进行比对也不 是简单的相等与不相等的问题 而是使用需要进行大量运算的模糊匹配算法 现代电子 集成制造技术使得我们可以制造相当小的指纹图形读取设备 同时飞速发展的个人计算 机运算速度提供了在微机甚至是单片机上可以进行两个指纹的比对运算的可能 另外 匹配算法可靠性也不断提高 指纹识别技术己非常实用 1 21 2 指纹识别的优势指纹识别的优势 指纹识别的优点 具体体现在以下几个方面 第一 每个人的指纹都是相当固定的 不会随着人年龄的增长或身体健康程度的变 化而变化 但是人的声音 面像等却存在较大变化的可能 指纹是人体独一无二的特征 并且它们的复杂度足以提供用于鉴别的所需特征 第二 指纹样本便于获取 易于开发识别系统 实用性强 目前己有标准的指纹样 本库 方便了识别系统的软件开发 另外 识别系统中完成指纹采样功能的硬件部分也较 易实现 指纹采集头可以更加小型化 并且价格会更加的低廉 2 第三 一个人的十指指纹皆不相同 这样可以方便地利用多个指纹构成多重口令 提高系统的安全性 第四 读取指纹时 用户必需将手指与指纹采集头相互接触 与指纹采集头直接接 触是读取人体生物特征最可靠的方法 而且扫描指纹的速度很快 使用非常方便 第五 指纹识别中使用的模板并非最初的指纹图 而是由指纹图中提取的关键特征 这样使得系统对模板库的存储量缩小 也保护了使用者的个人隐私 另外 对输入的指纹图提取关键特征后 可以大大减少网络传输的负担 便于实现 异地确认 支持计算机的网络功能 综合以上比较 指纹识别技术是目前最方便 可靠 非侵害和价格便宜的生物识别技术解决方案 对于广大市场的应用有着很大的潜力 1 31 3 指纹识别技术的应用指纹识别技术的应用 统计资料表明 目前国内的生物识别技术市场正处于诸侯割据的萌芽阶段 指纹识 别技术自出现以来发展十分迅速 其中指纹考勤机受到了企事业单位的青睐 在国内的 指纹产品市场中 指纹考勤机拥有超过 30 的市场占有率 此外 指纹门禁 远程教育 网络安全等市场的发展也方兴未艾 在目前我国的生物特征识别市场初露端倪的时候 我国民营高科技企业异军突起 无论是从技术指标 价格还是发展前景上来看 它们都 有望引领这一市场的潮流 虽然以指纹识别为认证主体的产品或系统目前尚处于起步阶段 但指纹识别认证应 用的发展又是必然的 指纹识别认证以其唯一性 安全性等特性与传统的认证方式相比 存在无可比拟的技术优势 指纹识别认证必将在整个信息系统安全认证中起到举足轻重 的作用 1 41 4 指纹识别发展趋势指纹识别发展趋势 在未来几年内 我国将有近百亿元的市场等待着企业去开拓 指纹识别技术的巨大 市场前景 将对国际 国内安防产业产生巨大的影响 较小的公司将面临新进入的传统 行业大公司的无情竞争 在这些大型公司面前 现有中小公司很难说有太多的竞争力 行业重新洗牌不可避免 合并与退出可能会成为大部分中小公司的无奈选择 最终可能 形成传统行业的公司或大资本在较短时间内主导生物特征识别行业的局面 1 51 5 指纹识别系统指纹识别系统 1 5 11 5 1 选题的目的和意义选题的目的和意义 在现实生活中经常要对人的身份进行识别 例如登飞机时要识别登机者的身份 在 银行取钱时要核实取钱者是否是指定账户的合法拥有者 使用计算机时要检查操作者的 权限等等 随着国民经济和社会信息化的飞速发展 金融机构 政府机关 企业以及个 3 人之间通过互联网日益紧密地联系在一起 一方面为信息的共享提供了条件 另一方面 也为心怀巨测的人试图非法获取他人信息提供了机会 因此 如何自动 高效和准确地 识别人的身份是信息安全领域的重要问题 传统的自动身份识别方式主要有基于密码的方式和基于令牌的方式 这些方式存在 容易遗忘 容易丢失 容易被破译或仿制等缺点 不能满足当今信息化社会对安全性的 更高要求 为克服传统身份识别方法的缺点 指纹识别系统恰好弥补了这些缺陷 1 5 21 5 2 指纹识别系统简述指纹识别系统简述 指纹识别系统主要是对身份进行识别和验证 用户可以将自己的指纹存储到数据库 中 以后就可以通过自己的指纹对自身进行鉴别和确认 同时相关的部门或单位也可以 通过对个人指纹录入来判断某人身份的确认 指纹识别系统主要有指纹图像的采集 指纹图象特征值的提取 指纹识别 保存指 纹数据和指纹图像的匹配 指纹图像的采集主要通过指纹采集器采集指纹图像显示在我 们设计好的窗口界面上 为了保存和处理我们采集到的指纹图像 我们需要对指纹图像 本身的特征进行提取 如像素 高度 宽度 色彩等 这些都是指纹图像的特征值 要 对用户进行识别 也就是鉴定一个人的身份是否合法或确定存在 需要利用到指纹识别 的技术 有时候为了将两枚指纹进行对照 判断是否相同 比如刑事侦查中对案发现场 进行指纹采集 就可以对嫌疑人进行判断 只要是关联到数据的都离不开存储 所以利 用数据库可以解决这一方面的问题 1 61 6 本文主要工作及结构本文主要工作及结构 本设计的完成实质性的是指纹采集器接口控制软件的设计与实现 即指纹录入子系 统的设计与实现 在指纹录入子系统中完成的主要部分是采集器接口控制软件对指纹采 集器的接口控制设计出驱动程序 完成软件对采集器的启动 连接和断开 还有正常的 采集指纹 显示指纹图像和保存指纹数据和用户基本资料基本功能 在论文设计中 文章结构主要有五部份 即第一章为绪论 第二章为系统需求分析 第三章为接口控制软件的设计 第四章为系统设计与实现 第五章为编码调试和测试 最后进行总结 绪论主要介绍了课题的背景来源 指纹的过去 现在的发展以及将来的 趋势 系统需求分析主要是对整个指纹识别系统所要实现的功能进行分析 各个子模块 的分析 可行性分析和软硬件配置分析 接口控制软件的设计主要对指纹采集器进行分 析设计出驱动程序 系统设计与实现主要是针对指纹录入子模块进行具体设计实现 编 码调试和测试是对关键的代码段或相关的技术 功能的编码进行代码校验 更正 编译 通过和实现程序功能的是否成功 总结主要介绍了在毕业设计中遇到的一些困惑 设计 过程中的感受 还要提及一些需要改善和补充的地方 4 第二章第二章 系统需求分析系统需求分析 2 12 1 功能要求分析功能要求分析 2 1 12 1 1 驱动的功能驱动的功能 设备驱动程序实际上是指一系列控制硬件设备的函数 它是操作系统中控制硬件的 模块 是链接操作系统和系统外部设备的关键模块 它提供连接到计算机的硬件设备的 软件接口 设备驱动程序是操作系统的一个可信任部分 设备驱动程序将不同外部设备特性和 操作系统高层分隔开 隐藏了硬件设备内部实现细节 并对操作系统透明 设备驱动程 序只关心程序所控制的硬件设备 应用程序总是以一种规范方式访问硬件设备 而不需 要理解和关心设备具体的硬件实现细节 对于一个硬件产品要对其在一个系统或软件中进行应用 一般都需要对这个硬件进 行驱动的设计 使硬件在软件系统中能够使硬件功能的得到实现 所以驱动程序就是用 来向操作系统提供一个访问 使用硬件设备的接口 实现操作系统和系统中所有的硬件 设备的之间的通信程序 它能告诉系统硬件设备所包含的功能 并且在软件系统要实现 某个功能时 调动硬件并使硬件用最有效的方式来完成它的相应功能 在采集器接口控 制软件中驱动要实现的主要工作就是对采集器启动 连接和断开 然后将采集到的指纹 图像显示在软件系统中的位图区域 2 1 22 1 2 图像采集功能图像采集功能 指纹识别系统的处理对象是指纹图像 所以首先必须对指纹图像进行捕获或采集 因为指纹是人体的生物特征 是随着人体的移动而附携的 因此 要对指纹图像进行处 理就要得到指纹图像 指纹获得的方法就要借助外部的硬件设备 2 1 32 1 3 图像显示功能图像显示功能 图像本身就应该具有可视化的特点 通过外部的硬件设备将指纹图像捕获到 我们 同样需要显示指纹的静态图形 既然指纹是各不相同的 静态图形的效果或是呈现状态 也要根据实际图像显示 对指纹图像的清洁度 明晰度和完整性要有所保证 同时显示 还要具备在调整显示大小的情况下 保证指纹图像的正常显示 2 1 42 1 4 数据存储功能数据存储功能 在对指纹进行采集后 指纹图像经过分析和处理会得到指纹的特征值 在后期的指纹 识别和指纹匹配的工作中都会用到指纹特征值这一数据 所以要对这类数据进行存储 同时用户的基本信息资料也要保存到相应的存储设备中 5 2 22 2 模块分析模块分析 2 2 12 2 1 模块框架分析模块框架分析 系统对身份的识别和验证主要依据就是手指指纹 因此 系统会围绕指纹图像进行 各方面的处理 第一 要对指纹进行采集 此时就需要一个指纹采集设备 第二 由于 刚刚采集的指纹图像会有外界环境的影响 使图像不清洁 不明晰 不完整 所以要对初 始的图像做这几方面的完善工作 同时要对图像的主要特征或是主要数值进行提取 作 为本图像的标识 以后就可以通过图像的特征值来搜索对应的指纹图像 第三 对指纹 图像的特征值进行提取之后我们要对这些数据进行保存 以便在以后要用的时候能随时 调用 因此对数据的很好存储我们就要采用数据库的许多对应功能 最后 也是对用户 最紧密的方面 当用户的指纹录入后 指纹识别系统要对用户进行识别 看是否存在此 用户或是某种身份的人 在鉴别个人身份时则需要对个人再次录入的指纹进行对比 能 在数据库中找到相同的指纹数据也就认证了身份的可靠性 所以通过对系统的需求和使 用过程也就得到了我们系统要做的几个大的部分 指纹识别系统处理的部分主要包括指 纹图像的采集 指纹图像的读取 指纹图像的处理 指纹图像特征提取 保存数据和指 纹匹配 在指纹采集器正常连接后 通过指纹录入命令调用图像显示函数将刚刚采集到的指 纹图像显示在指定的区域 此时还可以对图像信息进行保存 图像的保存方式主要通过 调用图像处理函数获取特征值 将特征值转换成相应数据类型存储到数据库中 指纹匹 配的大体实现过程是在录入匹配的指纹后 调用指纹处理函数 并获取指纹的特征值 同时通过匹配命令到数据库中指纹的特征值 将两个过程提取的特征值通过匹配函数进 行比较 相等则匹配成功 不相等则匹配失败 并把比较的信息通过状态显示函数显示 在状态区域 在设计中指纹识别的功能 也可以通过输入用户的 ID 来搜索和提取数据库 中指纹信息 并将搜索的信息显示在某控件中 通过对任务的分析和了解 设计出了模块之间的大体框架结构 如图 2 1 6 指纹信息 保存 图像显示 图像显示 函数 启动设备 连接 指纹录入 命令 图像处理 函数 特征值提 取 显示结果 状态显示 输入指纹 指纹识别 命令 用户资料 特征值提 取 指纹匹配 命令 匹配函数 结果显示 函数 特征值提 取 连接数据库接口函数 数据库 输出 输入搜索特征值 搜索特征 返回特征值 结果信息 调用 调用 图 2 1 系统工作流程图 2 2 22 2 2 数据库需求分析数据库需求分析 数据库模块也是指纹识别系统中的主要部分 数据库主要是要对系统中的指纹图像 特征值以及系统中的个人资料信息进行存储 对数据库的选择有许多方面 现有常用的 数据库有 Access Oracle 数据库 SQL SERVER 数据库和 MySQL 数据库等 Access 是微软的产品 是轻量级的桌面数据库系统 它不显式地支持视图 也不提 供存储过程 触发器等功能 但是对于小型企业和个人可以简单地建立相关应用 Oracle 数据库包括数据库服务器和客户端 数据库服务器 Oracle Server 是一个对象关 系数据库管理系统 它提供开放的 全面的和集成的信息管理方法 每个数据库服务器 Server 由一个 Oracle DB 和一个 Oracle Server 实例组成 它具有场地自治性和提供数据 存储透明机制 以此可实现数据存储透明性 每个 Oracle 数据库对应唯一的一个实例名 SID Oracle 数据库服务器启动后 一般至少有以下几个用户 Internal 它不是一个真实 的用户名而是具有 SYSDBA 优先级的 Sys 用户的别名 它由 DBA 用户使用来完成数据 库的管理任务 包括启动和关闭数据库 Sys 它是一个 DBA 用户名 具有最大的数据库 操作权限 System 它也是一个 DBA 用户名 权限仅次于 Sys 用户 客户端是数据库 用户操作端 由应用 工具 SQL NET 组成 用户操作数据库时必须连接到一服务器 该数据库称为本地数据库 Local DB 在网络环境下其它服务器上的 DB 称为远程数 据库 Remote DB 用户要存取远程 DB 上的数据时 必须建立数据库链 7 SQL SERVER 是微软公司旗下的数据库产品 它支持用户定义函数 索引视图 分 布式分区视图 存储过程 触发器 以及支持 XML 等功能 虽然 SQL SERVER 与 Oracle 相比在许多方面还存在着一些差距 但是足以应付中小型企业或是学校数据存储的要求 MySQL 是一个使用 Linux 用户喜欢的半商业化的数据库 他可以运行在大多数 Linux 平台 以及少许非 Linux 平台甚至 UNIX 平台 在 WINGDOWS 平台上也可以很好 的运行 MySQL 是一个多用户 多线程的 SQL 数据库 采用的是客户服务器结构 经过分析以上数据库都可以运用在本设计中 经过比较 Access 可以对简单的数据类 型进行存储 Oracle 虽然功能强大 但是在本设计中不需要很强大功能的数据库 MySQL 数据库可以在 WINDOWS 平台上操作 但是我觉得在 Linux 平台下会更好的体现其性能 所以最后我选择了 SQL SERVER 对本设计进行运用 符合本设计的实际条件和需求 2 2 32 2 3 系统数据的完整性系统数据的完整性 由于每枚指纹都对应着每个人 也就存储了每个的不同信息 一个人从出生到死亡 自身的资料信息都是在增加和变化的 所以在存储相同类型的基础信息时是要考虑到个 人信息的不同点 2 2 42 2 4 系统的数据安全性高系统的数据安全性高 指纹识别系统的数据要对个人的信息资料进行存储 最重要的还是对指纹图像的存 储 图像是一种较大容量的数据类型 所以在选择存储时要考虑到大容量的存储器 为 了防止数据丢失要进行及时安全的备份 2 32 3 可行性的分析可行性的分析 首先 在外设和硬件设施方面 我们可以通过选择购买相关的指纹采集设备来对指 纹图像进行采集 相关的设备驱动一般销售商或是厂商会提供 接下来的工作就是通过 软件编程来完成各个模块的功能 我们可以在 windows 平台上 VC 6 0 的环境下进行 编写 因为本设计对指纹的采集图像要求并不是很高 所以一般的采集设备就能满足设 计的需求 指纹识别系统的设计是基于底层的程序开发 所以选择 VC 6 0 的编程环境 能够实现基本功能 目前在数据量不是很大 管理不是很复杂的条件下 再加上设备质 量的限制上 我们选择 SQL SERVER 2000 来对数据进行存储和管理已经能够实现了对指 纹图像和相关的资料进行存储了 所以在现有的设备和环境下 指纹识别系统的实现是 能够完成的 8 第三章第三章 接口控制设计接口控制设计 3 13 1 系统硬件系统硬件 考虑到指纹图像数据数量大 USB 传输速率较高 如果利用纯粹的 USB 接口芯片外 加一个普通控制器 如 8051 其处理速度会很慢 因而达不到指纹采集数据传输的要求 但如采用高速微处理器 如 DSP 虽满足了速度要求 却增加了成本 因此在各方面综 合考虑下本论文选择了内置微控制器 增强型 8051 USB 主控芯片 EZ USB AN2131 QC 指纹采集图像传感器采用 CMOS 图像传感器 OV7620 它具有体积小 重量轻 功 耗低 集成度高 价格低等优点 因此符合本设计要求 3 23 2 控制结构控制结构 3 2 13 2 1 数字图像传感器数字图像传感器 OV7620 工作原理工作原理 CMOS 图像传感器 OV7620 通过 I2C 接口灵活设置各种工作方式 其输出帧率在 0 5 30 帧 S 之间可调 窗口大小的变化并不影响输出的场频或帧率 HREF 行窗口输出 参考信号 提供了一种有效的控制方式 当输出像索行列分别处于设定的有效窗口之内时 HREF 为高电平 输出为有效的视频数据 否则 HREF 为低电平 CMOS 图像传感器 OV7620 为不同的应用场合提供了不同输出格式和标准 可输出 RGB 原始数据 可支持 CCIR 656 CCIR 60116 位 8 位 通过 I2C 编程接口即可方便设定 3 2 23 2 2 AN2131QC 微处理器微处理器 AN2131QC 微处理器是一个改进的 8051 内核 改进的 8051 内核使用片内 RAM 作 程序和数据存储器 首先 USB 主机通过 USB 总线将 8051 程序代码和设备描述符下载 到 RAM 中 然后 EZ USB AN2131QC 芯片使用己下载的程序中定义的外设特性进行重 连接 利用 CMOS 数字图像传感器与 USB 接口数据传输来实现的接口控制软件具有结构简 单 体积小 便携化等优点 本章将利用 CMOS 数字图像传感器 OV7620 和 EZ USB AN2131QC USB 控制传输芯片来实现指纹信息的采集和 USB 传输电路设计 同时由于指 纹传感器输出数据的速率 27MB S 与 USB 控制器 AN2131 QC 数据传输速率 12Mb S 的 不匹配 故本系统采用了 SRAM 和 CPLD 构成中间高速缓冲区 应用 AN2131QC CPLD 和 OV7620 设计的系统硬件框图如下图 3 1 所示 9 PC机 USB传输控制器 CPLD 控制 SRAM 数据 控制 指纹识别传感器 光学镜头 控制 DATA 编程控制信号 图 3 1 控制框架图 首先 AN2131QC 通过 I2C 对指纹图像传感器 OV7620 的窗口 输出模式等参数进 行配置 光学透镜把指纹图像成在 OV7620 的像面上后 CMOS 图像传感器 OV7620 对其 进行空间采样 并按照一定的帧频连续输出 S 位的数字图像数据 输出数字图像数据的帧 同步信号为 VSYNC 水平有效信号为 HREF 输出时钟信号为 PCLK 为了实现指纹传感 器输出数据与 USB 控制器读取数据速度与时序的匹配 使用了 SRAM 和 CPLD 构成高 速缓冲区 利用此高速缓冲区先将 OV7620 输出的指纹数据缓存 最后 AN2131QC 实现 与上位机 PC 机 的 USB 通信 将高速缓冲区中的数据传输到 PC 机进行相应的图像处理 在操作文件中 采集器采集数据操作的函数中 接口驱动的设计主要考虑到数据控 制 命令控制和状态控制 首先软件系统给出一个指纹采集命令 CPU 将命令的地址通 过 USB 传输控制器给内部的命令寄存器 命令寄存器会将指令传给 CPLD 然后进行取 数据操作 此时状态寄存器中会将对应的状态通过读到数据缓存器 通过数据总线传给 PC 如果数据缓存器中没有指纹数据就要等待 有数据就也读到数据缓冲器通过数据总 线传给 PC 机 对接口控制程序进行编写 即接口的驱动程序的设计 主要实现文件操作结构体 即实现对结构体 File Operation 内部成员函数的编写 定义文件操作结构体指针变量 File Operation op 在结构体 File Operation 内部中可以利用三个函数成员来对接口进行 控制 利用 op open 函数的对外设进行初始设置 如设备的版本 设备的类型 内存的 申请 在 op release 中对申请内存进行释放 op read 还有很重要的功能就是对采集器 进行数据读操作或数据采集操作 10 3 33 3 接口的软件设计接口的软件设计 指纹采集器接口控制软件设计可以包括 USB 外设的固件设计 主机操作系统的客户 驱动程序的开发和主机上用户应用程序的编写 三者之间的关系是主机用户应用程序通 过客户驱动程序来操作 USB 总线 实现与 USB 外设的联系 USB 外设固件程序响应来 自主机的 USB 请求 完成各种数据的交换工作和事件处理 由于本次论文主要是针对主 机操作系统的客户驱动程序的开发和主机上用户应用程序而进行的 故软件设计的重点 是客户驱动程序的开发和用户应用程序设计 在 windows 环境下 为了确保系统的安全性和可靠性 是不允许用户在应用程序中 直接访问硬件设备的 用户应用程序要想访问操作硬件设备必须通过一个中间的桥梁 即通过设备驱动程序来访问设备 因此 要想开发的指纹采集设备对计算机可用或对用 户可用 必需开发和定制一个专用的 USB 设备驱动程序 本次论文开发的指纹采集系统 USB 接口的 USB 设备驱动程序是 windows98 和 windows2000 兼容的 WDM 内核模式的驱 动程序 对采集器设备要对其进行设备号的设定 在上位机的注册表机制中可以对设备进行 设备号的标识 设备号可以设置成主设备和次设备 主设备一般是唯一的 次设备可以 根据设备数量等方面进行设置 3 3 13 3 1 WDM 驱动程序的调用机制驱动程序的调用机制 Windows 系统中对设备的访问 分为用户态和内核态两种方式 用户态通过调用 Win32 API 函数 如 ReadFile WriteFile 等访问设备 但这种访问不是直接控制硬件内核 态 而是通过发送 I 0 请求包 IRP 来允许驱动程序实现对设备的控制 用户对设备的访问 过程可用图的结构来描述 应用程序 Win32 子系统 用户模式 内核模式 I O管理 设备 驱动程序 传递IRP给驱动程序派遣 硬 件 硬 件 抽 象 层 HAL 调用 Win 32 API调用 平台相关操 图 3 2 设备驱动程序调用图 图中用户通过应用程序对设备进行 Win32 调用以请求 I O 这个请求由内核的 I 0 系 统服务接收 I O 管理器对这个请求构造一 11 个合适的 IRP 并将其传递给设备驱动程序栈 IRP 在栈中从顶层传至底层 并经过处理 后由低层驱动程序与硬件打交道 驱动程序由各例程组成 由 I O 管理器执行并将结果返 回给 Win32 子系统和应用程序 3 3 23 3 2 WDM 设备驱动程序的组成模块设备驱动程序的组成模块 一个 WDM 设备驱动程序 通常可以完成以下功能 1 初始化驱动程序 2 创建 删除设备 3 处理 Win32 I O 及控制请求 4 串行化对设备的访问 5 访问硬件 6 调用其他驱动程序 7 取消 I 0 请求 8 即插即用处理 9 使用 WMI 向系统管理员报告 10 处理电源管理 将这些功能划分为不同模块 并用 Visual C 实现 其中 初始化模块 lnit cpp 是必不可少的 它包含有一个驱动程序的初始化入口点 在实际工作中 所有设备驱动 程序都有分发例程模块 Dispatch cpp 来处理 I O 请求 WDM 设备驱动程序还需要一个 即插即用模块 Pnp cpp 和电源管理模块 Power cpp 3 3 33 3 3 初始化模块初始化模块 初始化模块 Init cpp 是必不可少的 它包含有一个驱动程序的初始化入口点 具有标 准函数原型的 DriverEntry 例程 当驱动程序被装入时内核调用这个例程 DriverEntry 例 程的主要工作是在传递的驱动程序对象 DriverObject 中存储一系列的回调例程的指针 这 些指针为操作系统指明了驱动程序容器中各种子例程的位置 以便内核会在合适的环境 下调用这些例程 它们包括下面这些指针成员 1 DriverUnload 指向驱动程序的清除例程 管理器会在卸载驱动程序前调用该例程 通常 WDM 驱动程序的 DriverEntry 例程一般不分配任何资源 所以 DriverUnload 例程也没有什么清除工作要做 2 DriverExtension AddDevice 指向驱动程序的 AddDevice 函数 PnP 管理器将为每 个硬件调用一次 AddDevice 例程 对于功能驱动程序 其 AddDevice 函数的基本职 责是创建一个设备对象并把它连接到以 PDO 物理设备对象 为底的设备堆栈中 12 3 MajorFunction 是一个指针数组 管理器把每个数组元素都初始化成指向一个派遣 函数 驱动程序有时仅需要处理几种类型的 IRP 所以只需要设置与那几种 IRP 类型 相对应的指针元素即可 以下是为指纹采集 USB 接口定制的驱动程序初始化模块中相关代码 DriverObject DriverUnload Ezusb Unload 清除对象 DriverObject DriverExtension AddDevice Ezusb PnPAddDevice 创建设备对象 DriverObject MajorFunction IRP MJ CREATE Ezusb DispatchCreate 例程创建 DriverObject MajorFunction IRP MJ CLOSE Ezusb DispatchClose 例程关闭 DriverObject MajorFunction lRP MJ PNP Ezusb Pnp 即插即用对象 DriverObject MajorFunction IRP MJ POWER Ezusb Power 电源对象 3 3 43 3 4 分发例程模块分发例程模块 所有驱动程序的 DriverEntry 例程中必须设置一系列的回调例程来处理 IRP 表 5 1 是 常见的 Win32 设备 I O 函数和它们对应的 IRP 表 3 1 常见的分发例程 Win32 函数IRP 主功能代码驱动程序例程的基名称 CreateFileIRP MJ CREATECreate CloseHandleIRP MJ CLOSEClose ReadFileIRP MJ READRead WriteFileIRP MJ WRITEWrite DeviceIoControlMJ DEVICE CONTROLDeviceControl 其中 创建 读 写 关闭 IOCTL 和内部 IOCTL IRP 的处理程序 通常称为分发例程 因为它们常常仅执行 IRP 的一些初始处理 如检查所有参数是否合 法 然后把 IRP 分发到驱动程序中的其余地方处理 IRP 通常需要串行处理 使得驱动程 序以一种安全的方式与硬件打交道 在 USB 类驱动程序中 只接受内部的 IOCTL 命令 因而不支持普通的读和写 故在 DriverEntry 例程中没有设置 IRP MJ READ 和 IRP MJ WRITE 3 3 53 3 5 采集器的断开和连接采集器的断开和连接 对采集器进行断开和连接操作主要的代码如下面所解释 typedef struct device information FT DEVICE TYPE devType 设备的类型 FT DEVICE IDdevId 设备号 FT WCHAR devName FT MAX DEVICE NAME LEN 设备名称 13 FT IMAGE TYPEimgType 设备获取图像类型 FT IMAGE RESOLUTION imgResolution 图像的分辨率 unsigned int numIntensityLevels 设备数目 FT IMAGE SIZE imgSize 图像大小 FT ORIENTATION imgOrientation 图像的方向 unsigned int maxImgSize 图像最大值 FT DEVICE INFO FT DEVICE INFO PT 接着要对设备进行断开和连接 FT RETCODE CFTDevice Disconnect void try 终止监控器线程 if m hMonitorThread SetEvent m hStopMonitorThread 设置事件线程 OutputDebugString Waiting for monitor thread to finish n 输出错误信息 加强锁定 DWORD dwEvent while TRUE dwEvent MsgWaitForMultipleObjects 1 void 对事件进行创建 if dwEvent WAIT OBJECT 0 事件对象不成功 break 跳出 OutputDebugString monitor thread finished n 输出错误 CloseHandle m hMonitorThread 关闭监控句柄 m hMonitorThread NULL 监控线程对象赋空 停止监控设备 if m ftContext FT stopMonitoringDevice m ftContext 调用停止设备函数 断开设备 FT disconnectDevice m ftContext 断开 FT closeContext m ftContext 关闭 m ftContext NULL 14 catch return FT ERR INTERNAL return FT OK 下面是对指纹采集设备进行连接 FT RETCODE CFTDevice Connect IN FT DEVICE ID devId 定义一个连接的设备号 IN FT IMAGE ACQUISITION PRIORITY imgAcquisitionPriority 图像获取次序 FT RETCODE rc try m devId devId 设备号赋给变量 Create the context and connect the device with the given devId if rc FT connectDevice m ftContext devId imgAcquisitionPriority FT OK EH THROW rc typeid CFTDevice name Error from FT connectDevice 无相应的设备则报错 Create all the events to wait for memset 内存设置 m events fingerTouching CreateEvent NULL FALSE FALSE NULL 触摸事件 m events imageReady CreateEvent NULL FALSE FALSE NULL 图像采集准备 m events fingerRemoved CreateEvent NULL FALSE FALSE NULL 手指移动 m hStopMonitorThread CreateEvent NULL FALSE FALSE NULL 停止监控进程 创建线程等待事件 DWORD threadId if m hMonitorThread CreateThread NULL 0 if rc FT startMonitoringDevice m ftContext if pBuf rgsabound 0 lLbound 0 rgsabound 0 cElements dwCount psa SafeArrayCreate VT UI1 1 rgsabound 创建SAFEARRAY对象 for long i 0 i GetFields GetItem value AppendChunk varBLOB pRecordset Update 之后加入 BLOB 类型的数据 再调用函数 m pRecordset Update 通过以上的主要 过程数据就可以成功地保存到数据库中了 接下来我们所要做的工作便是将该数据提取出来 对应于保存数据时我们所使用的 AppendChunk 函数 读取数据应该使用 GetChunk 函数 GetChunk 的原型为 variant t GetChunk long Length 给出数据的长度后 GetChunk 将返回包含数据的 VARIANT 类型变量 然后我们可以利用 SafeArrayAccessData 函数得到 VARIANT 变量中指 向数据的 char 类型的指针 以方便我们的处理 首先对数据的长度进行获取 long lDataSize m pRecordset GetFields GetItem value ActualSize 如果数据长度大于 零返回包含数据的 VARIANT 类型变量 variant t varBLOB varBLOB m pRecordset GetFields GetItem value GetChunk lDataSize 24 判断数据类型正确的话得到指向数据的指针 对 pBuf 中的数据进行处理后得到数据 4 3 34 3 3 数据库设计数据库设计 在本设计中数据库起到的主要作用是能够对软件系统中的相关数据进行保存 并在 VC 程序中通过一些数据库语言或语句 如添加 查询 删除 修改等语句能够改变和变 动数据库中的内容 同时数据库要提供数据给 VC 程序调用 在 VC 使用数据库之前要对 数据库进行连接 所以要选择连接方式 在数据库的连接方式上主要有 ADO 和 ODBC 连接 ADO ActiveX Data Objects 是 微软公司的一个用于存取数据源的 COM 组件 它提供了编程语言和统一数据访问方式 OLE DB 的一个中间层 允许开发人员编写访问数据的代码而不用关心数据库是如何实现 的 而只用关心到数据库的连接 可以实现访问关系或非关系数据库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论