基于STM32单片机光学指纹识别模块(FPM10A)全教程(转)(2)
- UID
- 1029342
- 性别
- 男
|
基于STM32单片机光学指纹识别模块(FPM10A)全教程(转)(2)
因此,我们在主函数中可以这样调用:
void main
{
if(test_fig()==0)
{
//do something
}
}
7.如何录入一个新的指纹信息呢?
步骤如下
1.获得指纹图像
2.检测是否成功的按了指纹
3.将图像转换成特征码存放在Buffer1中
4.再次获得指纹图像
5.将图像转换成特征码存放在Buffer2中
6.转换成特征码
7.存储到指定地址上
同样的,根据用户手册,我们可以得到以下这样的模块:
当调用的时候,你只要给这个函数附上两个值就可以了,例如:
unsigned char FP_add_new_user(00,01);
如果你下次再次写入这个地址,以前存储的指纹模板信息将被覆盖
//添加一个新的指纹
unsigned char FP_add_new_user(unsigned char ucH_user,unsigned charucL_user)
{
do
{
FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
} while ( dat[9]!=0x0); //检测是否成功的按了指纹
FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中
do
{
FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
} while( dat[9]!=0x0 );
FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在Buffer2中
FINGERPRINT_Cmd_Reg_Model(); //转换成特征码
FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);
return 0;
}
//存储模版到特定地址
void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsignedchar ucL_Char)
{
unsignedlong temp = 0;
unsignedchar i;
FP_Save_Finger[5]= ucH_Char;
FP_Save_Finger[6]= ucL_Char;
for(i=0;i<7;i++) //计算校验和
temp = temp+ FP_Save_Finger;
FP_Save_Finger[7]=(temp & 0x00FF00)>> 8; //存放校验数据
FP_Save_Finger[8]= temp & 0x0000FF;
for(i=0;i<6;i++)
USART1_SendByte(FP_Pack_Head); //发送包头
for(i=0;i<9;i++)
USART1_SendByte(FP_Save_Finger);//发送命令将图像转换成特征码存放CHAR_buffer1
for(i=0;i<12;i++)
dat=USART1_ReceivByte();
}
8.如何删除一个模板?
//删除所有指纹模版
void FINGERPRINT_Cmd_Delete_All_Model(void)
{
unsignedchar i;
for(i=0;i<6;i++) //发送包头
USART1_SendByte(FP_Pack_Head);
for(i=0;i<6;i++) //发送命令 0x1d
USART1_SendByte(FP_Delet_All_Model);
for(i=0;i<12;i++)//读回应答信息
dat=USART1_ReceivByte();
}
9.如何获取已经存取的指纹模板信息?
这个模块一共可以存储0~999枚指纹信息
//搜索全部用户999枚
void FINGERPRINT_Cmd_Search_Finger(void)
{
unsigned chari;
//发送命令搜索指纹库
for(i=0;i<6;i++)
{
USART1_SendByte(FP_Pack_Head);
}
for(i=0;i<11;i++)
{
USART1_SendByte(FP_Search);
}
for(i=0;i<16;i++)
{
dat=USART1_ReceivByte();
}
}
根据用户手册,我们可以从应答包中得出模块中已经存在指纹数量的大小 |
|
|
|
|
|