DigitalPersona 指纹仪的使用

最近在做身份证读卡器和指文采集的工作。身份证读卡器使用的是华视电子的,指纹仪使用的是digitalPersona。之前还接入过HXGC的身份证读卡器和海康的网络摄像头。基本大同小异,这里做个梳理和总结。

所有这些硬件接入都需要厂家提供对应的SDK。这个或者去官网或者在网上找对应型号的SDK。读卡器的开发包相对容易一些,指纹仪算法貌似是国外的人做的,搜到的文档也是英文的。所以这里其实也能看出点儿差距。随后我会把源码和指纹仪的SDK上传到github上,有需要的人可以下载参考。我在接入这些设备的时候,部分逻辑参考了网上的一些blog,现在整理的时候忘记是哪些了,不好意思,如果发现有侵权的行为,可以马上与我联系。下面说一些整体流程。

  • 下载资源
  1. 指纹仪sdk下载地址:https://codeload.github.com/iamonuwa/Digital-Persona-SDK/zip/master
  2. 华视电子sdk地址:http://www.chinaidcard.com/uploadfiles/files/20180319110342_4134.rar
  • 开发环境

我是做windows开发,所以IDE用的是VS, SDK理论要求版本vs2005以上版本,估计现在也很少有需要用05以下的版本的了吧,我连05以下版本是什么样都没见过,孤陋寡闻了。配置对应的开发环境,这部跳过了,这些设备至少支持C/C++,java, C#,VB等语言。

  • 驱动安装

解压SDK或者安装完成后,项目目录下有驱动需要安装,毕竟需要有硬件驱动(驱动帮你解决应用和硬件的连通),上层应用开发只需要关注自身逻辑,不需要考虑平台、硬件的问题。

  • 编译sample下的项目

这一步不同的SDK可能稍有不同,有的应用可以跨平台,所以demo对不同平台都做了支持,所以SDK会附带一些应用程序用或者脚本用来生成当前平台和开发环境的demo。这里SDK应该会有说明。

  • 接入设备调试

连接硬件设备,一般支持串口和USB接口的。我只处理了USB接口的方式。读卡器依赖termb.dll 这个dll内部又依赖stdapi.dll和WltRS.dll,所以应用程序目录需要有这两个动态库。否则可能导出函数异常。其他部分只要根据自己项目的需要把功能从demo中移植过去就可以了。也没遇到什么问题。指纹仪SDK中提供的全是静态库,在醒目目录设置好路径,引入就可以了,不细说了,如果有问题,百度一下,教程一大堆。

  • 项目集成

 

  • 测试用例

测试用例这里,如果是一个独立的应用,调试程序本身没有问题就可以了。如果需要和其他应用或者服务交互,则需要本地或者在服务器上模拟。服务器模拟就不说了,但说本地模拟。所有的网络服务可以通过Nodejs模拟。

单独的网络请求,可以通过curl.exe来模拟,需要引入开源网络库,在本地环境编译或者可以解压出curl.exe直接通过命令行使用。

第三种要说的是本地应用集成,不走网络请求。服务通过浏览器加载。比如使用CEF加载服务,然后通过浏览器进程实现js和平台语言通信,这种方式以后会单独说一下,因为能力视野有限,不知道这种方式是否有必要,不过证明了可以。是否还有其他的方式满足这种应用场景(客户端本地处理硬件交互同时需要和服务器进行数据交互,简单说一边需要监听服务器请求,一边需要处理客户端硬件交互的需求)。

  • 打包发布

