一、相关概念

1.存储容量:500枚指纹,地址范围0-499。

2.用户记事本:模块内部为用户开辟了512Bytes的FLASH空间用于存放用户数据该存储空间称为用户记事本,该记事本逻辑上被分成16个页,每页32字节,写记事本命令用于写入用户的32字节数据到指定的记事本页。

3通信包:命令包、数据包、结束包。

4.缓冲区:模块内有1个72字节的指纹图像缓冲区ImageBuffer,与3个各810字节的指纹特征文件缓冲区CharBuffer1、CharBuffer2。都是可读可写的。CharBuffer1和CharBuffer2可存放普通指纹特征数据(单次指纹图像生成的特征),也可以存放指纹特征模板(由两个普通指纹特征数据合成)。通过上位机从ImageBuffer获取的指纹图像不是完全从ImageBuffer中读取的,只读取了每字节的高四位,图像无关紧要,上传速度才是关键。810字节就是一个指纹最大的有效数据,没有更多了,只能更少。

5.接口类型:串口、USB

6.安全等级:1-5级,影响到拒真率和认假率。

7.拒真率:也叫拒识率。指将相同的指纹误认为是不同的指纹,而加以拒绝的出错概率。其定义为:FRR=拒识的指纹数目/考察的指纹总数目×100%。

8.认假率:也叫误判率。指将不同的指纹误认为是相同的指纹,而加以接收的出错概率。其定义为:FAR=错判的指纹数目/考察的指纹总数目×100%。

二、R302模块操作要点

1.上电后模块初始化时间约500ms。

2.默认波特率为57600bps,可通过命令设置为9600-115200bps。传送的帧格式为 10位,1位0电平起始位,8位数据(低位在前)和1位停止位,无校验位。

3. 模块地址(FFh×4)默认。

三、问题解决

问1.记事本有什么鬼用

答1.这个记事本和指纹库从应用上来说是没有什么太大关系的,这个记事本只是用来记录一些用户数据,你要拿来记录和指纹不相关的数据也完完全全可以的,就把它当做普通的内存就好了,只有16页,省着点用,偶尔还是有什么卵用的^_^。

问2.通过上位机上传的指纹库的数据大小是怎么计算的?哪些是有效数据?

答2.数据包格式的大小有64/128/256字节格式,这个值就是有效的数据大小,实际传输的数据包的大小不止这些,还要包括包头、命令字、校验码等内容。

问3.安全等级反映什么特性?为什么数据包的大小是可以设置的?它和安全等级有没有半毛钱的关系?

答3.安全等级越高,指纹模块的认假率和拒真率越小,即意味着“认为是自己人”“认为不是自己人”的出错概率越小。通常安全等级选择等级3。安全等级主要体现在匹配指纹库的过程中,并不影响指纹库数据的录入。继续问题的回答。首先清楚数据包和指纹库中存放的指纹特征数据不是一回事。经过试验测试,每次录入指纹模块特征数据的大小都是不一样的,我想这个是和手指与电容模板的接触面积有关。当我们想把指纹库中的数据上传到主机时,先发GR_UpChar指令,然后先收到该指令的应答包,接着开始接收数据包,数据包的格式如下:

数据包的大小和包长度是同一个概念,其实按照语文上的理解应该是不一样的,我想这是写R302模块的技术人员的怎样理解问题。通过设置数据包的大小可以改变读指纹数据到上位机的次数,本质上并没有什么区别。

问4.通信包里的校验和是指那部分的数据的和?

答4.模块地址和校验和之间的数据之和,不包括模块地址和校验和字节数据。

问5.在Flash指纹库中一个指纹特征模板有多少字节?

答5.从上位机读出来的数据来看是0x370字节即810字节。

实际程序测试证明:录入一个指纹到指纹库地址0,然后通过GR_UpChar指令将指纹库中地址0处的指纹打印出来。数据包的大小默认是128字节的,因此加上包头等部分,一次通讯包大小就有128+11=139字节,注意判断数据包的结束包,即每读一次数据包就判断其第7字节值是不是0x08,如果是,代表该个包是结束包而不是数据包。从打印的结果来看,一共打印了7次,虽然最后一次是结束包,但是他的数据部分也还是指纹特征数据。也就是说一个指纹特征数据大小是7*128=896字节。实验测试方法是:把这7次读出来的指纹特征数据制成数据包之后发送回指纹模块中保存到指定flash位置,然后再去搜索指纹库,看能不能匹配到对应自己的那个指纹。

