从 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);
我正在使用 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);