:)我有一个自己无法解决的问题(我在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')
答案 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