0

サンプル コードを使用して、MIFARE Ultralight から読み取り、MIFARE Classic に書き込みます。.h ファイルの定義を使用します。

#define PN532_RESPONSE_INDATAEXCHANGE       (0x41)
#define MIFARE_CMD_WRITE                    (0xA0)

しかし、以下のコードを実行すると:

/**************************************************************************/
uint8_t PN532::mifareultralight_WritePage (uint8_t page, uint8_t *buffer1)
{
    /* Prepare the first command */
    pn532_packetbuffer[0] = PN532_COMMAND_INDATAEXCHANGE;
    pn532_packetbuffer[1] = 1;                      /* Card number */
    pn532_packetbuffer[2] = MIFARE_CMD_WRITE;       /* Mifare Write command = 0xA0 */
    pn532_packetbuffer[3] = page;                   /* Page Number (0..63 in most cases) */
    memcpy (pn532_packetbuffer + 4, buffer1, 4);        /* Data Payload */

    /* Send the command */
    if (HAL(writeCommand)(pn532_packetbuffer, 8)) {
        Serial.println(F("Go here 1"));
        return 0;
    }
    Serial.println(F("Go here 2"));
    /* Read the response packet */
    return (0 < HAL(readResponse)(pn532_packetbuffer, sizeof(pn532_packetbuffer)));
}

結果は次のようになります。

Scan a NFC tag

write:  4A 1 0
read:   4B 1 1 0 44 0 7 4 C1 37 CA 2C 2C 80
ATQA: 0x 44SAK: 0x 0
Writing Mifare Ultralight
write:  40 1 30 4
read:   41 0 2 0 0 10 0 6 1 10 11 FF 0 0 0 0 0 0
write:  40 1 30 3
read:   41 0 0 0 0 0 2 0 0 10 0 6 1 10 11 FF 0 0
Tag capacity 0 bytes
write:  40 1 A0 5 1 2 3 4
Go here 2
Write failed 0

「Go here 1」には入りません。リーダーへの書き込みコマンドがないことを意味しますが、その理由は誰にもわかりませんか?

4

1 に答える 1