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)
示例#2
0
## 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)
class FingerprintController:

    f = None
    RESULT_ERROR = -1
    RESULT_TEMPLATE_ALREADY_EXISTS = -2
    RESULT_FINGER_DO_NOT_MATCH = -3
    RESULT_NO_MATCH = -4

    def __init__(self):
        try:
            self.f = PyFingerprint('/dev/ttyS0', 57600, 0xFFFFFFFF, 0x00000000)
            if self.f.verifyPassword() == False:
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')
        except Exception as e:
            logger.exception(
                'The fingerprint sensor could not be initialized!')

    def __del__(self):
        del self.f

    def exists_user(self, username):
        return models.exists_user(username, models.session_factory())

    def add_user_step1(self):
        try:
            print('Waiting for finger...')

            ## Wait that finger is read
            while self.f.readImage() == False:
                pass

            ## Converts read image to characteristics and stores it in charbuffer 1
            self.f.convertImage(0x01)

            ## Checks if finger is already enrolled
            result = self.f.searchTemplate()
            positionNumber = result[0]

            if positionNumber >= 0:
                logger.warn('Template already exists at position #{}',
                            str(positionNumber))
                return self.RESULT_TEMPLATE_ALREADY_EXISTS

            return 0

        except Exception as e:
            logger.exception('Error while adding a user (step1).')
            return self.RESULT_ERROR

    def add_user_step2(self, username):
        try:
            print('Waiting for finger...')

            ## Wait that finger is read again
            while self.f.readImage() == False:
                pass

            ## Converts read image to characteristics and stores it in charbuffer 2
            self.f.convertImage(0x02)

            ## Compares the charbuffers
            if self.f.compareCharacteristics() == 0:
                return self.RESULT_FINGER_DO_NOT_MATCH

            ## Creates a template
            self.f.createTemplate()

            ## Saves template at new position number
            template_index = self.f.storeTemplate()
            logger.info(
                'Finger enrolled successfully. New template position #{}',
                str(template_index))

            ## save user in DB
            models.add_user(username, template_index, models.session_factory())
            return 0

        except Exception as e:
            logger.exception('Error while adding a user (step2).')
            return self.RESULT_ERROR

    def delete_user(self, username):
        user = models.get_user_by_name(username, models.session_factory())
        if None == user:
            logger.info('User \"{}\" does not exists and can not be deleted.',
                        username)
            return
        position = user.template
        models.delete_user(username, models.session_factory())
        self.f.deleteTemplate(position)
        logger.info('User \"{}\" with template position #{} deleted.',
                    username, str(position))

    def search_user(self):
        try:
            logger.info('Waiting for finger...')

            ## Wait that finger is read
            while self.f.readImage() == False:
                pass

            ## Converts read image to characteristics and stores it in charbuffer 1
            self.f.convertImage(0x01)

            ## Searchs template
            result = self.f.searchTemplate()

            positionNumber = result[0]
            accuracyScore = result[1]

            if positionNumber == -1:
                logger.warn('No fingerprint match found')
                return self.RESULT_NO_MATCH
            else:
                logger.info(
                    'Found template at position #{} with accuracy score of {}',
                    str(positionNumber), str(accuracyScore))
                return positionNumber

        except Exception as e:
            logger.exception(
                'Error while searching for a fingerprint template.')
            return self.RESULT_ERROR

    def delete_database(self):
        self.f.deleteDatabase()
示例#4
0
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!')
    print('Exception message: ' + str(e))
    exit(1)'''