📄 testzhi.c
字号:
TransmitByte(p1) ;
TransmitByte(p2) ;
TransmitByte(p3) ;
TransmitByte(p4) ;
TransmitByte(p5) ;
sum = 0x06 + cmd + p1 + p2 + p3 + p4 + p5 ;
sum_h = sum>>8 ;
sum_l = sum&0xff ;
TransmitByte(sum_h) ;
TransmitByte(sum_l) ;
TransmitByte(0xC0) ;
}
/*********************************** login_succeed **********************************/
void login_succeed()
{
led_flash() ;
}
/*********************************** login_failed **********************************/
void login_failed()
{
u8 ack =0 ;
ack = ack ;
command_bag_length_3(0x16,0x30,0x06) ; //green_&_red_led_flash_three_times_simultaneously,300ms
ack = ack_bag_length_1() ;
}
/*********************************** ok **********************************/
void ok()
{
u8 ack = 0 ;
ack = ack ;
lcd_upside_initialization() ;
data_clear() ;
display_line_5() ; //display Right!
command_bag_length_3(0x16,0x30,0x06) ; //green_&_red_led_flash_three_times_simultaneously,300ms
ack = ack_bag_length_1() ;
}
/*********************************** error**********************************/
void error()
{
u8 ack = 0 ;
ack = ack ;
lcd_upside_initialization() ;
data_clear() ;
display_line_6() ; //display Wrong!
command_bag_length_3(0x16,0x04,0x06) ; //red_led_flash_four_times_successively,300ms
ack = ack_bag_length_1() ;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/************************************ login_mode **********************************
将指纹模版文件存到templet_num号flash数据库模版;templet_num range from 0 to 1775
*********************************** login_mode ***********************************/
void login_mode(u16 templet_num)
{
u8 ack , templet_num_l , templet_num_h ;
templet_num_l = templet_num & 0x00ff ; //page_id initial value is 0
templet_num_h = templet_num >> 4 ;
do
{
command_bag_length_1(0x01) ; //cmd_detect_finger
ack = ack_bag_length_1() ;
}
while(ack!=0x00) ;
command_bag_length_1(0x02) ; //cmd_get_image
ack = ack_bag_length_6() ;
if(ack!=0x00)
{
command_bag_length_3(0x16,0x01,0x06) ; //red_led_flash_once,300ms
ack = ack_bag_length_1() ;
}
command_bag_length_2(0x03,CharBufferA) ; //cmd_gen_templet,buffer_a
ack = ack_bag_length_1() ;
if(ack!=0x00)
{
command_bag_length_3(0x16,0x02,0x06) ; //red_led_flash_twice,300ms
ack = ack_bag_length_1() ;
}
command_bag_length_3(0x16,0x11,0x06) ; //green_led_flash_once,300ms
ack = ack_bag_length_1() ;
////////////////////////////////////////////////////////////////////////////////////////////
do
{
command_bag_length_1(0x01) ; //cmd_detect_finger
ack = ack_bag_length_1() ;
}
while(ack!=0x00) ;
command_bag_length_1(0x02) ; //cmd_get_image
ack = ack_bag_length_6() ;
if(ack!=0x00)
{
command_bag_length_3(0x16,0x03,0x06) ; //red_led_flash_three_times,300ms
ack = ack_bag_length_1() ;
}
command_bag_length_2(0x03,CharBufferB) ; //cmd_gen_templet,buffer_b
ack = ack_bag_length_1() ;
if(ack!=0x00)
{
command_bag_length_3(0x16,0x04,0x06) ; //red_led_flash_four_times,300ms
ack = ack_bag_length_1() ;
}
command_bag_length_3(0x16,0x12,0x06) ; //green_led_flash_twice,300ms
ack = ack_bag_length_1() ;
command_bag_length_1(0x06) ; //cmd_merge_two_templet 将BufferA和BufferB中的文件合成模版结果存于ModelBuffer
ack = ack_bag_length_1() ;
if(ack == 0x00)
{
command_bag_length_3(0x16,0x13,0x06) ; //green_led_flash_three_times,300ms
ack = ack_bag_length_1() ;
command_bag_length_4(0x07,model_buffer,templet_num_l,templet_num_h) ; //cmd_store_templet 将model_buffer中的指纹模版文件存到templet_num号flash数据库模版
login_succeed() ;
//command_bag_length_3(0x16,0x30,0x06) ; //green_&_red_led_flash_three_times_simultaneously,300ms
}
else login_failed() ;
//command_bag_length_3(0x16,0x40,0x06) ; //green_&_red_led_flash_three_times_successively,300ms
}
/*********************************** delete_one_templet **********************************
删除flash数据库中templet_num号的指纹模版
*********************************** delete_one_templet **********************************/
void delete_one_templet(u16 templet_num)
{
u8 ack , templet_num_h , templet_num_l ;
templet_num_h = templet_num>>4 ;
templet_num_l = templet_num ;
command_bag_length_3(0x0D,templet_num_h,templet_num_l) ; //load_templet 将templet_num号flash数据库位置指纹模版文件读入到model_buffer
ack = ack_bag_length_1() ;
if(ack == 0x00)
{
ok() ;
}
else error() ;
}
/************************************* zhiwen_search ************************************
将手指放在指纹识别器上,本段代码将生成指纹特征文件,并将生成的指纹特征文件存放在buffer_id
中,然后以该指纹特征文件分三级搜索指纹库. buffer_id可以是CharBufferA ,CharBufferB 两种。
************************************* zhiwen_search ************************************/
void zhiwen_search(u8 buffer_id)
{
u8 ack ;
do
{
command_bag_length_1(0x01) ; //cmd_detect_finger
ack = ack_bag_length_1() ;
}
while(ack!=0x00) ;
command_bag_length_1(0x02) ; //cmd_get_image
ack = ack_bag_length_6() ;
command_bag_length_2(0x03,buffer_id) ; //cmd_gen_templet, 将ImageBuffer中的原始图像生成指纹特征文件存于buffer_id
ack = ack_bag_length_1() ;
command_bag_length_2(0x25,buffer_id) ; //level_search
ack = ack_bag_length_35() ;
if(ack == 0x00)
{
ok() ;
}
else error() ;
}
/*********************************** zhiwen_compare ***************************************
将手指放在指纹识别器上,本段代码将生成指纹特征文件,并将生成的指纹特征文件与flash数据库中
templet_id号的指纹模版比对.假如一致,则运行ok(),否则运行error() .
*********************************** zhiwen_compare ***************************************/
void zhiwen_compare(u16 templet_id)
{
u8 ack , templet_id_h , templet_id_l ;
templet_id_h = templet_id>>8 ;
templet_id_l = templet_id ;
do
{
command_bag_length_1(0x01) ; //cmd_detect_finger
ack = ack_bag_length_1() ;
}
while(ack!=0x00) ;
command_bag_length_1(0x02) ; //cmd_get_image
ack = ack_bag_length_6() ;
/*
command_bag_length_3(0x16,0x11,0x06) ; //green_led_flash_once,300ms
ack = ack_bag_length_1() ;
*/
command_bag_length_2(0x03,CharBufferA) ; //cmd_gen_templet,将ImageBuffer中的原始图像生成指纹特征文件存于CharBufferA
ack = ack_bag_length_1() ;
/*
command_bag_length_3(0x16,0x12,0x06) ; //green_led_flash_twice,300ms
ack = ack_bag_length_1() ;
*/
command_bag_length_3(0x08,templet_id_h,templet_id_l) ; //load_templet 将flash数据库中templet_id号的指纹模版读入到模版缓冲区model_buffer中
ack = ack_bag_length_1() ;
/*
command_bag_length_3(0x16,0x13,0x06) ; //green_led_flash_three_times,300ms
ack = ack_bag_length_1() ;
*/
command_bag_length_3(0x20,model_buffer,CharBufferB) ; //move 指纹模版 from model_buffer to CharBufferB
ack = ack_bag_length_1() ;
/*
command_bag_length_3(0x16,0x14,0x06) ; //green_led_flash_four_times,300ms
ack = ack_bag_length_1() ;
*/
command_bag_length_1(0x04) ; //match_two_templet
ack = ack_bag_length_3() ;
if(ack == 0x00)
{
ok() ;
}
else error() ;
}
/************************************ check_templet *******************************************/
u8 check_templet(u16 templet_num)
{
templet_num_high = templet_num>>8 ;
templet_num_low = templet_num ;
u8 ack ;
command_bag_length_3(0x28,templet_num_high,templet_num_low) ;
ack = ack_bag_length_1() ;
return ack ;
}
/**************************************** main ***********************************************/
/*
main()
{
InitUART(7) ; // IF Crystal: 7.3728Mhz SET 15 ; IF Crystal: 3.6864Mhz SET 7 baud_rate 57600
acknowledge = check_templet(0x000B) ;
if(acknowledge!=0) command_bag_length_3( 0x16, 0x04 , 0x06 ) ; //red led flash
else command_bag_length_3( 0x16, 0x14 , 0x06 ) ; //green led flash
login_mode(1) ;
command_bag_length_1(0x24) ;
ack_bag_length_33() ;
InitUART(7) ; // IF Crystal: 7.3728Mhz SET 15 ; IF Crystal: 3.6864Mhz SET 7 baud_rate 57600
//login_mode(1) ;
while(acknowledge!=0)
{
command_bag_length_1(0x01); //detect finger
acknowledge = ack_bag_length_1() ;
}
command_bag_length_3( 0x16, 0x04 , 0x06 ) ; //led flash
zhiwen_search(CharBufferA,10,90) ;
//zhiwen_compare(1);
asm ("nop") ;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -