您正在使用的库提供的专用方法对MIFARE标签进行读写操作:
StatusCode MIFARE_Read(byte blockAddr, byte *buffer, byte *bufferSize);
StatusCode MIFARE_Write(byte blockAddr, byte *buffer, byte bufferSize);
由于你的描述(部门2块8)建议您使用MIFARE经典标签,你会还需要对标签进行身份验证才能执行读取/写入操作。因此,您还需要验证方法:
StatusCode PCD_Authenticate(byte command, byte blockAddr, MIFARE_Key *key, Uid *uid);
正如你会使用这个库来读取UID
if (mfrc522.PICC_ReadCardSerial()) {
Serial.print(F("Card UID:"));
dump_bytes(mfrc522.uid.uidByte, mfrc522.uid.size);
}
你也可以访问这些读/写方法:
MFRC522::StatusCode status;
MFRC522::MIFARE_Key key;
byte buffer[18];
byte size = sizeof(buffer);
for (byte i = 0; i < MFRC522::MF_KEY_SIZE; ++i) {
key.keyByte[i] = 0xFF;
}
if (mfrc522.PICC_ReadCardSerial()) {
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 8, &key, &(mfrc522.uid));
if (status == MFRC522::STATUS_OK) {
status = mfrc522.MIFARE_Read(8, buffer, &size);
if (status == MFRC522::STATUS_OK) {
Serial.print(F("Data (block = 8): "));
dump_bytes(buffer, 16);
}
}
}
请注意,我假设使用密钥A将块8(=扇区2,块0)设为readbale,并且将密钥A设置为默认传输密钥FF FF FF FF FF FF
。如果您的其他读者更改了这些值,则需要相应地调整代码。此外,我使用伪方法dump_bytes(array, length)
来表示有趣的值是array
的第一个length
字节。实际打印这些值的实现取决于您。
Btw。一个关于如何使用该库进行读/写操作的完整示例实际上与该库一起出货!所以你可以看看ReadAndWrite.ino关于如何使用这个库。
我将使用这个库:https://github.com/miguelbalboa/rfid我还没有尝试过任何东西,因为我还在收集零件。到目前为止,我发现的所有内容都指向阅读UID - 但我只想阅读特定的部门(Sector2 Block8)。我已经有一位作家(ER301和eReader软件),可以将我的信息写入此扇区和区块,并且已经验证了这一点。一旦信息被MFRC和NANO读取,我将使NANO输出与4个数字I/O上的数字相等的二进制数。 – JMortonSalt
此游戏将涉及4个相同的Arduino NANO和MFRC522阅读器。当每人读取游戏片时,它将在4个数字I/O上输出二进制等价物(片段1到8)。这16个总输出将被输入到Arduino MEGA的16个数字I/O中,该输入/输出将跟踪哪些棋子位于4个'位置'(4个NANO设置)。 – JMortonSalt