R306指纹识别模块指令系统
一:指令集
1. GR_GetImage
指令代码:01H
功能:从传感器上读入图像存于图像缓冲区
2. GR_GenChar
指令代码:02H
功能:根据原始图像生成指纹特征存于 CharBuffer1 或 CharBuffer2
3. GR_Match
指令代码:03H
功能:精确比对 CharBuffer1 与 CharBuffer2 中的特征文件
4. GR_Search
指令代码:04H
功能:以 CharBuffer1 或 CharBuffer2 中的特征文件搜索整个或部分指纹库
5. GR_RegModel
指令代码:05H
功 能 : 将 CharBuffer1 与 CharBuffer2 中 的 特 征 文 件合并生成模板存于CharBuffer1 与 CharBuffer2
6. GR_StoreChar
指令代码:06H
功能:将特征缓冲区中的文件储存到 flash 指纹库中
7. GR_LoadChar
指令代码:07H
功能:从 flash 指纹库中读取一个模板到特征缓冲区
8. GR_UpChar
指令代码:08H
功能:将特征缓冲区中的文件上传给上位机
9. GR_DownChar
指令代码:09H
功能:从上位机下载一个特征文件到特征缓冲区
10. GR_UpImage
指令代码:0AH
功能:上传原始图像
11. GR_DownImage
指令代码:0BH
功能:下载原始图像
12. GR_DeletChar
指令代码:0CH
功能:删除 flash 指纹库中的一个特征文件
13. GR_Empty
指令代码:0DH
功能:清空 flash 指纹库
14. GR_WriteReg
指令代码:0EH
功能:设置系统参数
15. GR_ReadSysPara
指令代码:0FH
功能:读系统基本参数
16. GR_Enroll
指令代码:10H
功能:注册模板
17. GR_ Identify
指令代码:11H
功能:验证指纹
18. GR_SetPwd
指令代码:12H
功能:设置设备握手口令
19. GR_VfyPwd
指令代码:13H
功能:验证设备握手口令
20. GR_GetRandomCode
指令代码:14H
功能:采样随机数
21. GR_SetAddr
指令代码:15H
功能:设置模块地址
22. GR_Port_Control
指令代码:17H
功能:通讯端口(UART/USB)开关控制
23. GR_WriteNotepad
指令代码:18H
功能:写记事本
24. GR_ReadNotepad
指令代码:19H
功能:读记事本
25. GR_HighSpeedSearch
指令代码:1BH
功能:高速搜索 FLASH
26. GR_GenBinImage
指令代码:1CH
功能:生成二值化指纹图像
27. GR_ValidTempleteNum
指令代码:1dH
功能:读有效模板个数
二:指令详解
⑴ 录入图像 GR_GetImage
功能说明: 探测手指,探测到后录入指纹图像存于ImageBuffer。
输入参数: none
返回参数: 确认字
指令代码: 01H

注:确认码=00H表示录入成功;
确认码=01H表示收包有错;
确认码=02H表示传感器上无手指;
确认码=03H表示录入不成功;
sum指校验和
⑵ 生成特征 GR_GenChar
功能说明: 将ImageBuffer中的原始图像生成指纹特征文件存于CharBuffer1或CharBuffer2
输入参数 :BufferID(特征缓冲区号)
返回参数 :确认字
指令代码 :02H
注:确认码=00H表示生成特征成功;
确认码=01H表示收包有错;
确认码=06H表示指纹图像太乱而生不成特征;
确认码=07H表示指纹图像正常,但特征点太少而生不成特征;
确认码=15H表示图像缓冲区内没有有效原始图而生不成图像;
sum指校验和
⑶ 精确比对两枚指纹特征 GR_Match
功能说明 :精确比对CharBuffer1 与CharBuffer2 中的 特征文件
输入参数 :none
返回参数 :确认字,比对得分
指令代码 :03H

注:确认码=00H表示指纹匹配;
确认码=01H表示收包有错;
确认码=08H表示指纹不匹配;
sum指校验和
⑷ 搜索指纹 GR_Search
功能说明 :以 CharBuffer1或CharBuffer2中的特征文件搜索整个或部分指纹库。
若搜索到,则返回页码。
输入参数 :BufferID, StartPage(起始页),PageNum(页数)
返回参数 :确认字,页码(相配指纹模板)
指令代码:04H


注:确认码=00H表示搜索到;
确认码=01H表示收包有错;
确认码=09H表示没搜索到;此时页码与得分为0
sum指校验和
⑸ 合并特征(生成模板)GR_RegModel
功能说明 :将 CharBuffer1与CharBuffer2中的特征文件合并生成模板,
结果存于CharBuffer1与CharBuffer2。
输入参数 :none
返回参数 :确认字
指令代码:05H

