一、相关概念

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. WPF 绑定备忘单

     Part I – Common Examples Basic Binding   {Binding}  Bind to current DataContext. {Binding Name}  Bi ...

  2. write/read/send/receive函数比较

    建立好TCP连接后,就可以把得到的套接字当做文件描述符来使用,由此,联系到网络程序里的基本读写函数,write.read: l write函数: Ssize_t write(int fd,const ...

  3. 学生信息系统(json模块解决数据持久化)

    将学生管理的案例,学生信息由原来的只有姓名,拓展为包含,姓名,年龄,两个属性:完成对应的增.删.查.改,操作 import json,os,time,sys student_list = [] Fil ...

  4. Postgres 主从配置(四)

    Postgres 主从切换 数据库主从结构中由从库升级为主库较为容易些,但是主库恢复后重新加入到主从结构中就不那么容易了.以往的做法是当成一个全新的从库加入进来,数据需要重新从现有的主库中使用pg_b ...

  5. vim出现“E212: Can't open file for writing”的处理办法

    在使用vim 对文件或配置进行编辑的时候,在保存时发现当前用户没有写权限.又不想放弃当前编辑的内容,怎么办呢? 来自stackoverflow “For some reason the file yo ...

  6. python怎么生成requirements.txt文件

    生成文件: pip freeze > requirements.txt 安装依赖: pip install -r requirements.txt

  7. 纸壳CMS3.0中的规则引擎,表达式计算

    纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接 ...

  8. C#基础笔记(第十六天)

    1.进程复习//通过进程去打开应用程序 Process.Start("calc"); Process.Start("mspaint"); Process.Sta ...

  9. 如何成功导入SlidingMenu库?

    SlidingMenu是一个开源的侧滑菜单(https://github.com/jfeinstein10/SlidingMenu).  为大家的安卓程序提供侧滑菜单,这个功能也非常有用. 要想正常使 ...

  10. 域名可以解析(ping域名可以获取正确ip),服务器本地telnet 域名+端口 无法连接,通过建立本地虚拟域名指定的方法解决该问题

    环境: 服务器A,网管已为A开通外网ip,且设置有映射域名:假如内网ip为172.16.2.6.外网ip为123.123.123.123.域名为test.sstest.com 现象: 服务器A,tel ...