我正在使用带有RF430FRL 15xH IC的传感器,我打算从中通过NFC获取数据。有没有办法编写和激活自定义NFC代码?
我尝试了针对单读(0xC0)和多读(0xC3)的自定义16位命令。 NFC数据检索仍然没有扩展。我尝试了以下代码:
cmd = new byte[]{
(byte)0x00, //Protocol_Extension_flag=1 //
(byte)0xC0, //READ multiple blocks
(byte)0x07,
(byte)0xE0, // First block (offset)
(byte)0x00, // Number of blocks
(byte)0x06,
};
答案 0 :(得分:1)
您的命令似乎完全混乱了。 0xC0是“自定义读取单个块”的代码,但是您使用的参数建议您要读取多个块。此外,user manual建议块号的有效范围是0x600-0xA00,因此您的块号0x0E0似乎超出范围。同样,根据标签配置,块的数量只能在0-2 / 0-5的范围内。最后,您可能想在Android上使用寻址命令(因为某些设备似乎存在未寻址形式的问题)。自定义读取多个块命令可能看起来像这样:
NfcV nfcV = NfcV.get(tag);
nfcV.connect();
byte[] tagUid = tag.getId(); // store tag UID for use in addressed commands
int blockAddress = 0x0600;
int numberOfBlocks = 2;
byte[] cmd = new byte[] {
(byte)0x20, // FLAGS (addressed)
(byte)0xC3, // CUSTOM_READ_MULTIPLE_BLOCKS
(byte)0x07, // MANUFACTURER CODE (TI)
0, 0, 0, 0, 0, 0, 0, 0, // Placeholder for UID (address), filled by arraycopy below
(byte)(blockAddress & 0x0ff),
(byte)((blockAddress >>> 8) & 0x0ff),
(byte)(numberOfBlocks & 0x0ff),
};
System.arraycopy(tagUid, 0, cmd, 3, 8);
byte[] response = nfcV.transceive(cmd);
nfcV.close();