if i put 1 card on the reader module i have no problem. it reads and authenticates.
if i put multiple cards (3 or more) randomly things happens; First case, everything ok, it chooses right card and it authenticates, Second case i wait 5 or 7 seconds, and it choose right card (after choose other cards), third case is worst case, it never see my right card. And, in most case this happens.
What i want? Even i put 5 Tags on reader, (for example different purpose rfid cards should be in my wallet) if true tag in read range, my reader should see right card. Even it reads 4 card, eventually must see right card. but some times it never happens. I share my default code;
Can you help me, how can i read and try authenticate multiple tags in while loop? is there a way?
Code: Select all
import RPi.GPIO as GPIO import MFRC522 import signal continue_reading = True # Capture SIGINT for cleanup when the script is aborted def end_read(signal,frame): global continue_reading print "Ctrl+C captured, ending read." continue_reading = False GPIO.cleanup() # Hook the SIGINT signal.signal(signal.SIGINT, end_read) # Create an object of the class MFRC522 MIFAREReader = MFRC522.MFRC522() # Welcome message print "Welcome to the MFRC522 data read example" print "Press Ctrl-C to stop." # This loop keeps checking for chips. If one is near it will get the UID and authenticate while continue_reading: # Scan for cards (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) # If a card is found if status == MIFAREReader.MI_OK: print "Card detected" # Get the UID of the card (status,uid) = MIFAREReader.MFRC522_Anticoll() # If we have the UID, continue if status == MIFAREReader.MI_OK: # Print UID print "Card read UID: %s,%s,%s,%s" % (uid, uid, uid, uid) # This is the default key for authentication key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF] # Select the scanned tag MIFAREReader.MFRC522_SelectTag(uid) # Authenticate status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid) # Check if authenticated if status == MIFAREReader.MI_OK: MIFAREReader.MFRC522_Read(8) MIFAREReader.MFRC522_StopCrypto1() else: print "Authentication error"