WebUSB API 无法找到兼容设备

问题描述

我正在尝试通过网页(通过 HTTPS)访问我的 USB 设备。 我的 USB 设备已启动并正在运行,并且还启用了实验性 Web 平台功能 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>

解决方法

设备不出现的原因有以下几个:

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

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