Я попробовал другой подход, следуя инструкциям на raspberrypi-spy.co.uk / 2018/02 / rc522-rfid-tag-read-raspberry-pi с использованием библиотеки github.ком / mxgxw / MFRC522-питон .Выходной UID, использующий эту библиотеку для имеющегося у меня тега:
Card read UID: 86,209,188,187
В то время как выходной UID считывателя GIGATEK MF7 с тем же тегом:
hex: BBBCD156
dec: 3149713750
ЗАКЛЮЧЕНИЕ11. 7. 2019 Вывод с использованием библиотеки MFRC522-python
правильный, но перевернут и не в правильном числовом формате:
BB BC D1 56 = 187 188 209 86
Поэтому я изменил скрипт чтения UID тега Read.py
, которыйпоставляется с файлами библиотеки, чтобы преобразовать вывод в десятичное число, как я хотел:
86 209 188 187 -> 56 D1 BC BB -> 3149713750
Рабочий скрипт:
def Read_Bag_Tag(self):
# read with MFRC522 on GPIO
# define variables
global value_rfid_2, reply_rfid_2, bag_tag, refTime
# assign values
refTime = datetime.now()
# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()
# read port
while int((datetime.now()-refTime).seconds) < 5:
# 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 "bag tag UID: %s,%s,%s,%s" % (uid[0], uid[1], uid[2], uid[3])
bag_tag_endian = (uid[3], uid[2], uid[1], uid[0])
print 'bag tag endian:', bag_tag_endian
bag_tag_hex = hex(uid[3]), hex(uid[2]), hex(uid[1]), hex(uid[0])
print 'bag tag hex:', bag_tag_hex
bag_tag_str = str(hex(uid[3])[2:]), str(hex(uid[2])[2:]), str(hex(uid[1])[2:]), str(hex(uid[0])[2:])
print "bag tag hex string:", bag_tag_str
bag_tag_str = str(hex(uid[3])[2:])+str(hex(uid[2])[2:])+str(hex(uid[1])[2:])+str(hex(uid[0])[2:])
print "bag tag hex string concatenated:", bag_tag_str
bag_tag = int(bag_tag_str, 16)
print 'bag tag dec:', bag_tag
# 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"
GPIO.cleanup() # Clear input buffer
time.sleep(0.1)
return bag_tag