【问题标题】:WebUSB API not able to find compatible deviceWebUSB API 无法找到兼容设备
【发布时间】:2021-04-25 13:01:41
【问题描述】:

我正在尝试通过网页(通过 HTTPS)访问我的 USB 设备。 我的 USB 设备已启动并正在运行,并且还启用了 Experimental Web Platform 功能 chrome://flags/#enable-experimental-web-platform-features。即使我在代码中提供了正确的 vendorId 和 productId,chrome 仍会显示消息“未找到兼容设备”。 我哪里错了? 下面是我的代码

<!DOCTYPE html>
<html lang="en">
  <head> 
  </head>
  <body>
    <button id="request-device">Request Device</button>
    <script>
document.getElementById("request-device").addEventListener("click", ()=>{
            navigator.usb.requestDevice({filters: [{vendorId: 0x03F0}, {productId: 0x5A07}]})
            .then((usbDevice)=>{
                console.log("product name: "+usbDevice.productName);
            })
            .catch((e)=>{
                console.log("There is no devie...."+e);
            });
        });
    </script>
  </body>
</html>

【问题讨论】:

    标签: google-chrome webusb


    【解决方案1】:

    设备可能没有出现的原因有几个:

    首先是 Chrome 没有检测到设备已连接。 Chrome 在 chrome://device-log 中记录它发现的每个 USB 设备。在那里检查您的设备是否已被检测到。它还将在 chrome://usb-internals 的“设备”选项卡中提供详细的设备信息。

    另一个原因是 Chrome 可能隐藏了设备,因为它没有实现任何允许网站使用 WebUSB API 声明的接口。例如,如果设备是 USB 大容量存储设备,则该接口不可声明,并且如果没有其他接口,则该设备将被隐藏。由于 Chrome 90 中的一个错误,如果设备没有接口,它也不会出现。这将在 Chrome 91 中修复,您可以在最新的 beta 通道更新中验证该修复。

    【讨论】:

    • 嗨 Reilly,感谢您的回复。安装 Chrome 91(beta) 后,Chrome 能够检测到 USB 大容量存储设备。但在我断开 USB 设备并尝试再次连接后,我收到消息“未找到兼容设备”。 M第一次尝试成功后无法建立连接
    • 如果您的设备只提供USB大容量存储接口,那么它不会被设计出来。
    • 嗨 Reilly,我也尝试以相同的方式访问设备,但看不到它。在 chrome://usb-internals/ 上,我可以看到它,并且在其名称旁边添加了“被 webUSB 阻止”。你能解释这是为什么吗?几个月前它运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多