Fingerprint sensor example with WIZwiki-W7500. 1st release.
Dependencies: GT511C3 mbed-src
Fork of GT511C3test by
Diff: main.cpp
- Revision:
- 3:459a4f985a45
- Parent:
- 2:34a647292050
- Child:
- 4:3dd0f98e6f09
--- a/main.cpp Fri Jan 03 07:24:39 2014 +0000 +++ b/main.cpp Fri Jan 03 12:56:03 2014 +0000 @@ -13,16 +13,62 @@ unsigned short Response = 0; int sts = 0; - debug.printf("CMD_EnrollStart\n"); - Parameter = EnrollID; - sts = finger.SendRecv(GT511C3::CMD_EnrollStart,&Parameter,&Response); - debug.printf("sts = %d,Response=0x%04x Parameter=0x%08lx\n",sts,Response,Parameter); - if(sts != 0) - return sts; - if(Response != GT511C3::CMD_Ack) - return -100; - // - return sts; + debug.printf("EnrollStart\n"); + finger.CmosLed(1); + + while(1){ + debug.printf("CMD_EnrollStart\n"); + Parameter = EnrollID; + sts = finger.SendRecv(GT511C3::CMD_EnrollStart,&Parameter,&Response); + debug.printf("sts = %d,Response=0x%04x Parameter=0x%08lx\n",sts,Response,Parameter); + if(sts != 0) + return sts; + if(Response != GT511C3::CMD_Ack) + return -100; + + debug.printf("Remove finger\n"); + finger.WaitPress(0); + + while(1){ + debug.printf("Press finger to Enroll (1st)\n"); + finger.WaitPress(1); + if(finger.Capture(1) == 0) + break; + } + + debug.printf("Remove finger\n"); + if(finger.Enroll_N(1) != 0) + continue; + finger.WaitPress(0); + + while(1){ + debug.printf("Press finger to Enroll (2nd)\n"); + finger.WaitPress(1); + if(finger.Capture(1) == 0) + break; + } + + debug.printf("Remove finger\n"); + if(finger.Enroll_N(2) != 0) + continue; + finger.WaitPress(0); + + while(1){ + debug.printf("Press finger to Enroll (3rd)\n"); + finger.WaitPress(1); + if(finger.Capture(1) == 0) + break; + } + + debug.printf("Remove finger\n"); + if(finger.Enroll_N(3) != 0) + continue; + finger.WaitPress(0); + + debug.printf("Enroll OK!\n"); + break; + } + return 0; } int main() { @@ -31,6 +77,7 @@ int sts = 0; int count = 0; int ispress; + int ID; debug.format(8,Serial::None,1); debug.baud(115200); @@ -42,18 +89,19 @@ sts = finger.SendRecv(GT511C3::CMD_Open,&Parameter,&Response); debug.printf("sts = %d,Response=0x%04x\n",sts,Response); - Parameter = 1; - sts = finger.SendRecv(GT511C3::CMD_CmosLed,&Parameter,&Response); - debug.printf("sts = %d,Response=0x%04x\n",sts,Response); + if(1){ + Enroll(); + } + + finger.CmosLed(1); while(1) { - ispress = 0; - Parameter = 0; - sts = finger.SendRecv(GT511C3::CMD_IsPressFinger,&Parameter,&Response); - debug.printf("sts = %d,Response=0x%04x Parameter=0x%08lx\n",sts,Response,Parameter); - if(sts == 0){ - if((Response == GT511C3::CMD_Ack) && (Parameter == 0)){ - ispress = 1; - } + ispress = finger.IsPress(); + debug.printf("IsPressFinger=%d\n",ispress); + if(ispress){ + if(finger.Capture(1) != 0) + continue; + ID = finger.Identify(); + debug.printf("ID = %d\n",ID); } #if 0 myled = 1;