Guten Abend zusammen. Ich stöber gerade durch den Code zum Lesen der RFID Tags. Kann mir einer folgendes Erklären:
Bei einem MIFARE MINI sieht der Readbefehl wie folgt aus. Der komplette Buffer wird über einen Read gefüllt. buffer hat 18 byte. Super einfach. Fertig.
rfid::status = (MFRC522::StatusCode)mfrc522.MIFARE_Read(rfid::blockAddr, buffer, &size);
Beim MIFARE UL hingegen iteriert der Code über diverse blockAddressen beginnend bei 8 bis 11, liest dabei immer einen kompletten buffer2 (18 Byte), übernimmt dann aber immer nur die ersten 4 Byte in den Buffer.
else if (piccType == MFRC522::PICC_TYPE_MIFARE_UL )
{
byte buffer2[18];
byte size2 = sizeof(buffer2);rfid::status = (MFRC522::StatusCode)mfrc522.MIFARE_Read(8, buffer2, &size2); if (rfid::status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read_1() failed: ")); Serial.println(mfrc522.GetStatusCodeName(rfid::status)); return false; } memcpy(buffer, buffer2, 4); rfid::status = (MFRC522::StatusCode)mfrc522.MIFARE_Read(9, buffer2, &size2); if (rfid::status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read_2() failed: ")); Serial.println(mfrc522.GetStatusCodeName(rfid::status)); return false; } memcpy(buffer + 4, buffer2, 4);
usw. bis 11.
Das wirkt auf den ersten Blick super umständlich. Ich bin mir sicher, es hat einen Grund. Würde es gerne verstehen.
MfG, Nick