当前位置: 首页 > 知识库问答 >
问题:

Android NFC读取ISO15693 RFID标签

秦昊穹
2023-03-14

我正在尝试使用nfc android库读取ISO15693 RFID标签

有关该标签的更多信息如下:http://img42.com/gw07d+

// initialize NFC
    nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    nfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,   this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction()) || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {

        currentTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        byte[] id = currentTag.getId();
        Tag_data_TextDisplay.setText("TagId:" + Common.getHexString(id));

        for (String tech : currentTag.getTechList()) {

            if (tech.equals(NfcV.class.getName())) {
                NfcV nfcvTag = NfcV.get(currentTag);

                try {
                    nfcvTag.connect();
                    txtType.setText("Hello NFC!");
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "Could not open a connection!", Toast.LENGTH_SHORT).show();
                    return;
                }

                try {
                    byte[] cmd = new byte[]{
                            (byte) 0x00, // Flags
                            (byte) 0x23, // Command: Read multiple blocks
                            (byte) 0x00, // First block (offset)
                            (byte) 0x04  // Number of blocks
                    };
                    byte[] userdata = nfcvTag.transceive(cmd);

                    userdata = Arrays.copyOfRange(userdata, 0, 32);
                    txtWrite.setText("DATA:" + Common.getHexString(userdata));

                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "An error occurred while reading!", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
        }
    }

共有1个答案

樊桐
2023-03-14

因此您可以从transcive方法接收{0x02}值。正如在这个线程中所发现的,当您使用未寻址的命令时,可能会发生这种情况。因此,您应该始终通过NFCV发送寻址命令(Android设备上的所有NFC芯片组似乎都支持这一点)。在您的示例中,可以使用类似于以下内容来生成addressed READ MULTIPLE BLOCKS命令:

int offset = 0;  // offset of first block to read
int blocks = 1;  // number of blocks to read
byte[] cmd = new byte[]{
        (byte)0x60,                  // flags: addressed (= UID field present)
        (byte)0x23,                  // command: READ MULTIPLE BLOCKS
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,  // placeholder for tag UID
        (byte)(offset & 0x0ff),      // first block number
        (byte)((blocks - 1) & 0x0ff) // number of blocks (-1 as 0x00 means one block)
};
System.arraycopy(id, 0, cmd, 2, 8);
byte[] response = nfcvTag.transceive(cmd);
 类似资料:
  • 读取文件已支持 windows 系统,版本号大于等于 1.3.4.1; 扩展版本大于等于 1.2.7; PECL 安装时将会提示是否开启读取功能,请键入 yes; 编译 编译时需添加 --enable-reader ./configure --enable-reader 示例一 $config = ['path' => './tests']; $excel = new \Vtiful\

  • 问题内容: 我想拥有一个从MP3文件读取元数据的程序。我的程序还应该能够编辑这些元数据。我能做什么? 我必须搜索一些开源代码。但是他们有代码;但不是简化工作的想法。 当我进一步阅读时,发现元数据存储在MP3文件本身中。但是我还不能完全了解我的婴儿计划。 任何帮助将不胜感激; 一个程序或一个非常主意(例如算法)。:) 问题答案: mp3文件的最后128个字节包含有关mp3文件的元数据。,您可以编写一

  • 我有一个应用程序可以读取一个NDEF标签,没什么大不了的:-) 我找到了这个链接:如何发现NFC标签是否还在Android的范围内?什么是一个开始,但我不知道如何更新标签。 我很挣扎,我甚至不知道我尝试做的事情在技术上是否可行。 有没有人知道怎么做的?干杯 对不起,我试着看了一些教程和例子,但我还是不明白。 这是我的全部密码。读取标签需要长得多的时间,有时并不需要。我不知道如何和在哪里更新标签,以

  • 我想准备两个作业在同一个jenkins服务器,将读取从一个特定的分支。我必须使用git标签为其中一个作业,以某种方式将它们分开。 拜托,你能用git标签在jenkins中粘贴一些包含作业触发器的代码吗?

  • 问题内容: 我正在通过FileReader读取文件-该文件已经过UTF-8解码(使用BOM),现在的问题是:我读取了文件并输出了字符串,但可悲的是BOM表标记也被输出了。为什么会这样? 第一行后输出 问题答案: http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html

  • 问题内容: 我有一个应该调用ruby脚本的go程序。 我有一个功能: 我这样调用它: 它适用于大多数情况,除非子进程中有一个或任何类似的操作需要暂停输入。 我已经尝试设置,但是它不等待输入。 我究竟做错了什么? 问题答案: 下面的程序好像你问什么(我几乎等同于你的。我只是改变了到了线。)你在做一些不同的东西?