当前位置: 首页 > news >正文

R304S 指纹识别模块功能实现示例

1 基本通信流程

1.1 UART 命令包的处理过程

1.2 UART 数据包的发送过程

UART 传输数据包前,首先要接收到传输数据包的指令包,做好传输准备后发送成功应答包,最后才开始传输数据包。数据包主要包括:包头、设备地址、包标识、包长度、数据和校验和。

数据包的包标识主要分为两种:02H 和 08H。02H:数据包,且有后续包。08H:最后一个数据包,即结束包。数据长度是预先设置好的,主要分为:32、64、128、和256 四种。

例如,要传输的数据长度为 1K bytes,数据包中预先设置的数据长度为128 bytes,那么就要把 1K bytes 的数据分为 8 个数据包传输。每个数据包包括:2 bytes 包头、4 bytes 设备地址、1 bytes 包标识、2 bytes 包长度、128 bytes 数据和 2 bytes 校验和,每个数据包长度为 139 bytes。另外,8 个数据包中, 前 7 个数据包的报标识是02H,最后一个结束数据包报标识是 08H。最后需要注意的是,结束包如果长 度没有达到139 bytes 时,以实际长度传输,不会以其他方式扩充到 139 bytes。

1.3 UART 数据包的接收过程

UART 传输数据包前,首先要接收到传输数据包的指令包,做好传输准备后发送成功应答包,最后才开始传输数据包。数据包主要包括:包头、设备地址、包标识、包长度、数据和校验和。

数据包的包标识主要分为两种:02H 和 08H。02H:数据包,且有后续包。08H:最后一个数据包,即结束包。数据长度是预先设置好的,主要分为:32、64、128、和256 四种,。

例如,要传输的数据长度为 1K bytes,数据包中预先设置的数据长度为128 bytes,那么就要把 1K bytes 的数据分为 8 个数据包传输。每个数据包包括:2 bytes 包头、4 bytes 设备地址、1 bytes 包标识、2 bytes 包长度、128 bytes 数据和 2 bytes 校验和,每个数据包长度为 139 bytes。另外,8 个数据包中, 前 7 个数据包的报标识是02H,最后一个结束数据包报标识是 08H。最后需要注意的是,结束包如果长度没有达到139 bytes 时,以实际长度传输,不会以其他方式扩充到 139 bytes。

2 通用指令通信流程

2.1 通用指令注册指纹流程

通用指令注册指纹流程主要包含:注册用获取图像、生成特征、合并特征和存储模板。通常 N = 2 次

注册逻辑设置为 1 时注册指纹,如果当前收录的指纹与之前已经收录的指纹相似,则生成特征指令的应答包中的确认码不会显示成功,而是返回 28H,表示当前指纹特征与之前特征之 间有关联。需要注意的是,相互比较关联性只局限在本次注册过程中收录的指纹,不会与指纹库中的指 纹进行比较。

注册逻辑设置为 2 时注册指纹,如果当前收录的指纹与之前已经收录的指纹不相似,则生成特征指令的应答包中的确认码不会显示成功,而是返回 08H,表示当前指纹特征与之前特征之间 无关联。需要注意的是,相互比较关联性只局限在本次注册过程中收录的指纹,不会与指纹库中的指纹 进行比较。

无论返回 28H 或者 08H,当前指纹特征已经提取成功,可以不改变BufferID重新采图并生成特征,也可以跳过本轮 BufferID,收录下一轮指纹

2.2 通用指令验证指纹流程

通用指令验证指纹流程主要包含:验证用获取图像、生成特征和搜索指纹。其中发送生成特征和搜 索指纹时,BufferID 设为默认值为 1。

2.3 从传感器获取指纹并生成特征后上传给主控

整个流程主要包含:验证用获取图像、生成特征和上传特征。其中发送生成特征和上传特征时, BufferID 设为默认值为 1。加密等级设置为 0 情况下支持此功能。

2.4 从 flash 指纹库中读取一个指定的模板上传

整个流程主要包含:读出模板和上传特征。其中发送读出模板和上传特征时,BufferID设为默认值为 2。加密等级设置为 0 情况下支持此功能。

2.5 主控下载一个指纹特征并以该特征搜索指纹库

整个流程主要包含:下载模板和搜索指纹。其中下载模板和搜索指纹时,BufferID设为默认值为 1。加密等级设置为 0 情况下支持此功能。

