Code bloquant comment le contourner?
Bonjour, j'ai un programme qui détecte un mouvement avec un détecteur PIR. Lors de la détection, je lance un fonction de lecture sur une antenne RFID. Si la personne possède une carte RFID valide tout va bien. Je n'ai pas mis tout le code, car je vais vérifier dans une base de donnée, mais ce n'est pas utile pour mon problème. Le problème est que si la personne est détecté avec le détecteur PIR et qu'elle n'a pas de carte RFID, la fonction lire attend la lecture d'une carte RFID. J'aimerais savoir comment je peux contourner ce problème de fonction qui bloque. j'aimerais que si il y a détection avec le PIR et que la personne n'a pas de RFID, que le programme continue avec exemple allumer une lumière rouge. J'espère être asser clair dans ma question. Voici le code simplifié. J'ai besoin de savoir si il y a une fonction ou un truc quelconque qui permettrais d'empêcher la fonction de bloquer en attendant la lecture d'une carte RFID. Merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
CardReader = SimpleMFRC522()
print ('Scanning for a card..')
print ('to cancel press ctrl+c')
def lire():
try:
id, text = CardReader.read()
print (id)
print(text)
except KeyboardInterrupt:
print("arret clavier")
finally:
GPIO.cleanup()
def detection():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.IN) #Read output from PIR motion sensor
GPIO.setup(3, GPIO.OUT) #LED output pin
i=GPIO.input(11)
if i==0: #When output from motion sensor is LOW
print("No intruders"),i
GPIO.output(3, 0) #Turn OFF LED
time.sleep(0.1)
elif i==1: #When output from motion sensor is HIGH
print("Intruder detected"),i
GPIO.output(3, 1) #Turn ON LED
lire()
time.sleep(0.1)
while True:
detection() |