Program for R306 fingerprint module interfaced with Wiz750SR S2E device
Dependencies: FPC_R306 MQTT WIZnetInterface mbed
Fork of GT511C3_TimeStamp_WIZwiki-W7500 by
main.cpp
- Committer:
- hjjeon
- Date:
- 2015-07-30
- Revision:
- 10:7b0c02f61513
- Parent:
- 8:574087f87b1e
- Child:
- 12:0dbf1579a20f
File content as of revision 10:7b0c02f61513:
#include "mbed.h" #include "GT511C3.hpp" #include "SDFileSystem.h" #include "EthernetInterface.h" #include "NTPClient.h" #define MAX_ID_NUM 20 #ifdef TARGET_WIZWIKI_W7500 GT511C3 finger(PA_13,PA_14); DigitalIn del_ID(D7); DigitalIn enroll_ID(D8); InterruptIn in(D9); SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // the pinout on the mbed uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0xab}; #endif Serial pc(USBTX,USBRX); EthernetInterface eth; NTPClient ntpClient; FILE *fp; int progress(int status,char *msg) { pc.printf("%s",msg); return 0; } void close_file(void) { fclose(fp); } int main() { int i; int sts = 0; int ID = 0; int cnt = 0; int EnrollID; char domainName[3][80] = {"kr.pool.ntp.org", "time.bora.net", "time.nuri.net"};//SET TO DOMAIN NAME OF SERVER GETTING TIME FROM char buffer[80]; //BUFFER TO HOLD FORMATTED TIME DATA time_t sysTime; in.rise(&close_file); pc.baud(115200); printf("File open...\r\n"); if((fp = fopen("/sd/time.txt", "w")) == NULL) { printf("Cannot open file!!\r\n"); return 0; } printf("GT511C3 open....\r\n"); while(1) { sts = finger.Open(); if(sts == -1) { printf("GT511C3 Open failed!!\r\n"); cnt++; while(cnt > 5); } else { break; } wait(0.2); } if(del_ID == 1) { finger.DeleteID_All(); printf("All ID are deleted!!\r\n"); } cnt = 0; if(enroll_ID == 1) { while(1) { if(finger.CheckEnrolled(cnt) == -1) { EnrollID = cnt; printf("ID(%d) is empty\r\n", EnrollID); break; } cnt++; if(cnt > MAX_ID_NUM) { printf("\r\nERROR : ID number is fulled!!Delete ID first!!\r\n\r\n"); while(1); } } finger.Enroll(EnrollID,progress); } eth.init(mac_addr); //Use DHCP printf("Check Ethernet Link\r\n"); while(1) //Wait link up { if(eth.link() == true) break; } printf("Link up\r\n"); printf("Getting IP address by DHCP...\r\n"); eth.connect(); printf("Server IP Address is %s\r\n", eth.getIPAddress()); printf("Getting time information by using NTP...\r\n"); cnt = 0; while(1) { if(ntpClient.setTime(domainName[cnt],123,0x00005000) != NTP_OK) { printf("Cannot get time information by NTP\r\n"); cnt++; } else break; if(cnt > 3) { printf("All NTP servers are not resposed!!\r\n"); return 1; } } printf("Completed Get and Set Time\r\n\r\n"); eth.disconnect(); //Start to capture fingerprint finger.CmosLed(1); while(1) { printf("Press finger for Identify\r\n"); finger.WaitPress(1); if(finger.Capture(1) != 0) continue; ID = finger.Identify(); if(ID == -1) printf("\r\nERROR : There is no ID!!Enroll first!!\r\n\r\n"); else { printf("ID = %d\r\n",ID); sysTime = time(NULL)+(3600*9); //TIME with offset for eastern time KR //FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER strftime(buffer,80,"%Y/%m/%d %p %I:%M:%S \r\n",localtime(&sysTime)); fprintf(fp, "ID : %d\r\nTime : %s\r\n", ID, buffer); printf("Univ Time Clock\r\n%s\r\n", buffer); } printf("Remove finger\r\n"); finger.WaitPress(0); } }