相关文章:

R304S 指纹识别模块功能实现示例

1 基本通信流程 1.1 UART 命令包的处理过程 1.2 UART 数据包的发送过程 UART 传输数据包前,首先要接收到传输数据包的指令包,做好传输准备后发送成功应答包,最后才开始传输数据包。数据包主要包括:包头、设备地址、包标识、包长…...

2、Excel:基础概念、表格结构与常见函数

数据来源:八月成交数据 数据初探 业务背景 数据来源行业:金融行业(根据应收利息和逾期金额字段来判断) 可以猜测: 业务主体:某互联网金融公司(类似支付宝)也业务模式:给…...

鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法

一、介绍 鱼类识别系统。使用Python作为主要编程语言开发,通过收集常见的30种鱼类(‘墨鱼’, ‘多宝鱼’, ‘带鱼’, ‘石斑鱼’, ‘秋刀鱼’, ‘章鱼’, ‘红鱼’, ‘罗非鱼’, ‘胖头鱼’, ‘草鱼’, ‘银鱼’, ‘青鱼’, ‘马头鱼’, ‘鱿鱼’, ‘鲇…...

ThreadLocal线程重用导致用户信息错乱的 Bug

在生产上遇到一个诡异的问题,有时获取到的用户信息是别人的。查看代码后,我发现他使用了 ThreadLocal 来缓存获取到的用户信息。 我们知道,ThreadLocal 适用于变量在线程间隔离,而在方法或类间共享的场景。如果用户信息的获取比较…...

洛谷——P1143 进制转换

文章目录 一、题目进制转换题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 二、题解基本思路: 一、题目 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入格式 共三行,第一行是一个正整数,表示需要转换的…...

linux stop_machine 停机机制应用及一次触发 soft lockup 分析

文章目录 stop_mchine 引起的 soft lockup触发 soft lockup 原因分析(一):触发 soft lockup 原因分析(二)触发 soft lockup 原因分析(三) stop_mchine 引起的 soft lockup 某次在服务器上某节点…...

ARM 链接器优化功能介绍

消除公共部分组 链接器可以检测节组的多个副本,并丢弃其他副本。 Arm Compiler for Embedded 生成用于链接的完整对象。因此: 如果 C 和 C 源代码中存在内联函数,则每个对象都包含该对象所需的内联函数的外联副本。如果在 C 源代码中使用…...

动手学深度学习之卷积神经网络之池化层

池化层 卷积层对位置太敏感了,可能一点点变化就会导致输出的变化,这时候就需要池化层了,池化层的主要作用就是缓解卷积层对位置的敏感性 二维最大池化 这里有一个窗口,来滑动,每次我们将窗口中最大的值给拿出来 还是上…...

HackTheBox - Medium - Linux - Ambassador

Ambassador Ambassador 是一台中等难度的 Linux 机器,用于解决硬编码的明文凭据留在旧版本代码中的问题。首先,“Grafana”CVE (“CVE-2021-43798”) 用于读取目标上的任意文件。在研究了服务的常见配置方式后,将在其…...

嵌入式——循环队列

循环队列 (Circular Queue) 是一种数据结构(或称环形队列、圆形队列)。它类似于普通队列,但是在循环队列中,当队列尾部到达数组的末尾时,它会从数组的开头重新开始。这种数据结构通常用于需要固定大小的队列,例如计算机内存中的缓冲区。循环队列可以通过数组或链表实现,…...

2024.1.7-实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功)

实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功) 目录 最终效果 原文链接 https://onedayxyy.cn/docs/prometheus-grafana-ecs 参考模板 https://i4t.com/ https://grafana.frps.cn 🔰 额,注意哦: 他这个是通过frp来…...

20240107 SQL基础50题打卡

20240107 SQL基础50题打卡 1978. 上级经理已离职的公司员工 表: Employees ----------------------- | Column Name | Type | ----------------------- | employee_id | int | | name | varchar | | manager_id | int | | salary | int | -…...

阿里云公网带宽出网和入网是什么?上行和下行是什么?

什么是阿里云服务器ECS的入网带宽和出网带宽?以云服务器为中心,流入云服务器占用的带宽是入网带宽,流量从云服务器流出的带宽是出网带宽。阿里云服务器网aliyunfuwuqi.com分享入网带宽和出网带宽说明表: 带宽类别说明入网带宽&am…...

