main.cpp is a direct example, waits for an input and then process it. test.cpp is modified, only process when there's a pressure

Dependencies:   GT511C3 mbed

Fork of GT511C3test by Toshihisa T

main.cpp

Committer:
tosihisa
Date:
2014-01-03
Revision:
4:3dd0f98e6f09
Parent:
3:459a4f985a45
Child:
5:d3ebe6d1ed92

File content as of revision 4:3dd0f98e6f09:

#include "mbed.h"
#include "GT511C3.h"

Serial debug(USBTX,USBRX);

DigitalOut myled(LED1);
GT511C3 finger(p28,p27);

int Enroll(void)
{
    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;
    }
    return 0;
}

int main() {
    int sts = 0;
    int ispress = 0;
    int ID = 0;

    debug.format(8,Serial::None,1);
    debug.baud(115200);

    debug.printf("Open\n");
    sts = finger.Open();
    debug.printf("sts = %d\n",sts);
    if(sts == 0){
        int i;
        debug.printf("FirmwareVersion = %lx\n",finger.FirmwareVersion);
        debug.printf("IsoAreaMaxSize = %ld\n",finger.IsoAreaMaxSize);
        debug.printf("DeviceSerialNumber = ");
        for(i = 0; i < sizeof(finger.DeviceSerialNumber);i++){
            debug.printf("%02X",finger.DeviceSerialNumber[i]);
        }
        debug.printf("\n");
    }

    if(1){
        Enroll();
    }

    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); 
        }
    }
}