android - 有没有办法使用自定义 NFC-V 命令?
问题描述
我正在使用带有 RF430FRL 15xH IC 的传感器,我计划通过 NFC 从中获取数据。有没有办法编写和激活自定义 NFC 代码?
我已经为 SINGLE READ (0xC0) 和 MULTIPLE READ (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,
};
解决方案
您的命令似乎完全搞砸了。0xC0 是 CUSTOM READ SINGLE BLOCK 的代码,但您使用的参数表明您想要读取多个块。此外,用户手册建议块号的有效范围是 0x600 - 0xA00,因此您的块号 0x0E0 似乎超出范围。此外,块数可能仅在 0-2/0-5 范围内,具体取决于标签配置。最后,您可能希望在 Android 上使用寻址命令(因为某些设备似乎存在未寻址形式的问题)。CUSTOM READ MULTIPLE BLOCKS 命令可能如下所示:
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();
推荐阅读
- graph - 如果只在图中添加一条边,是否可以增加 scc、“强连通分量”的数量?
- python - 如果最后一个打开的图形已关闭,如何使 plt.pause() 工作
- hyperledger-fabric - 无法在我的网络上使用 Node SDK + Mutual TLS 操作
- mongodb - 什么是 mongodb 中的 IP 绑定?
- java - 日期检查器不工作 - 假阴性
- c++ - 在 C++ 中为特定哈希表创建插入函数
- html - 带有启动和停止效果的 React Js 中的 Marquee
- python - 执行并自动将所有错误消息存储到文件中
- python - Python Kmeans 可视化(高维)
- arrays - 表单中插入行的默认单元格值