eureka工作原理是什么

EUREKA 是一个基于 RESTful 风格的服务发现系统,它主要用于帮助实现在微服务架构中的服务自动发现与注册。其工作原理主要包括以下几个步骤: 注册中心:EUREKA 中有一个集中的注册中心,所有的服务都将在此注册和发现。注册中心可以…...

Vue中的事件委托(事件代理)使用方法介绍

事件委托(事件代理) 将原本需要绑定在子元素上的事件监听器委托在父元素上,让父元素充当事件监听的职务。 事件委托是一种利用事件冒泡的特性,在父节点上响应事件,而不是在子节点上响应事件的技术。它能够改善性能&a…...

「HDLBits题解」Wire decl

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接:Wire decl - HDLBits default_nettype none module top_module(input a,input b,input c,input d,output out,output out_n ); w…...

[MAUI]在.NET MAUI中调用拨号界面

在.NET MAUI中调用拨号界面 前置要求: Visual Studio 2022 安装包“.NET Multi-platform App UI 开发” 参考文档: 电话拨号程序 新建一个MAUI项目 在解决方案资源管理器窗口中找到Platforms/Android/AndroidManifest.xml在AndroidManifest.xml中添加下文中…块如下:<?xml…...

Kali/Debian Linux 安装Docker Engine

0x01 卸载旧版本 在安装Docker Engine之前&#xff0c;需要卸载已经安装的可能有冲突的软件包。一些维护者在他们的仓库提供的Docker包可能是非Docker官方发行版&#xff0c;须先卸载这些软件包&#xff0c;然后才能安装Docker官方正式发行的Docker Engine版本。 要卸载的软件…...

Spring 应用合并之路(二):峰回路转,柳暗花明 | 京东云技术团队

书接上文&#xff0c;前面在 [Spring 应用合并之路&#xff08;一&#xff09;&#xff1a;摸石头过河]介绍了几种不成功的经验&#xff0c;下面继续折腾… 四、仓库合并&#xff0c;独立容器 在经历了上面的尝试&#xff0c;在同事为啥不搞两个独立的容器提醒下&#xff0c;…...

SQL Error 1366, SQLState HY000

SQL错误 1366 和 SQLState HY000 通常指的是 MySQL 与字符编码或数据截断有关的问题。当尝试将数据插入具有与正在插入的数据不兼容的字符集或排序规则的列时&#xff0c;或者正在插入的数据对于列来说过长时&#xff0c;就会出现此错误。 解决方式&#xff1a; 检查列长度&am…...

Codeforces Round 893 (Div. 2)(VP-7,寒假加训)

VP时间 A. 关键在于按c的按钮 c&1 Alice可以多按一次c按钮 也就是a多一个&#xff08;a&#xff09; 之后比较a,b大小即可 !(c&1) Alice Bob操作c按钮次数一样 1.ac B.贪心 一开始会吃饼干 如果有卖饼的就吃 如果隔离一段时间到d没吃就吃&#xff08;当时…...

MySQL第四战:视图以及常见面试题(上)

目录 目录&#xff1a; 一.视图 1.介绍什么是视图 2.视图的语法 语法讲解 实例操作 二.MySQL面试题 1.SQL脚本 2.面试题实战 三.思维导图 目录&#xff1a; 随着数字化时代的飞速发展&#xff0c;数据库技术&#xff0c;特别是MySQL&#xff0c;已经成为IT领域中不可…...

C语言程序设计——程序流程控制方法(一)

C语言关系运算符 ---等于ab!不等于a!b<、>小于和大于a>b 、a<b<、>小于等于、大于等于a>b 、a<b!非!(0)、!(NULL) 在C99之后&#xff0c;C语言开始支持布尔类型&#xff0c;头文件是stdbool.h。在文中我所演示的所有代码均是C99版。 在C语言上上述关…...

torch.backends.cudnn.benchmark

torch.backends.cudnn.benchmark 的设置对于使用 PyTorch 进行深度学习训练的性能优化至关重要。具体而言&#xff0c;它与 NVIDIA 的 CuDNN&#xff08;CUDA Deep Neural Network library&#xff09;库有关&#xff0c;该库是在 GPU 上加速深度神经网络计算的核心组件。 启用…...

SQL Server从0到1——写shell

