如何确定我可以在NTAG216中写入的最大页面?我找不到任何可以让我检查最大可用内存的方法in the documentation。另外根据文件:
接下来的36页是用户读/写区域。
这是否意味着我只能写到第36页?我尝试写到第50页,但没有任何错误。
我使用NFC工具来检查最大内存,但是一旦我从第4页开始写入字节,有关最大内存的数据就变得不可用了。
答案 0 :(得分:3)
如果您知道该标签是NXP NTAG 216 标签,那么您可以通过查看the datasheet来确定标签的大小。数据表告诉您NTAG216标签分为231页,其中第4到225页是用户存储器(即可以自由使用的存储器)。
仔细阅读that documentation。它告诉您" 前4页用于OTP,制造商数据和锁定位"。那个" 接下来的36页是用户读/写区域。"因此,这意味着用户存储器的页面编号为4到40(= 4 + 36)。但是,文档还明确指出,这仅适用于 MIFARE Ultralight C ( MF0ICU2 ),这是一种完全不同的标记类型。
您可以使用GET_VERSION命令来检查这一点。如果GET_VERSION命令成功并指示NTAG216的特征版本信息,则可以假定该标记实际上是NTAG216标记。
byte[] GET_VERSION = new byte[] { (byte)0x60 };
byte[] result = nfca.transceive(GET_VERSION);
if ((result != null) && (result.length == 8)) {
// GET_VERSION command successful
if ((result[0] == 0) && (result[1] == (byte)0x04) && (result[2] == (byte)0x04)) {
// tag is NTAG
if ((result[3] == (byte)0x02) && (result[4] == (byte)0x01) && (result[5] == (byte)0x00) && (result[7] == (byte)0x03)) {
if (result[6] == (byte)0x13) {
// tag is NTAG216
} else if (result[6] == (byte)0x11) {
// tag is NTAG215
} else if (result[6] == (byte)0x0F) {
// tag is NTAG213
}
}
}
}