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

指纹模块开发

一、规范原由

指纹功能在sdk实现,此规范一是方便兼容不同的指纹模块,二是帮助新人快速上手指纹功能。

二、相关接口

2.1.指纹功能接口

目前底层主要提供7个接口供上层使用,其具体实现原理根据代码流图就能直接实现这里不做过多解释,这里主要对以后指纹模块接口设计规范进行讲解。

int ebsw_set_fingerprint_onoff(int onoff); //打开串口
int ebsw_set_fingerprint_info(); //生成特征文件
int ebsw_set_fingerprint_info_to_device(int PageNum); //合并特征文件存flash库
int ebsw_get_fingerprint_compare_result(); //搜索指纹库
int ebsw_delete_all_fingerprint(); //清空指纹库
int ebsw_delete_fingerprint_user_id(int PageNum ); //删除指定id的指
int ebsw_get_fingerprint_model(); //获取指纹模块供应商

目前使用的两款指纹模块都是同一家芯片,上述接口的操作指令相同,所以一供、二供共用上述接口。具体的调用逻辑由上层实现,我们只需要提供相关的接口给到上层。

2.1.1.指纹录入功能

指纹的录入流程 = 获取图像生成特征文件 *3 + 合并特征文件存flash * 1

底层需要实现的接口:

获取图像生成特征的接口ebsw_set_fingerprint_info()函数。

合并特征存flash的接口ebsw_set_fingerprint_info_to_device(int PageNum)函数。

2.1.2.指纹识别功能

底层需要实现的接口

获取当前指纹特征,搜索指纹库ebsw_get_fingerprint_compare_result()函数。

2.1.3.供应商区分

跟2家供应商确认到,可以通过发送指令代码:16H,再通过返回数据包中的指纹库大小,产品型号,厂家名称字段进行区分。

以两家模块的产品型号ProductSN进行区分

char ProductSN_1[8] = {0x41,0x4D,0x31,0x36,0x30,0x00,0x00,0x00}; //一供ProductSN码 char ProductSN_2[8] = {0x4D,0x52,0x44,0x30,0x32,0x36,0x41,0x20}; //二供ProductSN码 /** * @brief 判断模组是一供还是二供 */ int ebsw_get_fingerprint_model() { ALOGE("ebsw_get_fingerprint_model\r\n"); int fd_sn = 0,model = 0; fd_sn = open(MODULW_EQUIPMENT, O_RDWR | O_NOCTTY); if (fd_sn == -1) { ALOGE("ebsw_get_fingerprint_model: Unable to open port\n"); close(fd_sn); return -1; } int ret = instruction_call_function(fd_sn,PS_GETVERSION); if(ret>0){ ALOGE("PS_GETVERSION failure ret = %d\n",ret); } ALOGE("ProductSN = %s\n",ProductSN); if(!strncmp(ProductSN,ProductSN_1,8)){ ALOGE("ProductSN_1\r\n"); model = 1; } else if(!strncmp(ProductSN,ProductSN_2,8)){ ALOGE("ProductSN_2\r\n"); model = 2; } else{ ALOGE("No fingerprint sensor\r\n"); } close(fd_sn); return model; }

2.2.指纹升级接口

int ebsw_get_fingerprint_ic_version(); //获取指纹ic固件版本 int ebsw_get_fingerprint_firmware_version(); //获取升级路径固件版本 int fingerprint_upgrade_judge(); //判断是否升级 int ebsw_set_fingerprint_firmware_upgrade(); //指纹固件烧录 int ebsw_clean_fingerprint_firmware(); //擦除指纹固件

目前二供的指纹模块是不支持升级的,是否投入使用正在评估。

三、接口开发注意事项

3.1.功能接口

  • 指纹开发前需要仔细阅读供应商提供的开发文档,尤其是指纹的注册、识别流程,需要严格按照文档描述的流程,如果需要修改流程,应提前于供应商沟通确认,防止后续出现问题,供应商以流程不规范为理由。

  • 上层在调用接口时,需要严格互斥,避免指纹录入的线程和指纹识别的线程同时在跑。

  • 打开的文件描述符使用完一定要关闭,避免只开不关,文件描述符超出限制导致系统崩溃。

3.2.升级接口

在一个新模块升级接口开发前,需要和供应商确认一下内容:

  • 固件升级升挂掉以后是否还能再升级。

  • 升级出现异常,模块是否会还原成之前的固件,模块是否还能正常使用。

  • 是否支持安卓下升级功能,如果支持需要提供升级的流程文档和相关demo

四、测试与调试规范

4.1.接口测试

在测试APK中封装了对应接口的按钮,可以按照上层调用顺序依次点击按钮,测试指纹录入、指纹识别、指纹删除等功能是否正常。

4.2.调试手法

当出现问题时,需要测试部提供问题出现时的log,查找log中"lt2101"相关的字段,也可以通过指令"logcat|grep -iE lt2101"抓取相关的打印。打印如下:

