Program for R306 fingerprint module interfaced with Wiz750SR S2E device
Dependencies: FPC_R306 MQTT WIZnetInterface mbed
Fork of GT511C3_TimeStamp_WIZwiki-W7500 by
Revision 5:d3ebe6d1ed92, committed 2014-01-03
- Comitter:
- tosihisa
- Date:
- Fri Jan 03 14:37:48 2014 +0000
- Parent:
- 4:3dd0f98e6f09
- Child:
- 6:016ad8f480d3
- Commit message:
- Add Enroll function.;
Changed in this revision
--- a/GT511C3.cpp Fri Jan 03 14:12:18 2014 +0000
+++ b/GT511C3.cpp Fri Jan 03 14:37:48 2014 +0000
@@ -251,3 +251,74 @@
return Parameter;
}
+int GT511C3::Enroll(int ID,int (*progress)(int status,char *msg))
+{
+ unsigned long Parameter = 0;
+ unsigned short Response = 0;
+ int sts = 0;
+
+ CmosLed(1);
+
+ while(1){
+ if((sts = (*progress)(1,"EnrollStart\n")) != 0)
+ return -9999;
+ Parameter = ID;
+ sts = SendRecv(CMD_EnrollStart,&Parameter,&Response);
+ if(sts != 0)
+ return sts;
+ if(Response != CMD_Ack)
+ return -100;
+
+ if((sts = (*progress)(0,"Remove finger\n")) != 0)
+ return -9999;
+ WaitPress(0);
+
+ while(1){
+ if((sts = (*progress)(10,"Press finger to Enroll (1st)\n")) != 0)
+ return -9999;
+ WaitPress(1);
+ if(Capture(1) == 0)
+ break;
+ }
+
+ if((sts = (*progress)(0,"Remove finger\n")) != 0)
+ return -9999;
+ if(Enroll_N(1) != 0)
+ continue;
+ WaitPress(0);
+
+ while(1){
+ if((sts = (*progress)(20,"Press finger to Enroll (2nd)\n")) != 0)
+ return -9999;
+ WaitPress(1);
+ if(Capture(1) == 0)
+ break;
+ }
+
+ if((sts = (*progress)(0,"Remove finger\n")) != 0)
+ return -9999;
+ if(Enroll_N(2) != 0)
+ continue;
+ WaitPress(0);
+
+ while(1){
+ if((sts = (*progress)(30,"Press finger to Enroll (3rd)\n")) != 0)
+ return -9999;
+ WaitPress(1);
+ if(Capture(1) == 0)
+ break;
+ }
+
+ if((sts = (*progress)(0,"Remove finger\n")) != 0)
+ return -9999;
+ if(Enroll_N(3) != 0)
+ continue;
+ WaitPress(0);
+
+ if((sts = (*progress)(100,"Enroll OK\n")) != 0)
+ return -9999;
+
+ break;
+ }
+ return 0;
+}
--- a/GT511C3.h Fri Jan 03 14:12:18 2014 +0000
+++ b/GT511C3.h Fri Jan 03 14:37:48 2014 +0000
@@ -107,6 +107,7 @@
int Capture(int best);
int Enroll_N(int N);
int Identify(void);
+ int Enroll(int ID,int (*progress)(int status,char *msg));
};
#endif //__GT511C3_H
--- a/main.cpp Fri Jan 03 14:12:18 2014 +0000
+++ b/main.cpp Fri Jan 03 14:37:48 2014 +0000
@@ -6,74 +6,14 @@
DigitalOut myled(LED1);
GT511C3 finger(p28,p27);
-int Enroll(void)
+int progress(int status,char *msg)
{
- int EnrollID = 10;
- unsigned long Parameter = 0;
- unsigned short Response = 0;
- int sts = 0;
-
- 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;
- }
+ debug.printf("%s",msg);
return 0;
}
int main() {
int sts = 0;
- int ispress = 0;
int ID = 0;
debug.format(8,Serial::None,1);
@@ -94,18 +34,18 @@
}
if(1){
- Enroll();
+ finger.Enroll(11,progress);
}
finger.CmosLed(1);
while(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);
- }
+ debug.printf("Press finger\n");
+ finger.WaitPress(1);
+ if(finger.Capture(1) != 0)
+ continue;
+ ID = finger.Identify();
+ debug.printf("ID = %d\n",ID);
+ debug.printf("Remove finger\n");
+ finger.WaitPress(0);
}
}