注: 确认码=00H表示合并成功;
确认码=01H表示收包有错;
确认码=0aH表示合并失败(两枚指纹不属于同一手指))
sum指校验和
(6) 储存模板 GR_StoreChar
功能说明 :将 CharBuffer1 或 CharBuffer2 中的模板文件存到PageID号flash数据库位置。
输入参数 :BufferID(缓冲区号),PageID(指纹库位置号)
返回参数 :确认字
指令代码 :06H

注:确认码=00H表示储存成功;
确认码=01H表示收包有错;
确认码=0bH表示PageID超出指纹库范围;
确认码=18H表示写 FLASH出错;
sum指校验和
⑺ 读出模板 GR_LoadChar
功能说明 :将 flash数据库中指定ID号的指纹模板读入到模板缓冲区CharBuffer1或CharBuffer2
输入参数 :BufferID(缓冲区号),PageID(指纹库模板号)
返回参数 :确认字
指令代码 :07H

注:确认码=00H表示读出成功;
确认码=01H表示收包有错;
确认码=0cH表示读出有错或模板无效;
确认码=0BH表示PageID超出指纹库范围;
sum指校验和
⑻ 上传特征或模板 GR_UpChar
功能说明 :将特征缓冲区中的特征文件上传给上位机
输入参数 :BufferID(缓冲区号)
返回参数 :确认字
指令代码 :08H

注:确认码=00H表示随后发数据包;
确认码=01H表示收包有错;
确认码=0dH表示指令执行失败;
sum指校验和
应答之后发送后续数据包
⑼ 下载特征或模板 GR_DownChar
功能说明 :上位机下载特征文件到模块的一个特征缓冲区
输入参数 :BufferID(缓冲区号)
返回参数 :确认字
指令代码 :09H

注:确认码=00H表示可以接收后续数据包;
确认码=01H表示收包有错;
确认码=0eH表示不能接收后续数据包;
sum指校验和
应答之后接收后续数据包
⑽ 上传原始图像 GR_UpImage
功能说明 :将图像缓冲区中的数据上传给上位机
输入参数 :none
返回参数:确认字
指令代码 :0aH


注:确认码=00H表示接着发送后续数据包;
确认码=01H表示收包有错;
确认码=0fH表示不能发送后续数据包;
sum指校验和
应答之后发送后续数据包
一个字节含两个像素,每个像素占4bits
⑾ 下载图像 GR_DownImage
功能说明 :上位机下载图像数据给模块
输入参数 :none
返回参数 :确认字
指令代码 :0bH

注:确认码=00H表示可以接收后续数据包;
确认码=01H表示收包有错;
确认码=0eH表示不能接收后续数据包;
sum指校验和
应答之后接收后续数据包,数据包长度须是64,128或256
一个字节含两个像素,每个像素占4bits
⑿ 删除模板 GR_DeletChar
功能说明 :删除flash数据库中指定ID号开始的N个指纹模板
输入参数 :PageID(指纹库模板号),N删除的模板个数。
返回参数 :确认字
指令代码 :0cH

注:确认码=00H表示删除模板成功;
确认码=01H表示收包有错;
确认码=10H表示删除模板失败;
sum指校验和
⒀ 清空指纹库 GR_Empty
功能说明 :删除flash数据库中所有指纹模板
输入参数 :none
返回参数 :确认字
指令代码 :0dH

注:确认码=00H表示清空成功;
确认码=01H表示收包有错;
确认码=11H表示清空失败;
sum指校验和
⒁ 写系统寄存器 GR_WriteReg
功能说明 :写模块寄存器
输入参数 :寄存器序号
返回参数:确认字
指令代码 :0eH


注1:确认码=00H表示OK;
确认码=01H表示收包有错;
确认码=1aH表示寄存器序号有误;
sum指校验和
注2:写系统寄存器(GR_WriteReg)指令执行时,先按照原配置进行应答,应答之后修改系统设置,并将配置记录于 FLASH,系统下次上电后,将按照新的配置工作。
⒂ 读系统基本参数 GR_ReadSysPara
功能说明 :读取模块的基本参数(波特率,包大小等)。)
输入参数 :none
返回参数 :确认字 + 基本参数(16bytes)
指令代码 :0fH

注:确认码=00H表示OK;
确认码=01H表示收包有错;
sum指校验和


⒅ 设置口令 GR_SetPwd
功能说明 :设置模块握手口令
输入参数 :PassWord
返回参数 :确认字
指令代码 :12H