行 852: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = EF 行 853: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = 01 行 854: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = FF 行 855: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = FF 行 856: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = FF 行 857: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = FF 行 858: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = 01 行 859: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = 00 行 860: 03-17 06:39:35.292 521 521 D lt2101 : send_data[i] = 08 行 861: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 04 行 862: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 01 行 863: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 00 行 864: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 00 行 865: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 00 行 866: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 64 行 867: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 00 行 868: 03-17 06:39:35.293 521 521 D lt2101 : send_data[i] = 72 行 869: 03-17 06:39:35.402 521 521 D lt2101 : Received 1 bytes: EF 行 870: 03-17 06:39:35.402 521 521 D lt2101 : Received 1 bytes: 01 行 871: 03-17 06:39:35.402 521 521 D lt2101 : Received 1 bytes: FF 行 872: 03-17 06:39:35.403 521 521 D lt2101 : Received 1 bytes: FF 行 873: 03-17 06:39:35.403 521 521 D lt2101 : Received 1 bytes: FF 行 874: 03-17 06:39:35.403 521 521 D lt2101 : Received 1 bytes: FF 行 875: 03-17 06:39:35.403 521 521 D lt2101 : Received 1 bytes: 07 行 876: 03-17 06:39:35.403 521 521 D lt2101 : Received 1 bytes: 00 行 877: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 07 行 878: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 09 //09代表flash无当前指纹,进入录入流程 行 879: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 00 行 880: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 00 行 881: 03-17 06:39:35.404 521 521 E lt2101 : Fingerprint save PageNum = 0 行 883: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 00 行 884: 03-17 06:39:35.404 521 521 D lt2101 : Received 1 bytes: 00 行 885: 03-17 06:39:35.405 521 521 D lt2101 : Received 1 bytes: 00 行 886: 03-17 06:39:35.405 521 521 D lt2101 : Received 1 bytes: 17 行 887: 03-17 06:39:35.405 521 521 D lt2101 : Fingerprint all_read = 16 行 888: 03-17 06:39:35.405 521 521 D lt2101 : Fingerprint result_buff = 09 行 889: 03-17 06:39:35.405 521 521 E lt2101 : No prints found.

从上述打印,我们可以很直观的通过串口的收发数据流排查问题。

http://www.jsqmd.com/news/466455/

相关文章:

  • 【c++与Linux进阶】轻量化进程与虚拟地址和页表
  • OpenClaw飞书官方插件安装教程
  • MySQL迁移中的时序数据处理优化实践观察
  • 2026物流AI推荐 | 小沓AI携手诺捷,国内物流AI再提速!
  • 如何高效解决 Java 内存泄漏问题方法论
  • HXJK-5000一体化监控系统视频监控杆:无电源林区防火的智能防线
  • WSL 启动时报错“wsl: Failed to start the systemd user session”的解决方法
  • 【蒸汽求职干货】北美求职深度剖析:DA与BA抉择及BMO数据岗实战指南
  • Datadog如何将其Agent Go二进制文件的大小减少77%
  • 注意力涣散是什么?ADHD注意力缺陷与多动症行为疗法的关键是什么?
  • 7.7实时内核调试支持
  • 云平台构建 RDMA高性能网络
  • 26版无菌附录|无菌药品高效过滤器检漏:条款解读+实操指南
  • Openclaw 龙虾卸载指南
  • 医药AIGC实战指南:AI疾病筛查助力药企实现精准患者挖掘与转化
  • 告别爬虫 openclaw 使用 Tushare 获取 A股市 美股 行情信息 历史数据 财务信息
  • 西门子1500 PLC立体仓库项目解析:智能仓储的实际应用
  • 算法杂记内容
  • 储能充放电状态约束
  • 2026年防火涂料用珍珠岩优质供应商推荐榜:珠光砂、闭孔珍珠岩、防火涂料用珍珠岩、防火门芯板、食品添加剂珍珠岩选择指南 - 优质品牌商家
  • 浏览器唤起支付宝打开特定地址
  • OpenClaw截至2026年3月11日,主流服务商与收费模式如下:
  • 爬虫学习阶段三:动态网页爬取(完整学习文档)
  • 十大品牌净水器排名,2026家用大型净水器全场景选购攻略 - 速递信息
  • Matlab人脸识别:PCA算法在Yale数据库中的应用及使用说明
  • Homebrew 详解:Mac 必备包管理工具及常用命令大全
  • 教程:自托管 OpenClaw 实现全离线任务自动化
  • 一文吃透动态规划:通用解题框架 + 实战案例
  • Flutter 三方库 sparky 的鸿蒙化适配指南 - 实现极简 2D 游戏引擎功能、支持高效精灵图渲染与跨端游戏逻辑
  • 大厂集体“养龙虾”!IT人再不进化就真的晚了!