Android 我想了解NfcV ISO-15639的操作

Android 我想了解NfcV ISO-15639的操作,android,tags,nfc,iso-15693,Android,Tags,Nfc,Iso 15693,我是NFC技术的新手 我很难理解如何操作积木 byte[] cmd = new byte[] { (byte)0x20, //FLAG (byte)0x21, //WRITE SINGLE BLOCK COMMAND (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //UID (byte)0x00, //OFF

我是NFC技术的新手

我很难理解如何操作积木

  byte[] cmd = new byte[] {
     (byte)0x20, //FLAG
     (byte)0x21, //WRITE SINGLE BLOCK COMMAND
     (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //UID
     (byte)0x00, //OFFSET
     (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 //DATA
   };
我对上面代码的问题:

什么是标志及其功能是什么

什么是UID及其功能是什么?在代码中,UID行有8个“索引”,是否可以增大或减小大小?不是代码中的8,而是减少到6或增加到10

什么是偏移量及其功能是什么

在作为数据的注释代码的第6行中,这是我定义块的字节大小的地方吗?在代码中,它有4个索引,这是否意味着块中存储的数据将有4个字节?我可以增加还是减少


让我们假设,我有一个4字节的数据
myData=“ABCD”
,我想将此数据写入我的标记的块04,我将如何根据上面提到的代码执行此操作?

我不是NfcV专家,但以下是我对标记和低级访问的了解

标志
字节的意思是什么未知,但第4.1节有ISO 15693标志含义的详细信息

但其中一个标志表示使用寻址或非寻址模式,这将导致UID

什么是
UID
字节-大多数标记都有序列号或唯一标识符号

在寻址模式下,您必须提供正确的读写卡UID才能成功。这意味着你不会从错误的卡片上写或读。有一个命令首先从卡中读取UID

在未寻址模式下,UID以零形式提供

您已经计算出写入命令的第二个字节是
0x21

读取命令的
0x20

第4.2节详细介绍了ISO 15693命令值,如您所见,这些命令值必须是
可选的
自定义的
和支持,它们的作用取决于芯片

您所说的
偏移量
是内存块相对于第一个块的偏移量,或者更好地描述为内存地址(将其视为书本中的页码)。大多数芯片将内存分割成一定大小的块。有些芯片使用单个字节作为内存地址,有些芯片使用2个字节

每个块都是一组字节数,通常是4个字节,但我见过128个字节的芯片规格

您在问题中给出的数据结构通常用作您试图与之通信的芯片的格式良好的命令模板

示例中的
DATA
4个字节只是您想要写入的实际数据的占位符,您应该在发送命令之前将您想要写入的实际4个字节复制到模板中

因此,当您使用它进行书写时,您必须将
偏移量
/
内存地址
调整为“本书的正确页面”,并将正确数量的“字母”复制到模板的
数据部分

本文末尾可以看到一些芯片制造商为Android编写的NfcV代码示例

最后一个问题
让我们假设,我有一个4字节的数据myData=“ABCD”,我想把这个数据写入标记的块04中

构造命令的示例


//命令模板
字节[]cmd=新字节[]{
(字节)0x20,//标志
(字节)0x21,//写入单块命令
(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00,//UID
(字节)0x00,//偏移量
(字节)0x00,(字节)0x00,(字节)0x00,(字节)0x00//数据
};
//要写入的数据
字符串myData=“ABCD”;
//以字节形式获取数据
byte[]data=myData.getBytes();
//将“偏移”/“块号”更改为第四个块
//如果这就是“第04块”的意思
//地址从零开始,字节数组从零开始
//所以“块号”是命令中的第11个字节
cmd[10]=(字节)((3)和0x0ff);
//将4字节的数据复制到11到15字节
//从数据数组中的字节0开始
数组复制(数据,0,cmd,11,4);

有关
arraycopy
参数的参考信息

一些答案取决于卡中的芯片,您能否提供您正在使用的芯片/卡的详细信息?
支持的技术:
ISO/IEC 15693-3兼容ISO/IEC 15693-2兼容
支持的命令:
单块读/写、多块读/写,获取系统信息、AFI、DSFID
NfcV和NDEFORMATABLE
Hmm更多帮助,如芯片型号,例如“NFC工具”应用程序为我使用的卡提供“NXP MIFARE Ultralight-NTAG216”(其中NTAG216为芯片型号)