Program for R306 fingerprint module interfaced with Wiz750SR S2E device

Dependencies:   FPC_R306 MQTT WIZnetInterface mbed

Fork of GT511C3_TimeStamp_WIZwiki-W7500 by WIZnet

Files at this revision

API Documentation at this revision

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

GT511C3.cpp Show annotated file Show diff for this revision Revisions of this file
GT511C3.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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);
     }
 }