Android 安卓NfcV(ISO 15693)标签

Android 安卓NfcV(ISO 15693)标签,android,nfc,iso-15693,Android,Nfc,Iso 15693,是否可以将数据写入NfcV ISO 15693标记上内存中的特定块?例如,将数据写入块5或任何特定块 我是NFC技术的新手。我正在创建一个应用程序来读/写NfcV ISO 15693标记。我已经成功地创建了阅读部分,但问题在于写作部分。当我想将一些文本数据写入标记时,它从块2开始,然后每次都执行相同的过程。我已经搜索了很多,但我找不到任何将数据写入特定块的解决方案。确切的细节取决于标签中是哪个兼容ISO 15693的芯片。ISO 15693-3标准列出了不同的写入命令。对这些的支持都是可选的,因

是否可以将数据写入NfcV ISO 15693标记上内存中的特定块?例如,将数据写入块5或任何特定块


我是NFC技术的新手。我正在创建一个应用程序来读/写NfcV ISO 15693标记。我已经成功地创建了阅读部分,但问题在于写作部分。当我想将一些文本数据写入标记时,它从块2开始,然后每次都执行相同的过程。我已经搜索了很多,但我找不到任何将数据写入特定块的解决方案。

确切的细节取决于标签中是哪个兼容ISO 15693的芯片。ISO 15693-3标准列出了不同的写入命令。对这些的支持都是可选的,因此您的标记可能支持其中一个或多个,甚至可以使用专有命令来写入数据。我建议查阅芯片数据表和/或获取ISO标准,以找出正确的命令

一旦知道正确的命令是什么,就可以简单地将字节数组中的命令字节传递给NfcV.transceive方法。通常,命令字节由标志字节、写入命令字节、一个或多个块字节以及要写入的数据字节组成

尝试了以下操作:获取标记丢失异常:


我猜android框架不能很好地处理来自ISO15693标签的响应。我一直在玩HF-I标签。很少有命令能够完美工作,NFC堆栈也很少会抛出TAG Lost异常。

感谢您的回复。我必须使用spinet代码读取数据。字节[]数据=nfcV.transceivenew字节[]{0,32,block};其中0是标志,32是读取命令,block是块编号,我想读取数据。这是做得很好,但我的问题是写入数据到特定的块,请给我写的方向,我如何才能做到这一点?这是真的不可能告诉不知道哪个芯片是在标签。您可能需要尝试ISO 15693中的写入块或写入多个块命令。这是我的NfcV ISO 15693标记信息。UID E0040110003156650,射频技术类型V ISO/IEC 15693/邻近,标签类型SL2 ICS2001 ICODE SLI,制造商NXP Semiconductors Germany,应用程序系列标识符AFI所有系列和子系列,AFI数字00,DSF Id 00,响应标志00,IC参考01,目标技术类别Android.nfc.tech.NfcV,Android.nfc.tech.ndeformatable然后标准写块命令是您应该使用的命令,请参阅的第11页。@LastWarrior 0xA2不是ISO 15693写块命令字节,但它是MIFARE Ultralight和nfc Forum Type 2标记写命令。正确的命令字节为0x21。它前面需要有标志字节。该字节的确切值取决于您使用的是选定模式还是寻址模式。它使用标志字节0x01写入,但也会抛出异常TagLost
        nfc.connect();
        byte[] arrByt = new byte[7];
        arrByt[0] = 0x40;
        arrByt[1] = 0x21;
        arrByt[2] = 0x06;
        arrByt[3] = 0x00;
        arrByt[4] = 0x00;
        arrByt[5] = 0x00;
        arrByt[6] = 0x00;           
        byte[] response = nfc.transceive(arrByt);