FPM系列指纹模块通信协议
- 格式:pdf
- 大小:406.02 KB
- 文档页数:19
指纹模块原理图
很抱歉,由于我是一个文本AI助手,无法提供原始图像或图表。
但是,我可以为您提供指纹模块的工作原理的文字说明。
指纹模块主要包含以下几个关键部分:
1. 指纹传感器:指纹传感器通过感应手指指纹区域的细节和特征,将其转化为数字信号。
传感器上通常覆盖着一层光学窗口或薄膜,用于接触和采集手指指纹。
2. 光源:指纹模块中通常会使用光源来照亮手指表面,以便传感器能够清晰地捕捉到手指指纹的细节。
常用的光源包括LED(发光二极管)或激光二极管。
3. 光学镜头:光学镜头的主要作用是将手指表面的指纹图案聚焦到传感器上,以提高图像的清晰度和质量。
4. 模拟-数字转换(ADC):传感器中采集到的模拟信号会经过模拟-数字转换芯片进行转换,将其转换为数字信号。
这些数字信号可以更方便地进行处理和存储。
5. 指纹识别算法:指纹模块中通常会包含指纹识别算法,用于对采集到的指纹图像进行特征提取和比对。
通过与注册的指纹特征进行比对,可以确定手指是否匹配,从而实现指纹识别功能。
指纹模块的工作原理是通过以上部分的协同工作来实现的。
当手指触碰到指纹传感器表面时,光源会照亮手指,光学镜头将
手指表面的指纹图案聚焦到传感器上。
传感器将采集到的指纹图像转换为数字信号后,指纹识别算法会对这些信号进行处理和比对,从而确定手指的指纹特征,并将结果输出。
通过这一过程,指纹模块能够实现对手指的指纹进行采集、识别和验证等功能,广泛应用于手机、平板电脑、门禁系统等领域。
准备实验需要的设备。
硬件: 试验箱、电源线、串口线、网线、指纹扫描模块、PC机一台。
一.软件: 虚拟机、超级终端、FTP软件。
二.连线方式将指纹识别模块安装在经典2410DVP试验箱的168扩展槽中。
三.实验原理指纹模块是面向广阔的锁具市场、保险箱(柜)、安防及工控市场, 推出的。
她是由32位高性能可编程处理器、活体指纹采集芯片和指纹识别核心固件等构成的一个独立的嵌入式指纹识别系统。
本指纹模块具有200枚以上指纹存储能力, 可扩展到上千枚, 具备1秒以内的指纹比对性能, 支持1: 1和1: N两种比对模式, 能够任意兼容各类指纹传感芯片, 允许客户内置应用程序, 减化应用方案, 节省开发成本。
本模块可提供全面的ODM定制服务, 时时刻刻、轻轻松满足您的个性化指纹产品需求。
功能用途指纹模块是嵌入式指纹产品的核心。
她面向锁具、安防和工控企业, 为他们提供一个“快速应用指纹技术”的硬件平台。
在这个平台上, 企业只需专注于原有产品, 无须关注指纹传感器的接入、指纹注册比对等远离其核心价值的技术, 从而在不增加研发成本的同时提升原有产品的应用价值。
指纹模块功能:活体指纹识别脱机指纹注册(250枚)脱机指纹比对(1: 1.1: N)可内置应用程序(固件)可接入任意指纹传感器件(光学、半导体电容、半导体温感、半导体压感、按压式、滑动式)丰富的接口支持(32位GPIO、SPI、UART、I2C.RF)指纹模块应用范围:指纹门锁指纹保险柜(箱)指纹文件柜指纹工控设备指纹遥控器指纹通关设备指纹POS机指纹IC卡读卡器指纹数码产品指纹电气开关等技术规格指纹模块一般参数:注: 指纹采集传感器选择请参考附录1。
模块优势可编程直接在模块的主控MCU中写入应用程序兼容性强能够兼容全球各种指纹传感芯片(光感、电容、电感、温感、压感, 滑动式和按压式)(用户可指定)指纹容量大片内可存储250枚以上指纹, 支持片外扩展注册比对性能优越指纹算法经过多年商用, 嵌入式环境下FAR、FRR性能优良服务好提供24小时技术支持和全面的ODM定制服务(只需提供规格书)四、程序分析根据如上提供的指纹操作API, 在linux开发环境下编写程序实现对指纹模块的完整操作。
指纹模块介绍范文指纹模块是一种生物特征识别技术设备,通过分析和识别人体指纹的纹理、特征以及形状等信息,用于进行身份验证和识别。
它通常由指纹传感器、算法处理器和通信模块等部分组成。
指纹模块广泛用于安全门禁系统、智能手机、平板电脑、电脑、金融支付等场景。
指纹模块采集人体指纹图像,然后通过算法处理器进行特征提取和匹配,最终确认或拒绝对应身份的验证结果。
指纹模块的核心是指纹传感器,传感器内置多个光电阵列,能够高精度捕获指纹的纹理图像,并将其转化为电信号进行数字化处理。
指纹传感器一般采用硅晶片、光学传感器或超声波传感器等技术。
指纹模块的算法处理器通过对指纹图像的细节进行提取和处理,生成特征模板,用于以后的比对和识别。
算法处理器通常由指纹图像增强、特征提取和匹配等过程组成。
通过独特的指纹纹理和特征,指纹模块能够快速、准确地识别和验证用户的身份。
指纹模块具有以下特点:1.高安全性:指纹模块采用生物特征作为验证手段,每个人的指纹纹理和特征都是独一无二的,具有高度的安全性。
2.高准确性:指纹模块能够对指纹进行高精度的采集和处理,能够识别微小的变化和细微的纹理差异,提高了识别的准确性。
3.高速度:指纹模块的识别速度非常快,只需几毫秒的时间就可以完成一次验证,用户可以快速进入门禁区域或者完成支付等操作。
4.高稳定性:指纹模块具有较好的稳定性,不受外界环境变化的干扰,能够在各种复杂的环境条件下准确识别和验证。
5.多场景应用:指纹模块可以广泛应用于不同场景,如家庭、办公室、金融、医疗等领域,适用于安全门禁、设备解锁、支付验证等多种场景。
指纹模块在信息安全和身份验证方面发挥着重要作用。
相比于传统的密码锁和卡片等验证方式,指纹模块具有更高的安全性和便利性。
越来越多的安全门禁系统、智能手机和平板电脑等设备都开始采用指纹模块,提供更安全、快速的身份验证和识别方式。
指纹模块技术的不断创新和发展,使得指纹识别在生活中得到了广泛应用,并且有望在未来发展成为更加成熟和普遍的生物特征识别技术。
FPM的简介:FPM是一种下一代的访问控制匹配工具,这个技术提供了更多的详细的和自定义的包过滤功能。
FPM允许用户去匹配一个包内的任意bit以及可以匹配包内包头或者负载内的任意深度的内容。
FPM允许用户去创建属于自己的无状态的包分类的标准,并且可以为策略定义多种的行为(比如drop,log 或者发送ICMP不可达消息)来立刻过滤新病毒,蠕虫以及网络攻击。
需要注意的是该特性不是所有的IOS都支持。
FPM的局限性:FPM不能缓解网络攻击,因为缓解攻击是需要有状态的数据包分类。
因为FPM是无状态的,所以它不能跟踪由协议控制的自协商的端口号,换句话说,如果需要使用FPM技术,那么必须手工的定义端口号。
FPM不能执行IP包的分片或者TCP流的重组。
FPM检测只对IPv4的单播数据包有效。
FPM不能使用IP选项来对数据包进行分类。
FPM不支持组播数据包的检测。
FPM不支持隧道接口和MPLS接口。
FPM不能配置在FlexWAN接口卡上。
FPM的策略不支持对控制层面的映射。
对于用户来说,FPM技术可以创建一系列的过滤策略,用来及时的检测和过滤新的病毒和网络攻击。
过滤策略需要通过如下的步骤进行定义:1.加载PHDF文件(用来使流量匹配预先定义的协议,如IP,TCP,UDP等)2.定义类型图和协议栈(用来分类需要进行检查的流)3.定义策略(用来针对流做出行为)4.在接口上运用该策略。
PHDF文件:协议头被定义在一个单独的文件内,这个文件我们成为PHDF文件。
我们使用PHDF文件来对数据包的协议进行匹配,PHDF文件通过使用XML语言来定义整个协议的内容,用户也可以通过编写XML语言来定义自己的PHDF文件。
我们在路由器来调用这些文件来跟踪整个数据包。
PHDF文件可以在CISCO网站上找到。
调用PHDF文件的方法:load protocol location:filename例如:Load Protocol flash:/ip.phdfLoad Protocol flash:/tcp.phdf(需要注意的是,如果没有定义PHDF文件的使用,那么在下一步匹配协议头的时候我们只能使用match start命令,而不能使用matc定义Class Map:在FPM技术中依然使用CISCO的MQC语句来对流量进行匹配和过滤。
半导体指纹识别仪DW-FP3-M系列使用说明书型号:DW-FP3-M系列版本:V2.9深圳丽泽智能科技有限公司总机:400-700-6188地址:深圳市龙岗区布吉南湾街道布澜路南侧宝福李朗产业园C区7B楼网站:重要声明未经本公司书面许可,不得复制或抄袭传播本手册的任何部分;产品请以实物为准,说明书仅供参考。
产品实时更新,如有升级不再另行通知。
最新程序及补充说明文档敬请与公司客服部联系。
产品说明中有疑问或争议的,以公司最终解释为准使用过程指纹模块人为被刮花或损坏一概由用户负责。
警示:安装使用时必须保持传感器表面干净清洁,防止砂石、粉尘颗粒及其它硬物致使传感器损伤导致传感器失效!(此类损坏不属于保修范围)。
如有污迹可用脱脂棉花擦拭清洁。
版权所有,保留所有权利指纹仪有完善的用户权限管理。
但为了避免拥有管理权限的用户不在场,而客户又急需设置本系统,本系统特设了一个复位密码。
拥有复位密码的人可以进入系统将设备恢复到出厂时的设置。
特别注意事项:1、出厂时所有的指纹仪的复位密码均为888888888,客户在成功安装后,正式使用前,需自行修改此复位密码。
复位密码的长度为6~9位。
2、复位密码是在客户不得已的情况下才使用的。
若使用复位密码恢复出厂设置,则该系统中原有的用户数据将全部丢失,参数设置也将恢复成出厂时的设置。
需重新登记用户才可使用。
3、若遗忘了复位密码则只能回厂重新更新为缺省密码,但所有的数据将全部丢失。
*注:这里所说的脱机使用是指通电后在指纹处理器上即可完成用户数据的登记与存储、系统信息的查询与设置、指纹数据的验证、日志信息的记录与存储、提示信息的显示等,这些工作不需要与PC联网就能完成.处理器输出维根信号,配合维根控制器可控制门锁的开合。
1概述 (1)1.1指纹门禁系统构成 (1)1.2指纹仪接线说明 (1)1.3名词解释 (2)2功能概述 (3)2.1系统复位功能 (3)2.2设备管理功能 (3)2.2.1用户管理 (3)2.2.1.1注册新用户 (4)2.2.1.2修改用户 (4)2.2.1.3删除用户 (4)2.2.1.4查看用户信息 (4)2.2.1.5查看用户容量 (4)2.2.2系统日志 (4)2.2.3系统参数 (5)2.2.3.1系统时段 (5)2.2.3.2日期时间 (5)2.2.3.3按键声音 (5)2.2.3.4亮度调节 (5)2.2.3.5屏保功能 (5)2.2.3.6门铃功能 (6)2.2.3.7服务端口 (6)2.2.3.8验证提示 (6)2.2.3.9语音音量 (6)2.2.3.10用户信息显示 (6)2.2.3.11系统重启 (6)2.2.4安全设置 (6)2.2.4.1刷卡功能 (6)2.2.4.2验证模式 (6)2.2.4.3安全等级 (7)2.2.4.4报警韦根 (7)2.2.4.5断线检测 (7)2.2.4.7韦根区域码开/关和韦根区域码 (7)2.2.4.8韦根重试 (7)2.2.5通信设置 (7)2.3开门验证功能 (8)2.3.1开门方式 (8)2.3.1.1指纹开门 (8)2.3.1.2指纹或密码开门 (8)2.3.1.3指纹+密码开门 (8)2.3.1.4指纹或密码或刷卡开门 (8)2.3.1.5指纹+刷卡开门 (8)2.3.1.6指纹或(卡加密码)开门 (8)2.4日志功能 (8)2.4.1验证日志(最多432000条) (8)2.4.2系统操作日志(最多30000条) (8)3功能特性 (9)3.1功能模块一:指纹仪模块 (9)4操作说明 (9)4.1传感器的使用 (9)4.2设备版本查询 (10)4.3待机状态 (10)4.4空机状态下的超管登记 (11)4.5管理员进入管理菜单 (14)4.6恢复出厂设置功能 (15)4.6.1复位指纹模块 (15)4.6.2重启系统 (16)4.6.3修改复位密码 (16)4.6.4恢复出厂状态 (16)4.7设备管理 (17)4.7.1用户管理菜单 (17)4.7.1.1注册新用户 (17)4.7.1.2修改用户信息 (18)4.7.1.3删除用户 (19)4.7.1.4查看用户信息 (19)4.7.1.5查询用户容量 (20)4.7.2日志查询菜单 (20)4.7.3安全设置菜单 (22)4.7.3.1刷卡功能 (22)4.7.3.2验证模式 (23)4.7.3.3安全等级 (23)4.7.3.4报警韦根 (24)4.7.3.5断线检测 (24)4.7.3.6韦根输出方式 (24)4.7.3.7韦根区域码开关 (24)4.7.3.8韦根区域码 (24)4.7.3.9韦根重试 (25)4.7.4通信设置 (25)4.7.5系统参数菜单 (26)4.7.5.1系统时段 (26)4.7.5.2日期时间 (27)4.7.5.3按键声音 (27)4.7.5.4屏幕亮度调节 (27)4.7.5.5屏保亮度调节 (27)4.7.5.6屏保功能 (28)4.7.5.7门铃功能 (28)4.7.5.8服务端口 (28)4.7.5.9验证提示 (29)4.7.5.10语音音量 (29)4.7.5.11用户信息显示 (29)4.7.5.12系统运行信息 (30)4.7.5.13系统重启 (30)4.8使用指纹进行开门验证 (30)4.9使用密码进行开门验证 (32)5安装说明...................................................................................错误!未定义书签。
指纹模块分类-回复什么是指纹模块?指纹模块,也称为指纹识别模块,是一种使用生物特征技术来识别个体身份的装置。
指纹模块采用指纹传感器和图像处理技术,通过对指纹图像的扫描与比对,实现对个体身份的确认。
它被广泛应用于安全门禁、智能手机、电脑登录、银行金库等场合,取代了传统的密码和钥匙,提供了更加便捷和安全的身份验证方式。
指纹模块的分类主要有以下几种:1. 触控式指纹模块:触控式指纹模块是指通过用户的手指直接触摸指纹传感器来采集指纹图像。
这种模块使用静电感应技术或光电技术来感知指纹的模式和细节。
触控式指纹模块最常用于移动设备中,如智能手机和平板电脑,提供了便捷的指纹解锁和支付功能。
2. 非触控式指纹模块:非触控式指纹模块是通过用户将手指放在传感器上方,无需直接接触传感器即可采集指纹图像。
这种模块通常使用光学和超声波技术来捕捉指纹的细节,具有更高的采集速度和准确度。
非触控式指纹模块常用于门禁和安全监控系统中,提供了高效的识别和验证功能。
3. 二合一指纹模块:二合一指纹模块是指同时具备触控式和非触控式指纹识别功能的模块。
这种模块结合了两种技术的优点,能够适应不同的应用场景和用户需求。
二合一指纹模块常用于金库存取、重要文件保管和高端安防系统中,提供了多重验证和防护措施。
4. 指纹模块芯片:指纹模块芯片是指将指纹传感器和图像处理器集成在一个封装中的集成电路。
这种模块芯片具有更小的尺寸和低功耗的特点,广泛应用于各种小型电子设备中。
指纹模块芯片不仅具备指纹识别功能,还可以与其他传感器和处理器进行数据交互,实现更多的智能化和功能扩展。
除了以上分类,还有其他一些指纹模块的衍生产品,如指纹锁、指纹门铃等。
这些产品使用了指纹模块的识别技术,通过对指纹信息的比对和验证,实现了智能门禁和个性化设定等功能。
总结起来,指纹模块主要分为触控式、非触控式、二合一和芯片等几种类型。
每种类型都有其特定的应用场景和优势,选择适合的指纹模块可以提供更加安全、便捷和智能的身份验证体验。
10A光学指纹模块简要使用说明
.引脚
10A使用1.0MM 上接插座引出了个引脚,在板子上有标的位置为第一引脚。
五个引脚的作用依次为:
为电源的正极接–的电压均可。
为电源的负极接地。
为串口的发送。
为串口的接收。
为悬空不需要使用。
.串口
10A使用标准的串口与外界通信,默认的波特率为,可以进行更改,请参考通信协议。
可以与任何单片机,,等带串口的设备进行连接,请注意电平转换,连接电脑需要进行电平转换,比如电路。
的单片机可以直接连接。
.关于模块的检测
模块成功上电后,指纹采集窗口会闪一下,表示自检正常,如果不闪,请仔细检查电源,是否接反,接错等。
.指纹模块的温度
指纹模块使用的全速工作,工作时芯片有一些热,经过严格的测试,这是没有问题的可以放心使用,在不使用的时候可以关闭电源,以降低功耗。
1 / 1。
海凌科指纹模块编程代码【最新版】目录1.海凌科指纹模块编程代码概述2.海凌科指纹模块编程代码结构3.海凌科指纹模块编程代码实现功能4.海凌科指纹模块编程代码应用场景5.海凌科指纹模块编程代码的优点与不足正文一、海凌科指纹模块编程代码概述海凌科指纹模块编程代码是一种基于海凌科指纹识别技术的编程代码,可用于开发各种指纹识别应用,如门禁系统、手机解锁、金融支付等。
通过使用海凌科指纹模块编程代码,开发者可以实现指纹识别功能,为用户带来便捷、安全的体验。
二、海凌科指纹模块编程代码结构海凌科指纹模块编程代码主要包括以下几个部分:1.指纹识别模块:负责读取指纹信息,并将其转换为可识别的数字信号。
2.数据处理模块:负责对指纹信号进行处理,提取特征点,并将其与已存储的指纹特征进行对比。
3.通信接口模块:负责与外部设备进行通信,如与主控制器进行数据交互。
4.密码验证模块:在指纹识别失败时,提供备用的密码验证功能。
三、海凌科指纹模块编程代码实现功能海凌科指纹模块编程代码可实现以下功能:1.指纹识别:通过指纹识别模块读取用户指纹,并将其转换为数字信号,用于后续处理。
2.指纹匹配:数据处理模块负责对指纹信号进行处理,提取特征点,并将其与已存储的指纹特征进行对比,以判断用户身份。
3.通信交互:通过通信接口模块与外部设备进行数据交互,如与主控制器进行数据传输。
4.密码验证:在指纹识别失败时,可通过密码验证模块提供备用的身份验证功能。
四、海凌科指纹模块编程代码应用场景海凌科指纹模块编程代码可应用于以下场景:1.门禁系统:通过指纹识别技术,实现对建筑物或房间的出入管理。
2.手机解锁:将指纹识别功能集成到手机中,实现快速、安全的手机解锁。
3.金融支付:通过指纹识别技术,实现对金融账户的便捷、安全管理。
五、海凌科指纹模块编程代码的优点与不足优点:1.安全性高:指纹识别技术具有较高的识别准确率,可有效防止伪造和冒用。
2.便捷性强:用户无需携带钥匙、卡片等物品,只需通过指纹即可实现身份验证。
基于STM32单片机开发光学指纹识别模块(FPM10A)全教程收藏人:共同成长8882014-05-08 | 阅:25 转:0 | 来源 | 分享基于STM32单片机开发光学指纹识别模块(FPM10A)全教程1.平台首先我使用的是奋斗STM32开发板 MINI板光学指纹识别模块(FPM10A)2.购买指纹模块,可以获得三份资料1.简要使用说明2.使用指纹模块的功能函数3.FPM10A用户手册.3.硬件搭建根据使用说明:FPM 10A使用标准的串口与外界通信,默认的波特率为57600,可以与任何单片机,ARM,DSP等带串口的设备进行连接,请注意电平转换,连接电脑需要进行电平转换,比如MAX232电路。
FPM10A光学指纹模块共有5个管脚1 为 VCC 电源的正极接 3.6V – 5.5V的电压均可。
2 为 GND 电源的负极接地。
3 为 TXD 串口的发送。
4 为 RXD 串口的接收。
5 为 NC 悬空不需要使用。
奋斗板上已经有5V的管脚,可以直接供给指纹模块,这里需要注意的是,指纹模块主要通过串口进行控制,模块和STM32单片机连接的时候,需要进行电平转换,这样只要把这个转接板插入STM32,接上5V的电,就可以工作了,将模块的发送端接转接板的接收端,接收端接转接板的发送端。
这样,我们的硬件平台就搭建好了!4.模块的测试工作模块成功上电后,指纹采集窗口会闪一下,表示自检正常,如果不闪,请仔细检查电源,是否接反,接错等。
指纹模块使用120MHZ的DSP全速工作,工作时芯片有一些热,经过严格的测试,这是没有问题的可以放心使用,在不使用的时候可以关闭电源,以降低功耗。
5.现在我们要进入编程环节了指纹模块主要是通过串口进行控制,所以这里我们需要用到单片机的串口模块。
我们需要用到两个关键函数1.使用串口发送一个字节的数据2.使用串口接收一个字节的数据这里我使用的STM32单片,所以这两个程序如下:view sourceprint?01.// 从 USART1 发送一个字节02.void USART1_SendByte(unsigned char temp)03.{04. USART_SendData(USART1, temp);05. while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);06.}07.08.// 从 USART1 读取一个字节09.unsigned char USART1_ReceivByte()10.{11. unsigned char recev;12. while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);13. recev = USART_ReceiveData(USART1);14. return recev;15.}6.查看FPM10A用户手册我们来实现比对一个指纹(我们这里假设指纹模块中已经存在指纹模板)首先我们需要让指纹模块检测是否有指纹输入(也就是是否有手指放在指纹模块上检测)我们来看手册上给的操作说明:我们需要发送给定的数据包给模块,发送的数据已经给我们了,现在我们参看给我们的C例程view sourceprint?01.//应答包数组02.unsigned char dat[18];03.04.//获得指纹图像05.06.unsigned char FP_Get_Img[6]={0x01,0x00,0x03,0x01,0x0,0x05};07.08.//协议包头09.10.unsigned char FP_Pack_Head[6] ={0xEF,0x01,0xFF,0xFF,0xFF,0xFF};11.12.//FINGERPRINT_获得指纹图像命令13.void FINGERPRINT_Cmd_Get_Img(void)14.{15. unsigned char i;16.17. for(i=0;i<6;i++) //发送包头18. USART1_SendByte(FP_Pack_Head[i]);19.20. for(i=0;i<6;i++) //发送命令 0x1d21. USART1_SendByte(FP_Get_Img[i]);22.23. for(i=0;i<12;i++)//读回应答信息24. dat[i]=USART1_ReceivByte();25.}说明:这个函数就是检测是否有指纹输入的信息,根据用户手册,当确认码返回值为0时,表示成功录入,所以,我们可以有下面的函数:view sourceprint?01.//检测指纹模块录入指纹情况,返回00表示录入成功;02无手指;03录入失败02.unsigned char test_fig()03.{04. unsigned char fig_dat;05. FINGERPRINT_Cmd_Get_Img();06. Delay_ms1(20);07. fig_dat=dat[9];08. return(fig_dat);09.}10.11.因此,我们在主函数中可以这样调用:12.void main13.{14. if(test_fig()==0)15. {16. //do something17. }18.}7.如何录入一个新的指纹信息呢?步骤如下1.获得指纹图像2.检测是否成功的按了指纹3.将图像转换成特征码存放在Buffer1中4.再次获得指纹图像5.将图像转换成特征码存放在Buffer2中6.转换成特征码7.存储到指定地址上同样的,根据用户手册,我们可以得到以下这样的模块:当调用的时候,你只要给这个函数附上两个值就可以了,例如:unsigned char FP_add_new_user(00,01);如果你下次再次写入这个地址,以前存储的指纹模板信息将被覆盖view sourceprint?01.//添加一个新的指纹02.unsigned char FP_add_new_user(unsigned char ucH_user,unsign ed char ucL_user)03.{04. do05. {06. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像07. } while ( dat[9]!=0x0 ); //检测是否成功的按了指纹08.09. FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中10.11. do12. {13. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像14. } while( dat[9]!=0x0 );15.16. FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在Buffer2中18. FINGERPRINT_Cmd_Reg_Model(); //转换成特征码19.20. FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);21.22. return 0;23.}24.25.//存储模版到特定地址26.void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char)27.{28. unsigned long temp = 0;29. unsigned char i;30.31. FP_Save_Finger[5] = ucH_Char;32. FP_Save_Finger[6] = ucL_Char;33.34. for(i=0;i<7;i++) //计算校验和35. temp = temp + FP_Save_Finger[i];36.37. FP_Save_Finger[7]=(temp & 0x00FF00) >> 8; //存放校验数据38. FP_Save_Finger[8]= temp & 0x0000FF;39.40.41. for(i=0;i<6;i++)42. USART1_SendByte(FP_Pack_Head[i]); //发送包头43.44. for(i=0;i<9;i++)45. USART1_SendByte(FP_Save_Finger[i]) ;//发送命令将图像转换成特征码存放CHAR_buffer146.47. for(i=0;i<12;i++)48. dat[i]=USART1_ReceivByte();49.}8.如何删除一个模板?view sourceprint?01.//删除所有指纹模版02.void FINGERPRINT_Cmd_Delete_All_Model(void)03.{04. unsigned char i;06. for(i=0;i<6;i++) //发送包头07. USART1_SendByte(FP_Pack_Head[i]);08.09. for(i=0;i<6;i++) //发送命令 0x1d10. USART1_SendByte(FP_Delet_All_Model[i]);11.12. for(i=0;i<12;i++)//读回应答信息13. dat[i]=USART1_ReceivByte();14.}9.如何获取已经存取的指纹模板信息?这个模块一共可以存储0~999枚指纹信息view sourceprint?01.//搜索全部用户999枚02.void FINGERPRINT_Cmd_Search_Finger(void)03.{04. unsigned char i;05. //发送命令搜索指纹库06. for(i=0;i<6;i++)07. {08. USART1_SendByte(FP_Pack_Head[i]);09. }10.11. for(i=0;i<11;i++)12. {13. USART1_SendByte(FP_Search[i]);14. }15.16. for(i=0;i<16;i++)17. {18. dat[i]=USART1_ReceivByte();19. }20.}根据用户手册,我们可以从应答包中得出模块中已经存在指纹数量的大小这样,我们就轻松把指纹模块搞定!下面我附上基于STM32单片机光学指纹识别模块(FPM10A)打包好的函数库第一个是 FPM10A.cview sourceprint?001.#include "stm32f10x.h"002.#include "stm32f10x_usart.h"003.#include "misc.h"004.unsigned char dat[18];005.006.//FINGERPRINT通信协议定义007.unsigned char FP_Pack_Head[6] ={0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; //协议包头008.unsigned char FP_Get_Img[6] ={0x01,0x00,0x03,0x01,0x0,0x05}; //获得指纹图像009.unsigned char FP_Templete_Num[6]={0x01,0x00,0x03,0x1D,0x00,0x21 }; //获得模版总数010.unsigned char FP_Search[11]={0x01,0x0,0x08,0x04,0x01,0x0,0 x0,0x03,0xA1,0x0,0xB2}; //搜索指纹搜索范围0 - 929011.unsigned char FP_Search_0_9[11]={0x01,0x0,0x08,0x04,0x01,0 x0,0x0,0x0,0x13,0x0,0x21};//搜索0-9号指纹012.unsigned char FP_Img_To_Buffer1[7]={0x01,0x0,0x04,0x02,0x0 1,0x0,0x08}; //将图像放入到BUFFER1013.unsigned char FP_Img_To_Buffer2[7]={0x01,0x0,0x04,0x02,0x0 2,0x0,0x09}; //将图像放入到BUFFER2014.unsigned char FP_Reg_Model[6]={0x01,0x0,0x03,0x05,0x0,0x09 }; //将BUFFER1跟BUFFER2合成特征模版015.unsigned char FP_Delet_All_Model[6]={0x01,0x0,0x03,0x0d,0x 00,0x11}; //删除指纹模块里所有的模版016.unsigned char FP_Save_Finger[9]={0x01,0x00,0x06,0x06,0x01, 0x00,0x0B,0x00,0x19};//将BUFFER1中的特征码存放到指定的位置017.unsigned char FP_Delete_Model[10]={0x01,0x00,0x07,0x0C,0x0 ,0x0,0x0,0x1,0x0,0x0}; //删除指定的模版018.019.020.//从 USART1 发送一个字节021.void USART1_SendByte(unsigned char temp)022.{023. USART_SendData(USART1, temp);024. while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);025.}026.027.//从 USART1 读取一个字节028.unsigned char USART1_ReceivByte()029.{030. unsigned char recev;031. while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);032. recev = USART_ReceiveData(USART1);033. return recev;034.}035.//FINGERPRINT命令字036.//FINGERPRINT_获得指纹图像命令037.void FINGERPRINT_Cmd_Get_Img(void)038.{039. unsigned char i;040.041. for(i=0;i<6;i++) //发送包头042. USART1_SendByte(FP_Pack_Head[i]);043.044. for(i=0;i<6;i++) //发送命令 0x1d045. USART1_SendByte(FP_Get_Img[i]);046.047. for(i=0;i<12;i++)//读回应答信息048. dat[i]=USART1_ReceivByte();049.}050.051.//删除所有指纹模版052.void FINGERPRINT_Cmd_Delete_All_Model(void)053.{054. unsigned char i;055.056. for(i=0;i<6;i++) //发送包头057. USART1_SendByte(FP_Pack_Head[i]);058.059. for(i=0;i<6;i++) //发送命令 0x1d060. USART1_SendByte(FP_Delet_All_Model[i]);061.062. for(i=0;i<12;i++)//读回应答信息063. dat[i]=USART1_ReceivByte();064.}065.066.//讲图像转换成特征码存放在Buffer1中067.void FINGERPRINT_Cmd_Img_To_Buffer1(void)068.{069. unsigned char i;070. for(i=0;i<6;i++) //发送包头071. {072. USART1_SendByte(FP_Pack_Head[i]);073. }074. for(i=0;i<7;i++) //发送命令将图像转换成特征码存放在CHAR_buffer1075. {076. USART1_SendByte(FP_Img_To_Buffer1[i]);077. }078. for(i=0;i<12;i++)//读应答信息079. {080. dat[i]=USART1_ReceivByte();//把应答数据存放到缓冲区081. }082.}083.084.//将图像转换成特征码存放在Buffer2中085.void FINGERPRINT_Cmd_Img_To_Buffer2(void)086.{087. unsigned char i;088. for(i=0;i<6;i++) //发送包头089. {090. USART1_SendByte(FP_Pack_Head[i]);091. }092.093. for(i=0;i<7;i++) //发送命令将图像转换成特征码存放在CHAR_buffer1094. {095. USART1_SendByte(FP_Img_To_Buffer2[i]);096. }097. for(i=0;i<12;i++)098. {099. dat[i]=USART1_ReceivByte();//读回应答信息100. }101.}102.103.//将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版104.void FINGERPRINT_Cmd_Reg_Model(void)105.{106. unsigned char i;107.108. for(i=0;i<6;i++) //包头109. {110. USART1_SendByte(FP_Pack_Head[i]);111. }112.113. for(i=0;i<6;i++) //命令合并指纹模版114. {115. USART1_SendByte(FP_Reg_Model[i]);117.118. for(i=0;i<12;i++)119. {120. dat[i]=USART1_ReceivByte();121. }122.}123.124.//存储模版到特定地址125.void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned charucL_Char)126.{127. unsigned long temp = 0;128. unsigned char i;129.130. FP_Save_Finger[5] = ucH_Char;131. FP_Save_Finger[6] = ucL_Char;132.133.134. for(i=0;i<7;i++) //计算校验和135. temp = temp + FP_Save_Finger[i];136.137. FP_Save_Finger[7]=(temp & 0x00FF00) >> 8; //存放校验数据138. FP_Save_Finger[8]= temp & 0x0000FF;139.140.141. for(i=0;i<6;i++)142. USART1_SendByte(FP_Pack_Head[i]); //发送包头143.144. for(i=0;i<9;i++)145. USART1_SendByte(FP_Save_Finger[i]); //发送命令将图像转换成特征码存放在 CHAR_buffer1146.147. for(i=0;i<12;i++)148. dat[i]=USART1_ReceivByte();149.}150.151.//获得指纹模板数量152.void FINGERPRINT_Cmd_Get_Templete_Num(void)153.{154. unsigned int i;155.156. for(i=0;i<6;i++) //包头157. USART1_SendByte(FP_Pack_Head[i]);159. //发送命令 0x1d160. for(i=0;i<6;i++)161. USART1_SendByte(FP_Templete_Num[i]);162.163. for(i=0;i<12;i++)164. dat[i]=USART1_ReceivByte();165.}166.167.//搜索全部用户999枚168.void FINGERPRINT_Cmd_Search_Finger(void)169.{170. unsigned char i;171. //发送命令搜索指纹库172. for(i=0;i<6;i++)173. {174. USART1_SendByte(FP_Pack_Head[i]);175. }176.177. for(i=0;i<11;i++)178. {179. USART1_SendByte(FP_Search[i]);180. }181.182. for(i=0;i<16;i++)183. {184. dat[i]=USART1_ReceivByte();185. }186.}187.188.//搜索用户0~9枚189.void FINGERPRINT_Cmd_Search_Finger_Admin(void) 190.{191. unsigned char i;192. for(i=0;i<6;i++) //发送命令搜索指纹库193. {194. USART1_SendByte(FP_Pack_Head[i]);195. }196.197. for(i=0;i<11;i++)198. {199. USART1_SendByte(FP_Search_0_9[i]);200. }201.202. for(i=0;i<12;i++)203. dat[i]=USART1_ReceivByte();204.}205.206.//添加一个新的指纹207.unsigned char FP_add_new_user(unsigned char ucH_user,unsig ned char ucL_user)208.{209. do210. {211. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像212. } while ( dat[9]!=0x0 ); //检测是否成功的按了指纹213.214. FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中215.216. do217. {218. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像219. } while( dat[9]!=0x0 );220.221. FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在Buffer2中222.223. FINGERPRINT_Cmd_Reg_Model(); //转换成特征码224.225. FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);226.227. return 0;228.}第2个 FPM10A.hview sourceprint?01.#ifndef _FPM10A_H02.#define _FPM10A_H03.#include <stdint.h>04.05.extern unsigned char dat[18];06.07.extern void FINGERPRINT_Cmd_Get_Img();08.extern void FINGERPRINT_Cmd_Img_To_Buffer1();09.extern void FINGERPRINT_Cmd_Img_To_Buffer2();10.extern void FINGERPRINT_Cmd_Reg_Model();11.extern void FINGERPRINT_Cmd_Delete_All_Model(void);12.extern void FINGERPRINT_Cmd_Search_Finger(void);13.extern void FINGERPRINT_Cmd_Get_Templete_Num(void);14.extern void FINGERPRINT_Cmd_Search_Finger_Admin(void);15.extern void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_ Char, unsigned charucL_Char);16.extern unsigned char FP_add_new_user(unsigned char ucH_user ,unsigned charucL_user);17.18.19.extern void USART1_SendByte(unsigned char temp);20.extern unsigned char USART1_ReceivByte();21.22.extern void Delay_ms1(uint32_t nCount);23.24.void Delay_nus1(uint32_t nCount)25.{26. uint32_t j;27. while(nCount--)28. {29. j=8;30. while(j--);31. }32.}33.34.void Delay_ms1(uint32_t nCount)35.{36. while(nCount--)37. Delay_nus1(1100);38.}39.40.unsigned char test_fig()//检测指纹模块录入指纹情况,返回00表示录入成功;02无手指;03录入失败41.{42. unsigned char fig_dat;43. FINGERPRINT_Cmd_Get_Img();44. Delay_ms1(20);45. fig_dat=dat[9];46. return(fig_dat);47.}48.49.#endif有了这两个东西,加入到你的工程中,就可以直接调用啦!。