R503S指纹识别模块的通信协议

1 物理层

物理层采用串口通讯,波特率 57600,8 位数据位,1 位停止位,无奇偶校验位。

2 数据包格式

模块采用 UART 与上位机通讯,对命令、数据、结果的接收和发送,都采用数据包的形式。对于多字节的,高字节在前低字节在后(如 2 bytes 的 00 06 表示 0006,不是 0600)。数据包格式及其定义见表 4.1 和表 4.2 所示。

表 4.1 数据包格式

包头地址包标识包长度包内容(指令/数据/参数/确认码)校验和
2 Bytes4 Bytes1 Byte2 Bytes2 Bytes

表 4.2 数据包详细定义表

名称符号长度(Bytes)说明
包头Start2Checksum
地址Addr4默认值为 0xFFFFFFFF,用户可通过指令修改地址,模块会拒绝地址错误的指令。传送时高字节在前。
包标识Pid1

0x01:表示指令包,可以跟数据包。

0x02:表示数据包,且有后续包。数据包必须跟在指令包或应答包后面。

0x07:表示应答包,可以跟数据包。

0x08:表示最后一个数据包,即结束包。

包长度Length2包长度=包内容长度+校验和长度。传送时高字节在前。
包内容Data-包括指令、数据、参数、确认码等。
校验和Checksum2“包标识+包长度+包内容”所有字节的累加和。传送时高字节在前。

3 指令集汇总表

代码指令名功能说明
0x01GetImage从传感器上读入图像存于图像缓冲区
0x02GenChar根据原始图像生成指纹特征存于 CharBuffer 中
0x03Match比对几个 CharBuffer 中的特征文件
0x04Search以 CharBuffer 中的特征文件搜索整个或部分指纹库
0x05RegModel将 CharBuffer 中的特征文件合并生成模板存在特征缓冲区内
0x06StoreChar将特征缓冲区内的模板储存到 flash 指纹库中
0x07LoadChar从 flash 指纹库中读取一个模板到特征缓冲区
0x08UpChar将特征缓冲区中的文件上传
0x09DownChar下载一个特征文件到特征缓冲区
0x0aUpImage上传图像缓冲区内的图像数据
0x0bDownImage下载图像数据到图像缓冲区
0x0c DeleteChar删除 flash 指纹库中的一个模板文件
0x0dEmpty清空 flash 指纹库
0x0eSetSysPara设置系统参数
0x0fReadSysPara 读系统参数
0x12SetPwd设置口令
0x13VfyPwd效验口令
0x14GetRandomCode获取随机数
0x15SetAddr设置模块地址
0x16ReadInfPage 读取信息页
0x18WriteNotepad写记事本
0x19ReadNotepad读记事本
0x1dValidTemplateNum读有效模板个数
0x1fReadIndexTable读指纹模板索引表
0x28GetImageEx采集指纹图像扩展指令
0x30Cancel取消指令
0x40HandShake握手
0x36CheckSensor检测传感器
0x39GetAlgVer获取算法库版本
0x3aGetFwVer获取固件版本
0x3cReadProdInfo 读取产品信息
0x3dSoftRst 软复位
0x35AuraLedConfig光环控制

4 数据包的接收与应答

指令只能由上位机下发给模块,模块向上位机应答。

模块收到指令后,会通过应答包,将有关命令执行情况与结果上报给上位机。应答包含有参数,并可跟后续数据包。

指令后如果需要跟数据包,则上位机在发送指令包,并收到应答包后才能确认是否可以继续发数据包。

上位机只有在收到模块的应答包后才能确认模块的收包情况与指令执行情况。应答包的内容包括一个字节的确认码(必须有)和可能有的返回参数。确认码见表4.3。

表 4.3 确认码定义表

