从 NDEF 消息中提取有效载荷

Extract payload from NDEF message

我正在使用 Arduino UNO 和 PN532 NFC 模块从 Android phone.

接收 P2P NDEF 消息

我正在发送明文字符串“Hello”。传输成功后,我在我的 Arduino 上得到了这个: image

如何提取字符串“Hello”(我认为它前面的数字对是十六进制的“Hello”,“text/plain”类型指示、类型长度和有效负载长度也是如此)从 NDEF 消息有效负载到常规变量?

这是我的 Arduino 代码:

// Receive a NDEF message from a Peer
// Requires SPI. Tested with Seeed Studio NFC Shield v2

#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];

void setup() {
  Serial.begin(9600);
  Serial.println("NFC Peer to Peer Example - Receive Message");
}

void loop() {
  Serial.println("Waiting for message from Peer");
  //string payload = nfc.read();
  int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
      NdefMessage msg  = NdefMessage(ndefBuf, msgSize);
      msg.print();
}

一个NdefMessage由多个NdefRecord项组成,您msg有1条记录

所以应该这样做(未测试)

// Get the first record
NdefRecord record = msg.getRecord(0);
// Get the payload size
byte length = record.getPayloadLength();
// Create byte array big enough for payload
byte payload[length];
// Get payload to byte array
record.getPayload(payload);
// Convert byte Array to string
String string = String((char *)payload);