Arduino NFC 读取 NDEF 消息

Arduino NFC Reading NDEF Message

我正在尝试读取从 arduino 到 arduino 的 ndef 消息。当我尝试从 android phone 读取该 ndef 消息时,它读起来很好。但是当我用 arduino 阅读时,会发生如下错误:

Unknown TLV 1
Error. Can't decode message length.
NFC Tag - ERROR
UID 08 11 22 43

No NDEF Message

我使用 pn532 和我的 arduino 代码:

#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_SPI pn532spi(SPI, 10);
NfcAdapter nfc = NfcAdapter(pn532spi);

void setup(void) {
    Serial.begin(9600);
    Serial.println("NDEF Reader");
    nfc.begin();
}

void loop(void) {
    Serial.println("\nScan a NFC tag\n");
    if (nfc.tagPresent())
    {
        NfcTag tag = nfc.read();
        tag.print();
    }
    delay(1000);
}

问题是什么?谢谢。

从智能手机获取信息 下面的程序用于从 Android 应用程序获取信息。

要使其正常工作,您必须首先激活 NFC 功能和 Android 光束数据交换。

然后,将智能手机带到 NFC shield ...

#include "SPI.h"
#include "PN532_SPI.h"
#include "snep.h"
#include "NdefMessage.h"
 
PN532_SPI pn532spi(SPI, 10);
SNEP nfc(pn532spi);
uint8_t ndefBuf[128];
uint8_t recordBuf[128];
 
void setup()
{
    Serial.begin(115200);
}
 
void loop()
{
    Serial.println("Attente d'un message d'un Android");
    int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
    if (msgSize > 0) {
        NdefMessage msg  = NdefMessage(ndefBuf, msgSize);
        Serial.println("\nSucces");
        NdefRecord record = msg.getRecord(0);
        int recordLength = record.getPayloadLength();
        if (recordLength <= sizeof(recordBuf)) {
            record.getPayload(recordBuf);
            Serial.write(recordBuf, recordLength);
            for (int i = 0; i < 5; i++) {
                Serial.write('\n');
            }
            delay(2000);
        }
    } else {
        Serial.println("Echec");
    }
    delay(1000);
}

你能试试这个解决方案吗?请告诉我。

阅读更多: https://arduino.blaisepascal.fr/nfc/