注:确认码=00H表示OK;
确认码=01H表示收包有错;
sum指校验和
⒆ 验证口令 GR_VfyPwd
功能说明 :验证模块握手口令
输入参数 :PassWord
返回参数 :确认字
指令代码 :13H

注:确认码=00H表示口令验证正确;
确认码=01H表示收包有错;
确认码=13H表示口令不正确;
sum指校验和
⒇ 采样随机数 GR_GetRandomCode
功能说明 :令芯片生成一个随机数并返回给上位机
输入参数 :none
返回参数 :确认字
指令代码 :14H

注:确认码=00H表示生成成功;
确认码=01H表示收包有错;
sum指校验和
(21) 设置模块地址 GR_SetAddr
功能说明 :设置模块地址
输入参数 :none
返回参数 :确认字
指令代码 :15H

注:确认码=00H表示生成地址成功;
确认码=01H表示收包有错;
sum指校验和
上位机下传指令包时模块地址采用缺省地址:0xffffffff,应答包的地址域即采用新生成的地址本指令执行后,模块地址随即固定下来,保持不变。只有清空FLASH才能改变模块地址。本指令执行后,所有数据包都得用该生成的地址。
(22) 端口控制 GR_Port_Control
功能说明 :对于UART协议,该命令对USB通讯端口进行开关控制。
对于USB协议,该命令对UART端口进行开关控制。
输入参数 :控制码
控制码0代表关闭端口
控制码1代表开启端口
返回参数 :确认字
指令代码 :17H

注:确认码=00H表示端口操作成功;
确认码=01H表示收包有错;
确认码=1dH表示端口操作失败;
sum指校验和
(23) 写记事本 GR_WriteNotepad
功能说明 :模块内部为用户开辟了256bytes的FLASH 空间用于存放用户数据,该存储空间称为用户记事本,该记事本逻辑上被分成 16 个页,写记事本命令用于写入用户的32bytes数据到指定的记事本页 。
输入参数 :NotePageNum,user content
返回参数 :确认字
指令代码 :18H

注:确认码=00H表示OK;
确认码=01H表示收包有错;
sum指校验和
(24) 读记事GR_ReadNotepad
功能说明 :读取FLASH用户区的128bytes数据
输入参数 :none
返回参数 :确认字 + 用户信息
指令代码 :19H
指令包格式:

注:确认码=00H表示OK;
确认码=01H表示收包有错;
sum指校验和
(25) 高速搜索GR_HighSpeedSearch
功能说明 :以CharBuffer1或CharBuffer2中的特征文件高速搜索整个或部分指纹库。
若搜索到,则返回页码。 该指令对于的确存在于指纹库中,且登录时质量
很好的指纹,会很快给 出搜索结果。
输入参数:BufferID, StartPage(起始页),PageNum(页数)
返回参数 :确认字,页码(相配指纹模板)
指令代码 :1bH


注:确认码=00H表示搜索到;
确认码=01H 表示收包有错;
确认码=09H表示没搜索到;此时页码与得分为0
sum指校验和
(26) 生成细化指纹图像 GR_GenBinImage
功能说明 :对图像缓冲区中的指纹图像进行处理并生成细化指纹图像
输入参数 :BinImgTpye
0:二值化图像
1:不含特征点标识的细化图像
2或其他:带有特征点标识的细化图像
返回参数 :确认字
指令代码 :1cH

注:确认码=01H表示收包有错;
确认码=15H 表示无效指纹图像
确认码= 07 H表示没有足够特征信息
确认码=06 H表示图像质量太差 sum指校验和
(27) 读有效模板个数 GR_ValidTempleteNum
功能说明 :读有效模板个数
输入参数 :none
返回参数 :确认字,有效模板个数ValidN
指令代码 :1dH

