def checkFP(): ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyS0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to search the finger and calculate hash try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') return -30 else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) ## OPTIONAL stuff ## ## Loads the found template to charbuffer 1 f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8') ## Hashes characteristics of template print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest()) return positionNumber except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1)
def delete(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError( 'La Contraseña del sensor de huellas dactilares dada es incorrecta!' ) except Exception as e: print('No se puedo inicializar el sensor de huellas dactilares!') print('Mensaje de exepcion: ' + str(e)) exit(1) ## Gets some sensor information print('\tEdu Attendance v1.0') print('') print('Plantillas utilizada actualmente: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) print('') try: if f.clearDatabase() == True: print('Plantillas actualmente: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) except Exception as e: print('Operacion fallida') print('Mensaje de exepcion: ' + str(e)) exit(1)
def register(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError( 'La Contraseña del sensor de huellas dactilares dada es incorrecta!' ) except Exception as e: print('No se puedo inicializar el sensor de huellas dactilares!') print('Mensaje de exepcion: ' + str(e)) exit(1) ## Gets some sensor information print('\tEdu Attendance v1.0') print('') print('Plantillas utilizada actualmente: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) print('') print("Registrar un Nuevo Usuario") new_name = input("Nombre: ") result = finger() sql = """INSERT INTO empleado ( nombre,id_huella,dato) VALUES ('%s','%s','%s')""" % ( new_name, result[0], result[1]) mysqlcursor.execute(sql) db.commit() db.rollback() print("Completado") lcd.lcd_display_string('Completado', 1) db.close()
class FingerPrintScan: def __init__(self): self.f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (self.f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') print('Currently used templates: ' + str(self.f.getTemplateCount()) + '/' + str(self.f.getStorageCapacity())) self.current_buffer = 0x01 def scan_fingerprint(self): while (self.f.readImage() == False): pass def is_fingerprint_exist(self): result = self.f.searchTemplate() positionNumber = result[0] print(positionNumber) return positionNumber >= 0 def get_template_id(self): result = self.f.searchTemplate() positionNumber = result[0] print(positionNumber) return positionNumber def save_fingerprint(self): self.f.createTemplate() return self.f.storeTemplate() def clear_all_fingerprint(self): for i in range(self.f.getTemplateCount()): if self.f.deleteTemplate(i): print('Template deleted - ' + str(i)) def clear_fingerprint(self, start, end): for i in range(start, end): if self.f.deleteTemplate(i): print('Template deleted - ' + str(i)) def save_to_char_buffer(self): self.f.convertImage(self.current_buffer) self.current_buffer = self.current_buffer + 1 def save_as_image(self, file_name): imageDestination = os.getcwd() + '/' + file_name + '.png' self.f.downloadImage(imageDestination)
def finger(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) except Exception: print('The fingerprint sensor could not be initialized!') print('') main_menu() else: print('Currently used templates: ' + str(f.getTemplateCount())) print('') print_grab()
def enroll(): mylcd.lcd_clear() mylcd.lcd_display_string('Enter Password:'******'4209': mylcd.lcd_clear() mylcd.lcd_display_string('Enter ID Number', 1) r = raw_input("Enter ID Number: ") mylcd.lcd_display_string(r, 2, 2) sleep(2) ## GETTING INFORMATION FROM DATABASE conn = sqlite3.connect('/home/pi/attendance/app.db') curs = conn.cursor() db_val = curs.execute( 'SELECT rollnum from finger_store where rollnum in (values(?))', [r]) coun = (len(list(db_val))) if coun >= 1: mylcd.lcd_clear() mylcd.lcd_display_string('ID Number Already', 1) mylcd.lcd_display_string('Taken', 2, 2) sleep(2) conn.commit() conn.close() else: conn.commit() conn.close() ## Enrolls new finger ## ## Tries to initialize the sensor try: f = PyFingerprint('/dev/serial0', 9600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): mylcd.lcd_clear() mylcd.lcd_display_string('Contact Admin', 1) sleep(2) raise ValueError( 'The given fingerprint sensor password is wrong!') except Exception as e: mylcd.lcd_clear() mylcd.lcd_display_string('Contact Admin', 1) sleep(2) print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) startChoice() ## Gets some sensor information mylcd.lcd_clear() mylcd.lcd_display_string('Currently used', 1) mylcd.lcd_display_string('templates: ', 2) mylcd.lcd_display_string(str(f.getTemplateCount()), 2, 13) sleep(2) print('Currently used templates: ' + str(f.getTemplateCount())) ## Tries to enroll new finger try: mylcd.lcd_clear() mylcd.lcd_display_string('Waiting for Finger', 2, 2) ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): mylcd.lcd_clear() mylcd.lcd_display_string('Template already', 1) mylcd.lcd_display_string('exists at ', 2) mylcd.lcd_display_string('position # ', 3) mylcd.lcd_display_string(str(positionNumber), 3, 13) sleep(3) print('Template already exists at position #' + str(positionNumber)) startChoice() else: mylcd.lcd_clear() mylcd.lcd_display_string('Remove finger...', 2, 2) print('Remove finger...') time.sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string('Waiting for same', 2) mylcd.lcd_display_string(' finger again', 3) print('Waiting for same finger again...') ## Wait that finger is read again while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 2 f.convertImage(0x02) ## Compares the charbuffers if (f.compareCharacteristics() == 0): mylcd.lcd_clear() mylcd.lcd_display_string('Fingers not matched', 2) sleep(2) raise Exception('Fingers do not match') ## Creates a template f.createTemplate() ## Saves template at new position number positionNumber = f.storeTemplate() ## Loads the found template to charbuffer 1 f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str( f.downloadCharacteristics(0x01)).encode('utf-8') ## Hashes characteristics of template cre_hash = hashlib.sha256(characterics).hexdigest() conn = sqlite3.connect('/home/pi/attendance/app.db') curs = conn.cursor() curs.execute( 'INSERT INTO finger_store(rollnum, hashval, id) values(?, ?, ?)', (r, cre_hash, positionNumber)) conn.commit() conn.close() mylcd.lcd_clear() mylcd.lcd_display_string('Finger enrolled', 2) mylcd.lcd_display_string('Successfully!', 3, 2) sleep(2) print('New template position #' + str(positionNumber)) startChoice() except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) startChoice() else: mylcd.lcd_clear() mylcd.lcd_display_string('Your Not Authorized!', 2) sleep(2)
def finger(): ## Search for a finger ## ## Tries to initialize the sensor try: f = PyFingerprint('/dev/serial0', 9600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') startChoice() except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) startChoice() ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount())) ## Tries to search the finger and calculate hash try: mylcd.lcd_clear() mylcd.lcd_display_string('Waiting for finger..', 2) ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): mylcd.lcd_clear() mylcd.lcd_display_string('No match found!') sleep(2) mylcd.lcd_clear() startChoice() else: mylcd.lcd_clear() today_name = datetime.date.today() if calendar.day_name[today_name.weekday()] != ('Sunday' or 'Saturday'): ## Generating TIME VALUES now = datetime.datetime.now() my_time_string_10 = "10:30:00" my_time_string_12 = "12:30:00" my_time_string_13 = "13:29:59" my_time_string_14 = "14:30:00" my_time_string_16 = "16:00:01" time_10 = datetime.datetime.strptime(my_time_string_10, "%H:%M:%S") time_12 = datetime.datetime.strptime(my_time_string_12, "%H:%M:%S") time_13 = datetime.datetime.strptime(my_time_string_13, "%H:%M:%S") time_14 = datetime.datetime.strptime(my_time_string_14, "%H:%M:%S") time_16 = datetime.datetime.strptime(my_time_string_16, "%H:%M:%S") # I am supposing that the date must be the same as now time_10 = now.replace(hour=time_10.time().hour, minute=time_10.time().minute, second=time_10.time().second, microsecond=0) time_12 = now.replace(hour=time_12.time().hour, minute=time_12.time().minute, second=time_12.time().second, microsecond=0) time_13 = now.replace(hour=time_13.time().hour, minute=time_13.time().minute, second=time_13.time().second, microsecond=0) time_14 = now.replace(hour=time_14.time().hour, minute=time_14.time().minute, second=time_14.time().second, microsecond=0) time_16 = now.replace(hour=time_16.time().hour, minute=time_16.time().minute, second=time_16.time().second, microsecond=0) print('Found template at position #' + str(positionNumber)) mylcd.lcd_display_string('PLEASE WAIT', 2, 3) ## Create Hash Value for finger ## ## Loads the found template to charbuffer 1 f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str( f.downloadCharacteristics(0x01)).encode('utf-8') val_hash = hashlib.sha256(characterics).hexdigest() ## Hashes characteristics of template print('SHA-2 hash of template: ' + val_hash) ## GETTING INFORMATION FROM DATABASE conn = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) curs = conn.cursor() db_val = curs.execute( 'SELECT rollnum, hashval from finger_store where hashval in (values(?))', [val_hash]) for row in db_val: ext_id = row[0] mylcd.lcd_clear() mylcd.lcd_display_string("YOUR ID NUMBER:", 2, 2) mylcd.lcd_display_string(ext_id, 3, 3) sleep(2) mylcd.lcd_clear() conn.commit() conn.close() con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) curs2 = con.cursor() curs2.execute( 'SELECT date from attendance where (date, rollnum) in (values(?, ?))', (datetime.date.today(), ext_id)) d = curs2.fetchone() con.close() if d == None: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'INSERT INTO attendance (rollnum,date) values(?, ?)', (ext_id, datetime.date.today())) con.commit() con.close() ## GETTING INFORMATION FROM DATABASE con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) curs2 = con.cursor() curs2.execute( 'SELECT status,statusexit,statusnoon,statusnoonexit from attendance where (date, rollnum) in (values(?, ?))', (datetime.date.today(), ext_id)) row = curs2.fetchall() for all in row: status1 = all[0] status2 = all[1] status3 = all[2] status4 = all[3] con.close() if status1 == 'absent': if now < time_10: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set status = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string("Attendance Success for", 1) mylcd.lcd_display_string(" this Morining", 2) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string("Dont forgot to ", 1) mylcd.lcd_display_string("comeback after 12:30 PM", 2) sleep(2) mylcd.lcd_clear() elif (now >= time_10) and (now <= time_13): mylcd.lcd_display_string("Sorry, You are Late today", 1) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string("Come Afternoon ", 2) mylcd.lcd_display_string("or Tomorrow", 3) sleep(2) mylcd.lcd_clear() elif now > time_13: if status3 == 'absent': if now <= time_14: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set statusnoon = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string( "Attendance Success ", 1) mylcd.lcd_display_string( "for this Afternoon", 2) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string("Dont forgot to ", 1) mylcd.lcd_display_string("comeback after", 2) mylcd.lcd_display_string("04:00 PM ", 3) sleep(3) mylcd.lcd_clear() elif now > time_14: mylcd.lcd_display_string( "Sorry, You are Late", 2) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string( "Please Come Early ", 1) mylcd.lcd_display_string("Tomorrow", 2, 2) sleep(2) mylcd.lcd_clear() elif status3 == 'present': if now < time_16: mylcd.lcd_display_string( "You're leaving Early", 1) mylcd.lcd_display_string("Please come back", 2) mylcd.lcd_display_string("after 4 PM", 3) sleep(3) mylcd.lcd_clear() elif now >= time_16: if status4 == 'present': mylcd.lcd_display_string( "Thought you were", 1) mylcd.lcd_display_string( "already in your home!", 2) sleep(2) mylcd.lcd_clear() else: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set statusnoonexit = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string( "Attendance Success,", 2) mylcd.lcd_display_string( " Happy Day!", 3, 2) sleep(2) mylcd.lcd_clear() elif status1 == 'present': if now < time_12: mylcd.lcd_display_string("Not the time to", 2) mylcd.lcd_display_string("leave", 3, 2) sleep(2) mylcd.lcd_clear() elif (now >= time_12) and (now <= time_13): con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set statusexit = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string("Attendance Success", 1) mylcd.lcd_display_string("Now Go and", 2, 2) mylcd.lcd_display_string("have your LUNCH :)", 3) sleep(3) mylcd.lcd_clear() elif now > time_13: if status3 == 'absent': if now <= time_14: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set statusnoon = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string( "Attendance Success ", 1) mylcd.lcd_display_string( "for this Afternoon", 2) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string("Dont forgot to ", 1) mylcd.lcd_display_string("comeback after", 2) mylcd.lcd_display_string("04:00 PM ", 3) sleep(3) mylcd.lcd_clear() elif now > time_14: mylcd.lcd_display_string( "Sorry, You are Late", 2) sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string( "Please Come Early ", 1) mylcd.lcd_display_string("Tomorrow", 2, 2) sleep(2) mylcd.lcd_clear() elif status3 == 'present': if now < time_16: mylcd.lcd_display_string( "You're leaving Early", 1) mylcd.lcd_display_string("Please come back", 2) mylcd.lcd_display_string("after 4 PM", 3) sleep(3) mylcd.lcd_clear() elif now >= time_16: if status4 == 'present': mylcd.lcd_display_string( "Thought you were", 1) mylcd.lcd_display_string( "already in your home!", 2) sleep(2) mylcd.lcd_clear() else: con = sqlite3.connect( '/home/pi/Desktop/pro/attendance-20180412T122709Z-001/attendance/app.db' ) c = con.cursor() c.execute( 'UPDATE attendance Set statusnoonexit = ? where (rollnum, date) in (values(?, ?))', ('present', ext_id, datetime.date.today())) con.commit() con.close() mylcd.lcd_display_string( "Attendance Success,", 2) mylcd.lcd_display_string( " Happy Day!", 3, 2) sleep(2) mylcd.lcd_clear() else: while True: mylcd.lcd_clear() mylcd.lcd_display_string('Today is a holiday', 2, 2) mylcd.lcd_clear() mylcd.lcd_display_string('So no ATTENDANCE, Enjoy!', 3, 2) startChoice() except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) startChoice()
print 'ERRROR! MoneyBox and FingerPrint are required' exit(1) print 'Found MoneyBox connected on %s' % MoneyBox print 'Found FingerPrint connected on %s' % FingerPrint print '' # Main loop # ------------------------------------------------------------------------- # # try: MB = serial.Serial(MoneyBox,baudrate=BAUDRATE,timeout=TIME_OUT) FP = PyFingerprint(FingerPrint, BAUDRATE, 0xFFFFFFFF, 0x00000000) ## Gets some sensor information print('Currently stored templates: ' + str(FP.getTemplateCount())) for page in range(0,4): tableIndex = FP.getTemplateIndex(page) for i in range(0, len(tableIndex)): if (tableIndex[i]): print 'Page %0d template at position #%03d' % (page,i) print 'Waiting for finger...' while True: if (FP.readImage() == True): print 'Read!', ## Converts read image to characteristics and stores it in charbuffer 1 FP.convertImage(0x01) ## Searchs template result = FP.searchTemplate()
class FingerprintController(object): def __init__(self): self.sensor = None self.lcd = None self.cur_state = None def connect(self, dev): logging.info("Attempting to open serial device %s", dev) self.sensor = PyFingerprint(dev, 57600, 0xFFFFFFFF, 0x00000000) if not self.sensor.verifyPassword(): raise ValueError('The given fingerprint sensor password is wrong!') logging.info("Serial device opened") logging.info( "Currently used templates: %s/%s" % (self.sensor.getTemplateCount(), self.sensor.getStorageCapacity())) self.lcd = LCD() self.send_update_packet({"status": "idle"}) def send_update_packet(self, data): logging.info("=> %s" % data) resp = requests.post(url=API_UPDATE_SELF_STATE, data={ "token": ID_TOKEN, "state": json.dumps(data), }) logging.info(" <= %s", resp.json()) def request_mode(self): try: logging.info("Requesting state...") data = requests.post(url=API_SELF_STATE, data={ "token": ID_TOKEN, }, timeout=10) logging.info("Received response: %s", data) data = data.json() return data['state'] except KeyboardInterrupt: sys.exit(0) except: logging.exception("Failed requesting state, idling...") return 'idle' def loop_forever(self): funcs = { 'enroll': self.state_enroll, 'auth': self.state_auth, 'idle': self.state_idle, } while True: mode = self.request_mode() action = funcs.get(mode, None) if not action: logging.warning("Ignoring invalid mode from server: %s", mode) self.state_idle() continue logging.info("Performing action '%s'", mode) try: action() if mode != 'idle': time.sleep(5) except Exception as ex: self.send_update_packet({ "status": "general_error", "message": ex.message }) def state_idle(self): self.lcd.setText("Waiting...") self.lcd.setRGB(255, 150, 0) time.sleep(1) def state_enroll(self): self.send_update_packet({"status": "enroll_wait"}) self.lcd.setRGB(0, 255, 0) self.lcd.setText("Place finger on the sensor.") while not self.sensor.readImage(): pass self.sensor.convertImage(0x01) result = self.sensor.searchTemplate() position_num = result[0] if position_num >= 0: self.send_update_packet({ "status": "enroll_fail", "reason": "Fingerprint already enrolled." }) return self.lcd.setText("Lift finger off the sensor.") self.send_update_packet({"status": "enroll_lift"}) time.sleep(2) self.lcd.setText("Place your\nfinger again.") self.send_update_packet({"status": "enroll_wait2"}) while not self.sensor.readImage(): pass self.sensor.convertImage(0x02) if not self.sensor.compareCharacteristics(): self.lcd.setRGB(255, 0, 0) self.lcd.setText("Fingerprints do not match.") self.send_update_packet({ "status": "enroll_fail", "reason": "Fingerprints do not match." }) return self.sensor.createTemplate() characteristics = self.sensor.downloadCharacteristics(0x01) hash = hashlib.sha256(str(characteristics).encode('utf-8')).hexdigest() position_num = self.sensor.storeTemplate() self.lcd.setText("Fingerprint added!") self.send_update_packet({"status": "enroll_success", "hash": hash}) def state_auth(self): self.send_update_packet({"status": "auth_wait"}) self.lcd.setRGB(0, 255, 0) self.lcd.setText("Place finger on the sensor.") while not self.sensor.readImage(): pass self.sensor.convertImage(0x01) result = self.sensor.searchTemplate() position_num = result[0] accuracy = result[1] if position_num == -1: self.lcd.setRGB(255, 0, 0) self.lcd.setText("Unknown\nfingerprint!") self.send_update_packet({ "status": "auth_fail", "reason": "Unknown fingerprint!" }) return self.lcd.setText("Successfully\nauthenticated!") logging.info("Found template at position #%d, score %d", position_num, accuracy) self.send_update_packet({"status": "auth_success"})
## ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to delete the template of the finger try: positionNumber = input( 'Please enter the template position you want to delete: ') positionNumber = int(positionNumber) if (f.deleteTemplate(positionNumber) == True): deletefromdatabase() print('Template deleted!') except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1)
## ## Tries to initialize the sensor try: f = PyFingerprint('/dev/serial0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) for i in xrange(f.getTemplateCount()): assert f.deleteTemplate(i) ''' ## Tries to delete the template of the finger try: positionNumber = input('Please enter the template position you want to delete: ') positionNumber = int(positionNumber) if ( f.deleteTemplate(positionNumber) == True ): print('Template deleted!') except Exception as e: print('Operation failed!')
def enroll(): global employee global r global fun print(employee) r = employee print('employee ID:', r) print('') conn = sqlite3.connect('/home/pi/Desktop/beta/employee.db') c = conn.cursor() db_val = c.execute( 'SELECT employ_num FROM finger_store WHERE employ_num IN (VALUES(?))', [r]) coun = (len(list(db_val))) if coun >= 1: mylcd.lcd_clear() mylcd.lcd_display_string(' ID Already Exists', 2) print('ID Already Exists') print('') time.sleep(2) conn.commit() conn.close() main_menu() else: conn.commit() conn.close() try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): print('Contact Admin') print('') time.sleep(2) raise ValueError('The given fingerprint sensor password wrong') except Exception as e: mylcd.lcd_clear() mylcd.lcd_display_string(' Contact Admin', 2) print('Contact Admin') print('') time.sleep(2) print('The fingerprint sensor could not be initialized') print('Exception message: ' + str(e)) print('') main_menu() print('Currently used templates: ' + str(f.getTemplateCount())) print('') try: mylcd.lcd_clear() mylcd.lcd_display_string('*Waiting For Finger*', 2) print('*Waiting For Finger*') print('') # Wait for finger to be read while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): mylcd.lcd_clear() mylcd.lcd_display_string('Fingerprint Already', 2) mylcd.lcd_display_string(' Exists', 3) print('Fingerprint Already Exists' + str(positionNumber)) print('') time.sleep(2) main_menu() else: mylcd.lcd_clear() mylcd.lcd_display_string(' *Remove Finger*', 2) print('*Remove Finger*') print('') time.sleep(2) mylcd.lcd_clear() mylcd.lcd_display_string('*Place Finger Again*', 2) print('*Place Finger Again*') print('') # waiting for second read while (f.readImage() == False): pass f.convertImage(0X02) if (f.compareCharacteristics() == 0): mylcd.lcd_clear() mylcd.lcd_display_string('Fingers Do Not Match', 2) print('Fingers Do Not Match') print('') time.sleep(2) f.createTemplate() positionNumber = f.storeTemplate() f.loadTemplate(positionNumber, 0X01) characteristics = str( f.downloadCharacteristics(0x01)).encode('utf-8') cre_hash = hashlib.sha256(characteristics).hexdigest() conn = sqlite3.connect('/home/pi/Desktop/beta/employee.db') c = conn.cursor() c.execute( 'INSERT INTO finger_store (employ_num, hashval, id) ' 'VALUES (?,?,?)', (r, cre_hash, positionNumber)) conn.commit() conn.close() mylcd.lcd_clear() mylcd.lcd_display_string(' Fingerprint', 2) mylcd.lcd_display_string(' Registered', 3) print('Fingerprint Registered In Position' + str(positionNumber)) print('') time.sleep(2) admin_menu() except Exception as e: print('Operation failed- Exception message: ' + str(e)) print('') main_menu()