xp_cmdshell 查看能否使用xpcmd_shell&#xff1b; select count(*) from master.dbo.sysobjects where xtype x and name xp_cmdshell 直接使用xpcmd_shell执行命令&#xff1a; EXEC master.dbo.xp_cmdshell whoami 发现居然无法使用 查看是否存在xp_cmdshell: EXEC…...

计算圆弧的起始角度、终止角度和矩形信息并使用drawArc绘制圆弧

Qt中常用绘制圆弧的库函数&#xff1a; //函数原型 void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)Qt规定1约占16个像素&#xff0c;比如一个完整的圆等于360度&#xff0c;对应的像素角度就是 5760度&#xff08;16 * 360&#xff09;…...

C++ Trie树模版 及模版题 || Trie字符串统计

Trie树&#xff1a;用来高效的存储和查找字符串集合的数据结构。 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x &#xff1b; Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作&#xff0c;所有输入的字符串总长度不超过 1…...

Linux基础命令@echo、tail、重定向符

目录 echo概念语法作用演示一演示二 反引号作用 tail概念语法作用不带选项&#xff0c;演示一带选项 -num&#xff0c;演示二带选项 -f &#xff0c; 持续跟踪 重定向符概念作用覆盖重定向&#xff0c;>演示一演示二 追加重定向&#xff0c;>>演示一演示二 总结 echo …...

uniapp:签字版、绘画板 插件l-signature

官方网站&#xff1a;LimeUi - 多端uniapp组件库 使用步骤&#xff1a; 1、首先从插件市场将代码下载到项目 海报画板 - DCloud 插件市场 2、下载后&#xff0c;在项目中的uni_modules目录&#xff08;uni_modules优点&#xff1a;不需要import引入&#xff0c;还可以快捷更新…...

Python Pillow(PIL)库的用法介绍

Python的Pillow库&#xff08;PIL&#xff09;是一个强大的图像处理库&#xff0c;可以用来进行图像的读取、编辑、处理和保存等操作。下面是一些Pillow库的基本用法介绍&#xff1a; 安装Pillow库&#xff1a; 在命令行中输入以下命令即可安装Pillow库&#xff1a; 复制代码 p…...

专业广州网站建设/广州推广服务

在日常敲代码时&#xff0c;我们有时需要在一个元素上绑定多个事件。 下面进入主题 我们在元素上使用一个动作绑定多个事件用 &#xff1b; 隔开。 <el-button type"primary" size"small" click"add1();add2();">123</el-button>然…...

视频类网站模板/网络推广服务协议

1、插入汽车钥匙&#xff0c;接通电源后仪表盘亮 2、踩住刹车 3、将排档从 P 调整至 N 档 4、点火 5、松手刹 6、将排档从 P 调整至 D 档 7、起步转载于:https://www.cnblogs.com/imzndo/p/4525688.html...

网站的域名解析怎么做/南京网页搜索排名提升

Channel Channel 是 Phoenix 框架中的一种高级抽象&#xff0c;也是Phoenix中最激动人心的部分。它可以方便地实现客户端之间的软实时通信&#xff0c;今天我们就来用它来构建一个最简单的聊天频道。主要目的是理解 Channel 的使用方式。 目标 图中的圆圈代表客户端&#xff0c…...

北京做网站哪家好/备案查询网

需求&#xff1a; package com.itheima.operator;public class OperatorTest2 {public static void main(String[] args) {// 需求&#xff1a;拆分3位数&#xff0c;把个位、十位、百位分别输出int data 589;//1个位int ge data % 10;System.out.println(ge);//2十位int shi…...

怎么做有趣的微视频网站/百度广告联盟价格

事务 1. 事务的几个概念 &#xff08;1&#xff09;脏读&#xff1a;对于两个事务t1,t2。t1先读取了已经被t2更新但是没有被提交的字段&#xff0c;那么在t2提交之后&#xff0c;数据就会发生改变。 &#xff08;2&#xff09;不可重复读&#xff1a;对于两个事务t1,t2。t1读…...

做购物网站的费用/什么叫做网络营销

一、 前后端分离的定义 什么是前后端分离呢&#xff1f; 其实在过去根本就不分什么前后端的&#xff0c;无论是Java还是js都是一个人写的“蛮荒时代”。 那么到底是因为什么原因才开始了区分前后端的呢&#xff1f; 首先是可以并行开发&#xff0c;前后端进度互不影响&…...