从录入到识别:智能门禁里 AS608 指纹模块的完整工作流程

发布时间:2026/9/24 15:46:31

从录入到识别:智能门禁里 AS608 指纹模块的完整工作流程 从录入到识别智能门禁里 AS608 指纹模块的完整工作流程本文基于 B11 智能门禁实验整理硬件平台 STM32L431VCT6 Huawei LiteOS指纹模块为正点原子 ATK-AS608AS60x 系列串口速率 57600LPUART1。代码文件Hardware/AS_608/handle.c、Hardware/AS_608/as_608.c。项目背景门禁系统除了按键、红外之外还集成了指纹识别录入把一枚手指登记进指纹库分配一个 ID和识别按下手指从指纹库里找到匹配的 ID成功则开门。这两个动作背后其实是 AS608 模块的一条条串口指令在来回应答。AS608 是串口指令式指纹模块主机发一包 16 进制指令如取图像“生成特征”模块执行后回一包应答应答里带一个确认字00H 表示成功其他值表示各种失败原因。理解了这一点整个指纹流程就变成了一张指令状态图。指令包与应答包指令包EF 01 | 芯片地址(4B) | 包标识 01H | 包长度(2B) | 指令码 | 参数 | 校验和(2B)其中包长度 指令码 1 字节 参数长度 校验和 2 字节。应答包包标识为 07H确认字在数据区第 10 字节代码里 data[9]00H 表示执行成功。工程里组包发送和等应答各封装成一个函数C复制static void SendMessageDate_v2(u8 flag, u8 cmd, u8* data, short datalen); // 组包 uart_write 发送static u8 *JudgeStr(u16 waittime); // 等应答包返回 data[9] 确认字所有指令函数都是发指令 → 等应答 → 取确认字三步例如取图像C复制u8 PS_GetImage(void){u8 ensure;u8 *data;SendMessageDate_v2(0x01, 0x01, NULL, 0); // 指令码 01H录入指纹图像data JudgeStr(2000);ensure data ? data[9] : 0xff; // 0xff 超时return ensure;}3. 录入指纹一个五状态的有限状态机录入函数是 Add_FR(u16 id)handle.c 第 232 行起由按键 Key1 触发。它把两次采集 → 校验一致 → 合并 → 存储拆成了 5 个状态用 processnum 驱动状态 动作 指令 成功后的去向case 0 第 1 次采集取图 → 生成特征到 CharBuffer1 PS_GetImage → PS_GenChar(BufferID1) processnum1case 1 第 2 次采集取图 → 生成特征到 CharBuffer2 PS_GetImage → PS_GenChar(BufferID2) processnum2case 2 校验两次特征是否同一手指 PS_Match 一致 → 3不一致 → 回到 0 重来case 3 合并两个缓冲区的特征生成模板 PS_RegModel processnum4case 4 把模板存到指定 ID PS_StoreChar(BufferID2, id) 返回 0录入成功以第 1 次采集为例对应实验指导书流程图的录入指纹流程左列C复制case 0:i;printf(“请开始录入指纹\r\n”); // 提示按手指ensure PS_GetImage(); // 步骤2发送取图像指令等待应答if (ensure 0x00) // 步骤3读取到图像{ensure PS_GenChar(CharBuffer1); // 步骤4生成特征BufferID1if (ensure 0x00) // 步骤5OK{printf(“指纹正确\r\n”);i 0;processnum 1; // 进入第 2 次采集}elseShowErrMessage(ensure); // 特征生成失败返回重试}elseShowErrMessage(ensure); // 没读到图像返回重试break;两次特征必须分别放进 CharBuffer1 和 CharBuffer2PS_Match 校验通过后 PS_RegModel 才能把两者合并成模板最后存储C复制case 4:ensure PS_StoreChar(CharBuffer2, id); // 存储模板到指纹库 id 号if (ensure 0x00){printf(“录入指纹成功, 指纹号 %d!!!\r\n”, id);PS_ValidTempleteNum(ValidN); // 刷新有效模板数return 0;}break;整个录入循环还有一个保护i 在每次采集时自增i 10约 5 次完整尝试仍没成功就自动退出避免一直卡住。刷指纹识别从手指按下到开门识别侧由 AS608_Handle() 主循环handle.c 第 114 行驱动握手 → 读模板数 → 循环检测手指识别成功返回 0 就开门开门超 5 秒自动关门C复制while (1){if (Finger_press() 0) // 刷指纹成功door_open_close_operation(DOOR_OPEN);cur_time HAL_GetTick(); if (cur_time - open_time 5000) // 开门超过 5 秒 if (as608_get_door_status() DOOR_OPEN) door_open_close_operation(DOOR_CLOSED); LOS_TaskDelay(10);}Finger_press()第 197 行先读触摸感应引脚 PC6对应流程图右列的 PS_StaIO连续 3 次、每次延时 100ms 消抖确认按下后调用 press_FR()C复制u8 press_FR(void) // 刷指纹核心handle.c 第 357 行{SearchResult seach;u8 ensure;ensure PS_GetImage(); // 取图像 if (ensure 0x00) { ensure PS_GenChar(CharBuffer1); // 生成特征 if (ensure 0x00) { ensure PS_HighSpeedSearch(CharBuffer1, 0, 300, seach); // 搜索整个指纹库 if (ensure 0x00) // 搜索成功 { printf(Match ID:%d Match score:%d \r\n, seach.pageID, seach.mathscore); return 0; // 返回 0 → 主循环开门 } } } ShowErrMessage(ensure); return ensure;}PS_HighSpeedSearch 的指令码是 1BH参数与手册的 PS_Search04H完全一致BufferID、StartPage0、PageNum300应答会带回命中的 PageID即指纹 ID和匹配得分。
延伸阅读

更多相关文章

2026/9/24 15:41:31

SMBUS实战:bq4050地址解析与硬件I2C库避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 16:56:36

WebBatchRequest 安装、使用教程

小记: ****进行子域名信息收集 发现了1k域名 这么多我可不会一个一个去请求吧 这太浪费时间了 所以就去找了这个工具**** 介绍: WebBatchRequest(Web批量请求器)是一款**轻量级的批量 HTTP 请求工具**,主要用于安全…

2026/9/24 16:56:36

go-errors/errors:为 Go 错误注入完整调用栈追踪的实战指南

人工智能AI AgentAgent 沙箱云原生容器运行时零信任 【免费下载链接】substrate Agent Substrate: the core system 项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate 点击查看 免费下载 导读 在 Go 服务中,error 是传递失败信息的…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码