在 Chrome 上的 Web Serial API 中获取连接设备的名称

Posted

技术标签:

【中文标题】在 Chrome 上的 Web Serial API 中获取连接设备的名称【英文标题】:Get name of connected device in Web Serial API on Chrome 【发布时间】:2021-06-30 12:16:46 【问题描述】:

根据Chrome Platform Status,自 Chrome V89 以来,Web Serial API 现在处于发布状态。

我在一个通用串行通信应用程序上工作,它允许连接到用户选择的串行端口。在let port = await navigator.serial.requestPort() 之后,用户从 chrome 提供的列表中选择一个端口。此列表包含设备的名称。将所选端口与port.open(conSettings) 连接没有问题。

但是我怎样才能使用 Web Serial API 获取所选端口/设备的名称(从显示的列表中)?这是显示“已连接到...”之类的状态所必需的。没有这个,如果您有多个打开不同端口的选项卡会很混乱。

【问题讨论】:

我不认为你可以,在这一点上。 SerialPort.getInfo() 对于 USB 端口返回 usbProductIdusbVendorId,而对于内置端口则没有(在我的 Win10 机器上)。也许这些数据将来会可用:github.com/WICG/serial/issues/128#issuecomment-795870509 感谢@Johnny Mopp。这是同一个帖子,我在最后几分钟偶然发现... 【参考方案1】:

我在 2021 年 3 月 10 日从 reillyeon(这是一位用于 USB 和串行的 Google chromium 软件工程师)找到了this post。他说计划在getInfo() 的返回中添加一个ID,该ID 可用于记住并稍后重新连接到仍在使用的设备。

在this other post 的结尾他写道,他计划“引入一个随机标识符”,而不是“USB 产品名称或序列号字符串”,因为“对指纹的担忧”

所以看起来,此时什么都没有,也不打算返回设备名。但是当这个实现时,可以组合保存这个ID使用用户提供的设备名称。

无论如何,我的问题是:当用户仍然被请求并允许访问设备时,指纹是一个问题吗?

【讨论】:

以上是关于在 Chrome 上的 Web Serial API 中获取连接设备的名称的主要内容,如果未能解决你的问题,请参考以下文章

Google Chrome Web Serial API:如何配置 Modbus RTU 的参数?

Google Chrome Web Serial API:如何使用十六进制代码寻址 Modbus 设备?

Flutter Web - 如何在桌面上的 Chrome 中测试 Flutter Web 应用程序打开?

Arduino IDE for ESP8266教程 创建WIFI AP模式

如何利用Chrome devTools调试android手机上的web网站

Chrome + Windows 8.1 上的 Web Share API 是不是损坏?