2012-10-08 34 views
2

我收到一个“标签丢失”异常,代码如下。但是,尽管有例外,但数据仍可成功写入。即使抛出异常,为什么成功写入数据?为什么NFC标签数据写成功?带标签丢失异常

nfc.connect(); 
    byte[] arrByt = new byte[7]; 
    arrByt[0] = 0x01; //Command Flag 0x02 works fine 
    arrByt[1] = 0x21; 
    arrByt[2] = 0x06; 
    arrByt[3] = 0x00; 
    arrByt[4] = 0x00; 
    arrByt[5] = 0x00; 
    arrByt[6] = 0x00;   
    byte[] response = nfc.transceive(arrByt); 

我的NFC芯片

Type V (ISO/IEC 15693/Vicinity), Tag Type SL2 ICS2001 (ICODE SLI), Manufacturer NXP Semiconductors (Germany) 

here talked over 但没有结果:(

回答

3

当NfcV标签返回非成功代码Android的NFC堆栈假定它是一个例外,它抛出“标签被丢失“
为避免此异常,您可以使用命令0x02,并将适当的字节数组变为:
arrByte = {0x02,0x21,0x06, 0x00,0x00,0x00,0x00};其中0x02是标志命令,0x21是写入单个块命令,0x06是块编号,剩余量是4字节数据。希望这会有所帮助。

+0

Imran - 很好的建议,除了ISO15693标签需要使用选项标志进行写入和锁定操作,然后需要发送EOF一段时间后发送出去以获得无错误响应来自标签。 (TI和其他制造商使用此方法 - 在ISO标准中允许使用这两种方法(带和不带选项标志))已经使用Nexus 4/Nexus 10及更高版本中的最新NFC堆栈进行了修复,但它们应该是一些努力可能是在这里使用旧版本的NFC NFC堆栈,以便在不丢帧的情况下进行写作。 –

+0

对不起@ImranZulfiqar,我有点困惑。我需要发送命令'0x80,0x44,...'到NFC标签,但我得到这个例外。那么我是先发送'0x02,0x21,...'然后我的命令还是什么? – ericn