首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于STM32单片机光学指纹识别模块(FPM10A)全教程(转)(2)

基于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();
   }
}

根据用户手册,我们可以从应答包中得出模块中已经存在指纹数量的大小
继承事业,薪火相传
返回列表