问题描述
我在 1k mifare Classic 卡上添加了一个 390 个字符长的文本记录,我可以写 它成功了,但读取时记录为空。一世 将 NDEF 库与 PN532 和 Ardunio uno 一起使用。
我的代码:
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_I2C pn532_i2c(Wire);
NfcAdapter nfc = NfcAdapter(pn532_i2c);
void setup()
{
Serial.begin(115200);
Serial.println("Serial Start");
nfc.begin();
Serial.println("NFC Start");
}
void loop()
{
if (nfc.tagPresent()) {
NfcTag tag = nfc.read();
tag.print();
}
if (nfc.tagPresent()) {
NdefMessage message = NdefMessage();
message.addTextRecord("denemedenemedenemedenemedenemedenemedenemedenemedenemedenemedenemedenemedenemedenemeden");
bool success = nfc.write(message);
if (success)
{
Serial.println("Write Success");
}
else
{
Serial.println("Error");
}
}
}
我使用了 here 所示的示例,但它不起作用。
解决方法
您将文本“记录”添加到标签中的代码是正确的。然而,从标签中读取的消息负载却不是。到达“记录”需要更多时间。 nfc.read()
返回一个标签对象,该对象由一个消息对象组成,该对象可以由多条记录组成,并且在每条记录中,它具有有效负载长度和有效负载(即您添加的文本节点),需要进行一些解析获取您写入其中的数据。
请注意,数据存储时带有前缀,表示用于记录编码的字符集,我添加了丢弃前缀的代码,记录存储在byte
中,需要强制转换为{ {1}} 在 char
之前。
Serial.print()