有很多打包工具,也可以自己去实现一个,简单来说就是一些文件拷贝压缩的操作集合。我使用的是setupFactory。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
升级到4000B注意事项 原使用Biokey SDK的客户,需要升级SDK开发包并安装4000B的驱动。 注意:安装4000B驱动前需卸载4000的驱动。 其步骤如下: 1、备份注册表:在开始菜单中的‘运行’中运行‘Regedit’,打开注册表,然后选中注册表中的 [HKEY_LOCAL_MACHINE\SOFTWARE\DigitalPersona]项,单击菜单上的注册表->导出注册表文件,将该项导出到文件中。 2、卸载4000的驱动程序(Biokey200/URU4000驱动)。 卸载步骤如下: 1)运行控制面板中的“添加/删除'程序”,卸载指纹采集设备的驱动程序; 2)在开始菜单中的‘运行’中运行‘Regedit’,查看 HKEY_LOCAL_MACHINE\Software\DigitalPersona键值,如果有则删除; 3)查看系统安装目录下system32 目录(win98为windows\system)下的DP*.dll ,如果有则全部删除; 4)察看Program files\zksoftware\biokey200目录,如果有则整个删除。 3、重新启动计算机,安装4000B驱动程序, 4、将Biokey SDK升级,用新的Biokey.ocx替换旧的控件,一般情况下,VB程序可以直接使用,Delphi程序则需要重新编译。 5、用4000B的驱动,必须使用新的控件,目前只完成了1:N的控件升级,1:1的控件,暂时使用原来3.5版本的控件。 6、测试原来登记的指纹模板,看是否能正常比对,如果不能,双击原来备份的注册表文件,添加到注册表中,就可以了。 原来使用U.R.U SDK的客户,需要更新驱动程序,同时由于U.R.U的模板有一些变化,所以需要一些改动,我们提供一份升级须知,请查看ReleaseNotes.txt.升级过程前三个步骤同上,只是需要注意,卸载的时候,查看Program files\DigitalPersona目录,如果有则整个删除。
在C#中实现指纹识别需要使用指纹识别设备的SDK或API,并按照其提供的接口进行编程。以下是一个简单的示例代码,演示如何使用DigitalPersona指纹识别设备的SDK进行指纹识别: ```csharp using DPFP; using DPFP.Capture; using DPFP.Processing; using DPFP.Verification; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FingerprintRecognition { class Program { static void Main(string[] args) { try { //初始化指纹设备 using (var fingerprintDevice = new DPFP.Capture.Capture()) { //创建指纹处理器 var fingerprintProcessor = new DPFP.Processing.Enrollment(); //订阅指纹采集事件 fingerprintDevice.EventHandler = new DPFP.Capture.EventHandler(delegate (object sender, DPFP.Capture.CaptureEventArgs e) { if (e.Result != null && e.Result.Image != null) { Console.WriteLine("指纹集成功!"); //将采集到的指纹图像添加到指纹处理器中 fingerprintProcessor.AddFeatures(e.Result); } }); //启动指纹采集设备 fingerprintDevice.StartCapture(); Console.WriteLine("请将手指放到指纹识别设备上..."); //等待指纹采集完成 while (fingerprintProcessor.FeaturesNeeded > 0) { System.Threading.Thread.Sleep(100); } //停止指纹采集设备 fingerprintDevice.StopCapture(); //获取指纹模板 var fingerprintTemplate = fingerprintProcessor.Template; Console.WriteLine("指纹模板采集完成!"); //创建指纹识别器 var fingerprintVerifier = new DPFP.Verification.Verification(); //将指纹模板添加到指纹识别器中 fingerprintVerifier.Verify(fingerprintTemplate, new DPFP.Verification.Verification.Result()); Console.WriteLine("请将手指放到指纹识别设备上..."); //等待指纹采集完成 while (true) { var captureResult = fingerprintDevice.Capture(); if (captureResult.ResultCode == DPFP.Capture.CaptureResultCode.Success) { //将采集到的指纹图像与指纹模板进行比对 var verificationResult = new DPFP.Verification.Verification.Result(); fingerprintVerifier.Verify(captureResult.Sample, fingerprintTemplate, ref verificationResult); //输出识别结果 if (verificationResult.Verified) { Console.WriteLine("指纹识别成功!"); } else { Console.WriteLine("指纹识别失败!"); } } } } } catch (Exception ex) { Console.WriteLine("发生异常:" + ex.Message); } } } } ``` 上述示例代码使用DigitalPersona指纹识别设备的SDK进行指纹识别,其中包括指纹采集、指纹模板采集和指纹识别三个步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老朱自强不息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值