在指纹传感器PYTHON上无输入15秒后退出指纹程序

时间:2019-01-24 16:22:36

标签: python time fingerprint

:)我有一个自己无法解决的问题(我在time.time()上做了很多尝试,但从未解决过我的问题)。 如果15秒过去了,我希望程序退出并停止等待手指。如果有人知道如何用python来做,我将非常高兴和感激! 非常感谢你!问我有没有问题!代码在下面!

import sys
import os
sys.path.insert(0, '/home/pi/scripts')
import subprocess
import lcddriver
from time import *


lcd = lcddriver.lcd()
lcd.lcd_clear()

import hashlib
from pyfingerprint.pyfingerprint import PyFingerprint


## 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:
lcd.lcd_display_string('Initialization failed!', 2)
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:
 f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

if ( f.verifyPassword() == False ):
    raise ValueError('The given fingerprint sensor password is wrong!')

except Exception as e:
lcd.lcd_display_string('Initialization failed!', 2)
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:
lcd.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 ):

    os.system('python access_denied.py')
    exit(0)
 else:
    lcd.lcd_clear()
    lcd.lcd_display_string("  Finger accepted!", 2)
    sleep(1.5)
    lcd.lcd_clear()
    os.system('python keypad.py')

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

timeout = time.time() + 15 # 15s from now
while True:
   # do stuff
    end_time = time.time()
    if end_time > timeout or f.readImage():
        break
    else:
        time.sleep(0.25) # sleep to reduce CPU usage

答案 1 :(得分:0)

您是否尝试过启动线程以保持时间计数并在设置的时间后关闭程序?读取指纹后,程序将在线程关闭程序之前关闭线程。 我个人对多线程的一般知识没有太多经验,所以我不完全知道如何应用此方法,但是showld可以帮助您https://www.tutorialspoint.com/python/python_multithreading.htm