问题标签 [webusb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8173 浏览

api - 在 chrome 中启用 webusb 时遇到问题

我正在尝试在 chrome 中启用 webusb 功能来测试它。我试图在我的网络服务器上本地运行这个演示(https://github.com/webusb/arduino),但它不起作用,而是在 github 上发布的版本有效。

我的设置:

  • 具有 ssl 支持和自签名证书的 Apache 网络服务器虚拟主机
  • 最后一个启用了 webusb 和实验性 api 标志的谷歌浏览器
  • 在 Chrome 中导入自签名证书,使其像有效证书一样信任它
  • 从演示中删除原始试验元

但是当我访问演示页面时,我收到了 javascript 错误,因为 navigator.usb 未定义。

我的设置出了什么问题,为什么在我的本地设置中没有启用 navigator.usb,但是当我从同一个浏览器浏览在线演示时启用了?

0 投票
1 回答
5878 浏览

javascript - 如何使用 WebUSB 声明接口?

使用获得对连接设备的访问权限后,navigator.usb.requestDevice我尝试打开与连接设备的连接,如下所示:

它似乎成功地选择了配置,但是该claimInterface步骤将产生以下错误:

--disable-webusb-security在 Ubuntu 16.10 上以 root 身份运行 Chrome 55.0.2883.75 beta(没有那些我没有得到任何设备)。

我怎样才能建立连接并运行?

编辑:

似乎 cdc_acm 驱动程序已经声明了该接口,因为我尝试附加的设备是一个串行设备,卸载驱动程序将允许您声明该设备(但是在此之后它抱怨接口 1 不可用,以及 0或 2)。

0 投票
1 回答
4313 浏览

javascript - WebUSB getDevices 空列表

在 Windows 10 PRO 版本 1511(操作系统内部版本 10586.753)上运行 Chrome 56.0.2924.76(64 位)。已在 chrome 上启用了实验网络平台功能,使用标志 --disable-webusb-security 并以管理员身份运行它。我尝试使用 getDevices 在 localhost(使用 https)上获取 USB 设备列表,但我得到空列表,尽管 chrome://device-log 向我显示了很多设备。可能是什么问题?

0 投票
1 回答
171 浏览

driver - 从其他驱动程序获取输入流?图形输入板驱动程序,输出 Midi 以与 Web Midi API 一起使用

我在编写驱动程序方面的经验为 0。

在我承诺更多地了解这个主题之前,我需要询问我的想法是否可以实施(可行?),是否值得,或者是否有更好的方法。

有没有办法获取图形输入板驱动程序的输入流,使用来自另一个驱动程序(被操作系统视为 Midi 硬件设备)的标准记录图形输入板协议对其进行解码,将其转换为 midi 输出(最好不丢失数据)。

这样做的唯一原因是自稳定版本 49 以来,Chrome 已经支持 Web Midi API,而 Web USB API 仍处于规范起草阶段。请参阅我可以使用 - Midi

我想使用 Web Midi API 从我的平板电脑获取来自 Midi 驱动程序的输入,并将其转换回图形平板电脑输入流(坐标、压力深度等),显然是在具有接近经验的画布上绘制它本机应用程序可以访问图形输入板和功能以利用它。

0 投票
1 回答
1103 浏览

javascript - WebUSB API addEventListener 断开连接未触发

我正在尝试使用 WebUSB API 从 USB 设备获取断开连接事件。

我正在访问设备并通过以下方式将事件侦听器添加到“断开连接”:

仅供参考: printToScreen() 方法将文本添加到 div 标签。

设备已连接,当我单击地址栏中的锁定图标时,我可以看到列出的设备权限,并且我可以毫无问题地检索着陆页 URL。当我断开设备时,列出的设备权限被删除(这是正常的,因为设备没有序列号,因此用户授予的权限不能持久)但没有出现断开事件?不知道我做错了什么。

所以我的问题是,如何从断开事件中检测/获取回调?或者这是一个错误,我应该提交它?任何帮助将不胜感激,谢谢。

同样,将序列号添加到设备后,当我尝试使用“return device.open()”打开设备时出现“NotFoundError:设备不可用”,但“navigator.usb.requestDevice”返回正确设备。

0 投票
1 回答
624 浏览

windows - 同一设备上的 getUserMedia 和 WEBUSB Windows

我们正在开发一个基于 Chrome(旧 USB API 现在迁移到 WEBUSB)和网络摄像头的项目。USB 网络摄像头有一个用于拍照的按钮。在 MAC 和 Linux 中,我可以使用 getUserMedia () 显示网络摄像头的实时视频,同时我可以使用 Web USB API 与设备通信以检测按钮按下。问题是窗户。在 Windows Chorme 上,可以将 USB 设备视为可从 getUserMedia 访问的网络摄像头(如果我安装了 USB 设备原始驱动程序)或作为可从 WebUSB 访问的 USB 设备(如果我用 WINUSB 替换原始驱动程序),但我们无法使用这两个 API在一起。这只是 WINDOWS 上的问题,在 Mac 或 Linux 上一切正常。我们如何解决这个问题?

NB 为了让 javascript USB 命令在 linux 和 OSX 上工作,我必须在传输命令中用“endpoint”替换“interface”。

Linux lsusb 转储:

0 投票
1 回答
2299 浏览

google-chrome - WebUSB 和 RFID 阅读器

我想知道是否有人有让 RFID 阅读器通过 WebUSB 工作的经验。我使用的阅读器是https://www.parallax.com/product/28340

根据我的阅读,我必须编写一个驱动程序才能从设备中读取。我只是想知道是否有人为此做过任何工作以及他们最终做了什么。

这里的目标是在不使用其他应用程序将其提供给 Web 应用程序的情况下读取 RFID 标签。

谢谢!

0 投票
1 回答
193 浏览

javascript - 在本地网页上显示来自连接的 USB DVB-T 记忆棒(在 Windows 上)的直播电视

我想买一个 DVB-T 棒,它可以通过 USB 连接到 PC 和笔记本电脑,并且有一个可以在 Windows 上播放直播电视的软件。我想要做的是在网络浏览器而不是原始 Windows 软件上显示来自该棒的直播电视流。其背后的原因是我需要在仅支持此类媒体的网络平台的数字标牌程序中使用它。据我所知,如果我可以制作一个包含播放器的 html 页面来显示来自 USB 记忆棒的实时流,那么工作就完成了,但我的问题是如何准确地编写该 html 页面。有什么建议吗?

感谢您关注我的问题并提前帮助我。

0 投票
1 回答
3206 浏览

javascript - 尝试声明接口时出现 Google Chrome WebUSB API 错误

我正在尝试使用 Google Chrome webUSB api 访问通过 USB 连接到我的计算机的读卡器。

按照此处的说明,一切正常,直到我尝试声明给我一个错误的接口:

“未能声明接口 0:设备或资源忙”

看来我的操作系统(linux mint)已经访问了这个设备,并且不允许操作员访问。

有什么建议可以克服这个问题吗?

编辑:

当我取消绑定驱动程序时,我收到以下错误:

“未能声明接口 0:没有这样的文件或目录”

这也是此设备的 lsusb -v 的输出:

0 投票
1 回答
1037 浏览

javascript - 使用 webusb 声明 HID 设备

我似乎无法使用 webusb 声明隐藏接口。我正在尝试编写一个 yubikey OATH 包装器

USBDevice {usbVersionMajor: 2, usbVersionMinor: 0, usbVersionSubminor: 0, deviceClass: 0, deviceSubclass: 0, …}configuration: USBConfiguration {configurationValue: 1, configurationName: null, interfaces: Array(2)}configurations: [USBConfiguration]deviceClass: 0deviceProtocol: 0deviceSubclass: 0deviceVersionMajor: 3deviceVersionMinor: 4deviceVersionSubminor: 9manufacturerName: "Yubico"opened: falseproductId: 273productName: "Yubikey NEO OTP+CCID"serialNumber: "0005610818"usbVersionMajor: 2usbVersionMinor: 0usbVersionSubminor: 0usbVersionSubminor: 0usbVersionSubminor: 0usbVersionSubminor__proto__: 0vend USBDevice: 0vend现在 USBDevice {usbVersionMajor: 2, usbVersionMinor: 0, usbVersionSubminor: 0, deviceClass: 0, deviceSubclass: 0, ...}

Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined} Uncaught (in promise) DOMException: Unable to claim interface。

我怀疑这是与 chrome.usb api 类似的问题。我是否应该编写一个 udev 规则以不使用该设备上的 usbhid 驱动程序来完成这项工作?