R302指识别开发笔记的更多相关文章

  1. OpenCV开发笔记(五十五):红胖子8分钟带你深入了解Haar、LBP特征以及级联分类器识别过程(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. OpenCV开发笔记(六十九):红胖子8分钟带你使用传统方法识别已知物体(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体

    前言   级联分类器的效果并不是很好,准确度相对深度学习较低,本章使用opencv通过tensorflow深度学习,检测已有模型的分类.   Demo       可以猜测,1其实是人,18序号类是狗 ...

  4. OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体

      前言   级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow,本章使用yolov3模型,识别出具体的分类.   Demo   320x320,置信度0 ...

  5. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...

  6. Java开发笔记(四十五)成员属性与成员方法

    前面介绍了许多数据类型,除了基本类型如整型int.双精度型double.布尔型boolean之外,还有高级一些的如包装整型Integer.字符串类型String.本地日期类型LocalDate等等,那 ...

  7. Java开发笔记(六十一)Lambda表达式

    前面介绍了匿名内部类的简单用法,通过在sort方法中运用匿名内部类,不但能够简化代码数量,还能保持业务代码的连续性.只是匿名内部类的结构仍显啰嗦,虽然它省去了内部类的名称,但是花括号里面的方法定义代码 ...

  8. Java开发笔记(七十五)异常的处理:扔出与捕捉

    前面介绍的几种异常(不包含错误),编码的时候没认真看还发现不了,直到程序运行到特定的代码跑不下去了,程序员才会恍然大悟:原来这里的代码逻辑有问题.像这些在运行的时候才暴露出来的异常,又被称作“运行时异 ...

  9. web前端开发笔记(1)

     一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必 ...

随机推荐

  1. linux计划任务(二)

    计划任务的授权 1.at任务 /etc/at.allow /etc/at.deny 2.crontab任务 /etc/cron.allow /etc/cron.deny [注:如果allow文件存在, ...

  2. canvas里调用getImageData的报security的问题

    canvas元素支持绘制任意图片元素: var ctx = document.getElementById("canvas").getContext("2d") ...

  3. swift学习之Label

              //UILabel的使用方法        let label:UILabel = UILabel(frame: CGRect(x: 0, y: 100, width: view. ...

  4. 对/proc/cpuinfo文件下的各个参数的说明及实践

    我们通常要检查系统的cpu的相关信息,之前在进行查看cpu的信息的时候,我最长用的方式 是,直接将/etc/cpuinfo下的所有的内容进行显示,然后通过对全部文件的查看,来提取我们需要的信息,虽然查 ...

  5. Hdu4280 Island Transport 2017-02-15 17:10 44人阅读 评论(0) 收藏

    Island Transport Problem Description In the vast waters far far away, there are many islands. People ...

  6. [label][Apache] VirtualHost

    <VirtualHost *:80>    ServerName   localhost    DocumentRoot "D:\www"</VirtualHos ...

  7. Solr相似度算法二:BM25Similarity

    BM25算法的全称是 Okapi BM25,是一种二元独立模型的扩展,也可以用来做搜索的相关度排序. Sphinx的默认相关性算法就是用的BM25.Lucene4.0之后也可以选择使用BM25算法(默 ...

  8. jenkins修改时区

    查看jenkins目前的时区 访问http://your-jenkins/systemInfo,查看user.timezone变量的值 默认是纽约时间 修改时区 查https://wiki.jenki ...

  9. jenkins pipeline中执行nohup java -jar ***.jar & 的时候会忽略执行jar之后的命令

    搜索关键词:pipeline中执行nohup时忽略执行& 问题: 在做自动化部署的时候,脚本如下: sh "ssh root@'$target_ip' nohup '$java_ho ...

  10. Visual Studio Code 基本操作 - Windows 版

    1.Install the .NET SDK 2.Create app: dotnet new console -o myApp cd myApp 3.Run your app:dotnet run