You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过浏览器JS读取ACR122U NFC标签?设备无法识别求助

解决ACR122U NFC读卡器无法通过Web Serial/Web USB被浏览器识别的问题

首先明确:ACR122U不支持Web Serial,它是USB HID设备,只能通过Web USB API访问,无需再尝试navigator.serial相关方法。针对你遇到的设备无法被识别的问题,按以下步骤排查解决:

1. 用指定VID/PID精准匹配设备

ACR122U的厂商ID(VID)为0x072F,产品ID(PID)为0x2200,直接在请求设备时指定过滤条件,避免默认规则遗漏设备:

async function connectACR122U() {
  try {
    // 请求匹配ACR122U的USB设备
    const device = await navigator.usb.requestPort({
      filters: [{
        vendorId: 0x072F,
        productId: 0x2200
      }]
    });

    // 初始化设备连接
    await device.open();
    await device.selectConfiguration(1);
    await device.claimInterface(0);

    // 定位IN端点并监听数据(ACR122U的IN端点为0x82)
    const inEndpoint = device.configuration.interfaces[0].alternate.endpoints.find(e => e.direction === 'in');
    console.log("已连接ACR122U,开始监听数据...");
    
    while (device.opened) {
      const result = await device.transferIn(inEndpoint.endpointNumber, 64);
      const data = new Uint8Array(result.data.buffer);
      console.log("读取到NFC数据:", data);
    }
  } catch (error) {
    console.error("连接或读取失败:", error);
  }
}

// 调用函数触发设备授权请求
connectACR122U();

2. 替换Windows驱动(关键操作)

ACR122U默认使用CCID类驱动,Web USB无法识别这类驱动的设备,需用Zadig工具替换为WinUSB:

  • 打开Zadig工具,勾选"Options" -> "List All Devices"
  • 在设备列表中找到"ACR122U NFC Reader"(或相似名称)
  • 将驱动替换为WinUSB,点击"Replace Driver"完成操作

3. 其他排查要点

  • 仅Chromium内核浏览器(Chrome、Edge等)支持Web USB,Firefox暂不支持
  • 当前页面必须为HTTPS协议(本地开发可使用localhost)
  • 关闭其他占用ACR122U的程序(如NFC管理软件),避免设备被独占
  • 确认浏览器已授予当前网站USB设备访问权限(可在浏览器隐私安全设置中检查)

内容的提问来源于stack exchange,提问作者It's Time for TNPSC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:31:02