注:确认码=00H表示读取成功;
确认码=01H表示收包有错;
sum指校验和
相关文章:
R306指纹识别模块指令系统
一:指令集 1. GR_GetImage 指令代码:01H 功能:从传感器上读入图像存于图像缓冲区 2. GR_GenChar 指令代码:02H 功能:根据原始图像生成指纹特征存于 CharBuffer1 或 CharBuffer2 3. GR_Match 指令代码ÿ…...
redis的搭建及应用(三)-Redis主从配置
Redis主从配置 为提升Redis的高可用性,需要搭建多个Redis集群以保证高可用性。常见搭建方式有:主从,哨兵集群等,本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置,以端口号为redis的主从文件夹。 主…...
Java学习,一文掌握Java之SpringBoot框架学习文集(1)
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...
javaWeb学生信息管理系统2
一、学生信息管理系统SIMS 一款基于纯Servlet技术开发的学生信息管理系统(SIMS),在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息,实现了信息的有效存储、检索和更新…...
Linux Shell 019-文本行处理工具sed
Linux Shell 019-文本行处理工具sed 本节关键字:Linux、Bash Shell、文本行处理工具 相关指令:sed、 sed介绍 sed是Stream Editor(流编辑器)的缩写,简称流编辑器;用来处理文件的。sed是一行一行读取文件…...
Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷
Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷 一:fdisk磁盘分区并挂载1.查看磁盘分区信息2.分区3.强制系统重新读取分区(避免重启系统)4.格式化分区5.创建挂载目录6.设置开机自动挂载:7.验证并自动挂载(执行了该命令不需要重启系统)8.查看挂载007.异常情况处…...
【leetcode】栈与队列总结
本文内容来自于代码随想录 栈 用栈实现队列 两个栈实现队列。思路:两个栈分别表示入栈和出栈。 入队:直接入栈出队: a. 出栈为空,先把入栈中的元素全部放到出栈中(相当于反过来,这样在出栈的时候先进的元…...
[EFI]HP Spectre 13 v102nl电脑 Hackintosh 黑苹果efi引导文件
硬件型号驱动情况主板 HP Spectre 13 v102nl 处理器Intel Core i7-7500U (7th gen - Kaby Lake)已驱动内存8 GB LPDDR3-1866 SDRAM已驱动硬盘512 GB Toshiba NVMe™ M.2 SSD已驱动显卡Intel HD Graphics 620已驱动声卡Conexant CX8200 (0x2008)已驱动网卡I1211 Gigabit Etherne…...
【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec
【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的?2.词向量是什么样子?3.词向量对应的热力图:4.词向量模型的输入与输出,其实…...
用Xshell连接虚拟机的Ubuntu20.04系统记录。虚拟机Ubuntu无法上网。本机能ping通虚拟机,反之不能。互ping不通
先别急着操作,看完再试。 如果是:本机能ping通虚拟机,反之不能。慢慢看到第8条。 如果是:虚拟机不能上网(互ping不通),往下一直看。 系统是刚装的,安装步骤:VMware虚拟机…...
人机对话--关于意识机器
人机对话–关于意识机器 这段内容是我和《通义千问》的对话。这本身展示的是人工智能的效果,同时这里面的内容也有人工智能相关,与各位分享。 我:阿尼尔赛斯 《意识机器》这本书写的是什么? 通义千问: 阿尼尔赛斯教…...
八股文打卡day16——计算机网络(16)
面试题:TCP连接是如何确保可靠性的? 我的回答: 1.数据分块控制。应用数据被分成被认为最适合传输的数据块大小,再发送到传输层,数据块被称为数据报文段或数据段。 2.序列号和确认应答。TCP为每一个数据包分配了一个序…...
Java Object浅克隆深克隆
对象克隆 把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制。 实现Cloneable接口,表示当前类的对象就可以被克隆,反之,表示当前类的对象就不能克隆。 如果一个接口里面没有抽象方法,表示当前的接口…...
概率的 50 个具有挑战性的问题 [8/50]:完美的桥牌
一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》)一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇…...
自动驾驶学习笔记(二十四)——车辆控制开发
#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 控制算法 控制标定 控制协议…...
【起草】【第十二章】定制ChatGPT数字亲人
身为普普通通的我们,不知道亲人们在哪一天就要离开这个世界 ? 作为普普通通的程序员,我们可以为我们的亲人做点什么 ? 让他们以数字资产形式留在人世间 ? 对话|6岁女孩病逝捐器官,妈妈:她去…...
MySQL数据库索引
索引的定义 索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址 索引的作用 加快表的查询速度,还可以对字段排序 索引的副作用 会额外占用磁盘空间;更新包含索引的表会花费更多的时间,效率会更慢 …...
【LLM 】7个基本的NLP模型,为ML应用程序赋能
在上一篇文章中,我们已经解释了什么是NLP及其在现实世界中的应用。在这篇文章中,我们将继续介绍NLP应用程序中使用的一些主要深度学习模型。 BERT 来自变压器的双向编码器表示(BERT)由Jacob Devlin在2018年的论文《BERT:用于语言…...
数字人私人定制
数字人是什么? 在回答这个问题之前,我们先回答另一个问题,人如何与人工智能交流?目前可以通过文字、语音、电脑屏幕、手机屏幕、平板、虚拟现实设备等和人工智能交流,为了得到更好的交流体验,人工智能必然…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