序号确认码定义说明
10x00指令执行完毕或 OK;
20x01数据包接收错误;
30x02传感器上没有手指;
40x03录入指纹图像失败;
50x06指纹图像太乱而生不成特征;
60x07指纹图像正常,但特征点太少(或面积太小)而生不成特征;
70x08指纹不匹配;
80x09没搜索到指纹;
90x0a特征合并失败;
100x0b访问指纹库时地址序号超出指纹库范围;
110x0c从指纹库读模板出错或无效;
120x0d上传特征失败;
130x0e模块不能接受后续数据包;
140x0f上传图像失败;
150x10 删除模板失败;
160x11清空指纹库失败
170x13口令不正确;
180x15缓冲区内没有有效原始图像;
190x18读写 FLASH 出错;
200x1a无效寄存器号;
210x1b无效数据或数据非法(包括指纹特征或指纹模板数据非法)
220x20地址码错误
230xFC不支持的命令
240xFD硬件错误
250xFE命令执行失败
260x21必须验证口令
270x22指纹模板为空
280x24指纹库为空
290x26超时
300x27指纹已存在
310x29传感器硬件错误
320x1f指纹库已满
33other系统保留

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用CSS中的动画效果做一个转动的表

<!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title></title><style>*{margin:0;padding:0;} /*制作表的样式*/.clock{width: 500px;height: 500px;margin:0 auto;margin-top:100px;border-rad…

JavaScript(注释,数据类型,运算符,条件语句)

一 注释 1.1 单行注释 //这是单行注释 1.2 多行注释 /*这是多行注释*/ 1.3 嵌套在HTML文件中注释 <!--注释--> 1.4 注释的快捷键 ctrl/ 二 JavaScript输出方式 2.1 在浏览器中展示对话框&#xff0c;弹出要展…

强化学习计划

文章目录 强化学习强化学习解决的是什么样的问题&#xff1f;举出强化学习与有监督学习的异同点。有监督学习靠样本标签训练模型&#xff0c;强化学习靠的是什么&#xff1f;强化学习的损失函数&#xff08;loss function&#xff09;是什么&#xff1f;写贝尔曼方程&#xff0…

【Linux Shell学习笔记】Linux Shell的流控制

1、 if条件判断 1.1 格式 1.1.1 单分支 if [ 判断表达式 ];then 代码块 fi 1.1.2 双分支 if [ 判断表达式 ];then 代码1 else 代码2 fi 1.1.3 多分支 if [ 判断表达式1 ];then 代码1 elif [ 判断表达式2 ];then 代码2 elif [ 判断表达式3 ];then 代…

【数据结构】双向带头循环链表的实现

前言&#xff1a;在前面我们学习了顺序表、单向链表&#xff0c;今天我们在单链表的基础上进一步来模拟实现一个带头双向链表。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的…

USB -- STM32F103复合设备(HID+MassStorage)传输讲解(十)

目录 链接快速定位 前沿 1 描述符讲解 1.1 设备描述符 1.2 配置描述符 1.3 接口描述符 1.4 功能描述符 1.5 端点描述符 1.6 字符串描述符 1.7 报告描述符 2 运行演示 链接快速定位 USB -- 初识USB协议&#xff08;一&#xff09; 源码下载请参考链接&#xff1a;…

修改字符串(c++题解)

题目描述 给你一个长度为 的字符串 &#xff0c;由大写和小写英文字母组成。 对字符串 进行 次修改。由两个整数和一个字符组成的元组 表示 -th 修改 &#xff0c;如下所示。 如果是&#xff0c;则将的个字符改为。如果是 &#xff0c;将 中的所有大写字母转换为小写字…

java中PhantomReference WeakReference SoftReference垃圾回收触发时机以及使用场景

java 中对象引用一般引用分为四种情况 强引用 即我们平常创建的对象 Object obj new Object() 垃圾回收触发时机 在没设置 jvm 参数 -XX:PretenureSizeThreshold 和 -XX:MaxTenuringThreshold 的情况下 -XX:PretenureSizeThreshold 的值为 0&#xff0c;即未设置大对象直接…

三巨头对决:深入了解pnpm、yarn与npm

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 三巨头对决&#xff1a;深入了解pnpm、yarn与npm 前言包管理器简介npm&#xff08;Node Package Manager&#xff09;&#xff1a;Yarn&#xff1a;pnpm&#xff08;Performant Npm&#xff09;&#…

Linux 服务器安全策略技巧:使用数字证书进行认证

什么是数字证书? 数字证书是一种用于验证和加密网络通信的安全工具。它是由认证机构(CA)颁发的一种电子文件,用于证明某个实体的身份。数字证书包含了实体的公钥和其他相关信息,可以用于验证实体的身份和确保通信的机密性。 为什么使用数字证书进行认证? 在Linux服务器…

基于Mapify的在线艺术地图设计

地图是传递空间信息的有效载体&#xff0c;更加美观、生动的地图产品也是我们追求目标。 那么&#xff0c;我们如何才能制出如下图所示这样一幅艺术性较高的地图呢&#xff1f;今天我们来一探究竟吧&#xff01; 按照惯例&#xff0c;现将网址给出&#xff1a; https://www.m…

微信小程序实现一个天气预报应用程序

微信小程序实现一个天气预报应用程序 第一步创建一个项目第二步项目目录下找到 pages/index/index.wxml 文件第三步在 pages/index/index.wxss 文件中写入样式第四步在 pages/index/index.js 文件中添加以下代码项目简介 第一步创建一个项目 第二步项目目录下找到 pages/index…

在 Python 中编写循环Loops的艺术

在 Python 中编写循环Loops的艺术(The Art of Writing Loops in Python) 文章目录 在 Python 中编写循环Loops的艺术(The Art of Writing Loops in Python)一次获取索引Indexes和值Values通过 Product 函数避免嵌套循环Nested Loops使用 Itertools 模块编写花式循环进行无限循环…

SpringBoot知识

1、Spring和SpringBoot对比 2、版本调整 &#xff08;1&#xff09;先排除是否是JDK与SpringBoot的版本不一致导致的&#xff1a;如JDK1.8和SpringBoot3.1.5冲突&#xff1b; &#xff08;2&#xff09;调整编译版本 &#xff08;3&#xff09;调整maven的jdk &#xff08;4&…

Vscode运行调试文件

文章目录 vscode调试运行流程vscode 执行报错settings.json成功截图 vscode调试运行流程 vscode左侧菜单栏点击运行调试icon&#xff0c;点击菜单右侧栏运行和调试按钮&#xff0c;选择node调试器&#xff0c;js文件行数左边点击添加红色断点&#xff0c;运行当前文件 vscode…

【docker实战】01 Linux上docker的安装

Docker CE是免费的Docker产品的新名称&#xff0c;Docker CE包含了完整的Docker平台&#xff0c;非常适合开发人员和运维团队构建容器APP。 Ubuntu 14.04/16.04&#xff08;使用 apt-get 进行安装&#xff09; # step 1: 安装必要的一些系统工具 sudo apt-get update sudo ap…

湘潭大学-2023年下学期-c语言-作业0x0a-综合1

A 求最小公倍数 #include<stdio.h>int gcd(int a,int b) {return b>0?gcd(b,a%b):a; }int main() {int a,b;while(~scanf("%d%d",&a,&b)){if(a0&&b0) break;printf("%d\n",a*b/gcd(a,b));}return 0; }记住最大公约数的函数&…

gitee上的vue大屏项目

在 Gitee 上,有几个值得注意的 Vue 大屏项目:vue-big-screen-plugin (Gitee): 这是一个基于 Vue3、Typescript、DataV 和 ECharts5 框架的可视化大屏项目。它使用 .vue 和 .tsx 文件构建界面,并采用新版动态屏幕适配方案。这个项目支持数据的动态刷新渲染,内部的 DataV 和 …

linux 网络系统管理 技能大赛 mail赛题配置

比赛 Postfix sdskill.org 的邮件发送服务器 支持smtps(465)协议连接&#xff0c;使用Rserver颁发的证书,证书路径/CA/cacert.pem; 创建邮箱账户“user1~user99”&#xff08;共99个用户&#xff09;&#xff0c;密码为Chinaskill20! Dovecot sdskill.org 的邮件接收服务…

如何编写一个javaAgent jar工具包超详细教程

介绍 Java Agent技术 Java Agent技术是JDK提供的用来编写Java工具的技术&#xff0c;使用这种技术生成一种特殊的jar包&#xff0c;这种jar包可以让Java程序 运行其中的代码。 Java Agent技术的两种模式 Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码…