MFRC522 RFID Reader mit Micropython

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Sirius3
User
Beiträge: 14430
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 12. April 2021, 07:52

@whiterabbit: Du kannst nicht einfach die uid auf mehr Bytes erweitern, die ist und bleibt 32bit, jedenfalls in Deiner Implementierung. Und zum Lesen der ID braucht man auch keine Authentifizierung, wie in dem Write-Beispiel. Denn da ist ja die entscheidende Zeile auch die Zeile 24.

Ich hab nochmal nachgelesen, es gibt 32Bit, 56Bit und 80Bit UIDs. Es scheint aber in den Beispielen zu Python keine Beispiele zu geben, die etwas anderes Lesen als 32bit.
__deets__
User
Beiträge: 9690
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 12. April 2021, 08:43

whiterabbit hat geschrieben:
Montag 12. April 2021, 07:17
Ok, bei write.py wird ja auch diese Zeile geschrieben:
stat = rdr.write(8, b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f")
während bei read.py nur diese Zeile gelesen wird:
uid = ("0x %02x %02x %02x %02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print(uid)

Ich habe da schon versucht, diese Einträge mit %02x und raw_uid[ ] bis 7 zu erweitern -- hat bisher nicht funktioniert. Das müsste aber die Stelle sein, um die es geht?
Nein, das ist NICHT die Stelle, um die es geht. Das ist schon die Stelle die ich markiert habe, und die kommt doch sehr offensichtlich nach der äquavilenten Stelle, an der in beiden Programmen erstmal die ID geholt wird.

An der Stelle, wo write steht, muss eben read rein. Auch mit Angabe der Adresse des Blockes. Ohne Angabe der zu schreibenden Daten natürlich. Das diese Methode existiert, kann man dem Code des MFRC522-Klasse entnehmen.
whiterabbit
User
Beiträge: 5
Registriert: Samstag 10. April 2021, 15:32

Montag 12. April 2021, 13:12

Sirius3 hat geschrieben:
Montag 12. April 2021, 07:52
Ich hab nochmal nachgelesen, es gibt 32Bit, 56Bit und 80Bit UIDs. Es scheint aber in den Beispielen zu Python keine Beispiele zu geben, die etwas anderes Lesen als 32bit.
Ok, dann wird auch klar, warum das unterschiedlich gehandhabt wird :wink: . Alle RFID-Tags, die ich hier habe, sind Mifare-Aufkleber, -Schlüsselanhänger, -Karten. Bei denen war es bisher immer so, dass die UIDs 56 Bit lang waren. Ich denke, dass das hardwareseitig so vorgegeben ist und nicht (ohne weiteres) verändert werden kann, so dass ich für meine Versuche die 56 Bit UID auslesen können müsste, um sie eindeutig erfassen zu können, richtig?

Was die Veränderung des Codes angeht: Da bin ich leider (noch?) nicht weit genug drin, um die notwendigen Änderungen überblicken zu können. Dabei gefällt mir micropython bisher wirklich gut.
__deets__
User
Beiträge: 9690
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 12. April 2021, 15:01

Laut spec ist das nicht änderbar, nein. Der jetzige Code kann damit nicht umgehen. Das ist nicht schwer dem das beizubringen, weil das am Ende einfach Daten des ersten Blocks im ersten Sektor sind. Aber man muss sich in die Spec einarbeiten. Und es natürlich programmieren.
Antworten