首页 > 解决方案 > Android nfcA.transceive(byte[] command),从 ​​nfc 设备获取数据的命令序列是什么?

问题描述

我有几个关于 nfcA 的问题。我正在将 NFC 设备与我的 android 应用程序集成以从设备中获取数据。我成功地使用 nfcA.connect() 连接了 NFC 设备。卡是NXP MIFARE Ultralight。这是我的 NFC 设备信息:

在此处输入图像描述

问题:发送到 nfcA.transceive(byte[] commands) 以从设备获取数据的 byte[] 命令应该是什么。当我尝试使用以下命令阅读页面时:

 byte[] commands = new byte[]{
                    (byte) 0x30,  // READ
                    (byte) 0x04,  // page address
                   };

我成功了,但它只显示空字节(00,00,00,00)。所以,我有一个关于如何获取数据的协议文档。截图如下:

读取数据结构

所以,考虑到这个请求结构,我试着用字节命令盯着

byte[] commands = new byte[]{
                    //NFCCmd
                    (byte) 0x06,

                    //Manufacture Code
                    (byte) 0x39,
                    (byte) 0x02,

                    //Card Identification Number
                    (byte) 0x00,
                    (byte) 0x00,
                    (byte) 0x01,
                    (byte) 0x80,
                    (byte) 0xD9

                    //Number of Service
                    (byte) 0x01,

                    //Service Code
                    (byte) 0x00,
                    (byte) 0x0B,

                    //Cnt
                    (byte) 0x02,

                    //BlockList Commands
                    (byte) 0x06,
                    (byte) 0x02,
                    (byte) 0x10,
                    (byte) 0x40
                  };

问题: ID 由 7 个字节组成,使用 mTag.getId() 或 TagInfo android 应用程序(参考下图)。

当我发送命令时,我得到异常标记丢失。我知道,这是由于无效命令而发生的。考虑到我的设备信息,你能帮我弄清楚什么是正确的字节命令[]序列。(不能使用 Ndef,所以只需要发送原始命令来获取数据)

任何帮助将不胜感激。

标签: androidrequesttagsnfcmifare

解决方案


推荐阅读