IsoDep.transceive(命令)以[110,0]字节响应?

时间:2014-12-10 14:17:55

标签: java android nfc apdu ndef

我使用已发现NFC技术的ISO,NFCA and NDEF标记。有从芯片读取的信息,我尝试访问memory,但我用commands的大多数TAG响应[110, 0]个字节。我找不到这是什么意思,其中一些回复[109, 0][106, -122]。通常是[110, 0]。这些数据存储在标准NDEF内容之外。

我找不到有关此类响应的任何信息,可能是一种错误。也许我误解了IsoDep协议,但它看起来很简单:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep iso = IsoDep.get(tag);

byte[] mMaster = iso.transceive(CommandFactory.GET_MASTER_APP);
byte[] mApplciation = iso
                .transceive(CommandFactory.SELECT_APPLICATION);

AFAIK它是无国籍的'协议,所以不需要按特定顺序发送命令?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果Android为标签显示NfcA + IsoDep + Ndef标签技术,则表示该标签是NFC论坛类型4标签。请注意,与Type 4标签的通信根本不是无状态的。标签包含符合ISO / IEC 7816-4的文件系统结构,因此您首先必须选择NDEF标签应用程序("目录"),然后 - 在该应用程序中 - 选择一个文件(例如功能容器或NDEF数据文件),然后您可以对该文件执行读/写操作。

您在响应命令时看到的内容APDU(APDU是ISO / IEC 7816-4中定义的应用程序协议数据单元,以及您通过ISO-DEP使用Type 4标签所说的内容)是包含的响应APDU一个状态字。在您的情况下,状态字是

  • [110,0]或无符号十六进制6E 00:不支持命令类
  • [109,0]或无符号十六进制6D 00:不支持指令代码
  • [106,-112]或无符号十六进制6A 90:这是一个奇怪的(和非标准的)状态代码。典型的代码是6A 82([106,-126]),这意味着找不到文件或应用程序。