问题标签 [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.
web-applications - DART Chrome.USB throws exception when used in front-end Angular web-application
Im trying to use DART's chrome.usb API in a angular-4 dart web-application. But it keeps throwing an exception as _usb is null.
As a workaround, I wrote a DART wrapper around a javascript library (inspired by arduino webusb demo). This works. Also when chrome-app device-info as en example, Im able to communicate to a USB device endpoint; however, the example is not written in DART.
However, I'm confused why using DART's chrome.usb, it isn't working. I'll prefer to use the already existing chrome.usb API as reinventing the wheel.
Reading certain websites, they indicate that chrome.usb is limited to web-applications or extensions and need a manifest.json file for the proper permissions (I tried the manifest file without success). Not sure if I misunderstood those websites (As I think writing a SPA front-end with Angular-dart is considered a web-application), plus when using a DART wrapper around a javascript library, it works fine.
Any suggestions are welcome.
google-chrome - Windows 10 WebUSB 打印问题与 Zebra LP2844 DOMException:访问被拒绝
在一个项目中,我尝试使用 Chrome 中可用的 WebUSB API 使用 Zebra LP2844 打印机进行打印。
我在 OSX 上成功了,最终在 Ubuntu 和 ChromeOS 上取得了成功,这要归功于这篇文章谈到了取消绑定内核驱动程序以便 Chrome 能够访问设备。
我为此使用的页面是通过https提供的,因为文档需要它。
但是,在 Windows 10 上,我可以使用 navigator.usb.requestDevice 连接到打印机,如下所示
但是当我在打印例程期间在连接的打印机上调用 open() 时,我不断收到下一个错误
错误 DOMException:访问被拒绝。
下面是打印方法代码:
我在这里发现了一个类似的问题,它指向了另一个答案。当我插入打印机时,Windows 安装的默认驱动程序会阻止 Chrome 访问它(就像 Ubuntu 一样),这是完全有道理的。
因此,我实现了一个自定义 .inf 文件,如此处所述。
这是我的inf文件
使用 inf2cat 构建驱动程序,对其进行测试签名,当我尝试更新打印机驱动程序以使用它时,它失败并出现错误“找不到指定的文件 (0x00000002)”。
setupapi.dev.log 文件没有提供任何关于未找到哪个文件的信息。
这是驱动程序更新过程的日志文件:
我什至尝试使用zadig替换打印机驱动程序,结果相同(访问被拒绝错误)。
在这一点上,非常感谢任何帮助。
更新 03/05/2018
今天,我通过以下步骤成功完成了我的自定义 inf 安装程序:
- 当我插入打印机时,阻止 Windows 10 在网上搜索驱动程序并安装它们(在此处查看详细信息)
- 更新我的自定义 inf 安装程序以使用 USBDevice 类和 {88bae032-5a81-49f0-bc3d-a4ff138216d6} ClassGuid 值
- 构建驱动程序 cat 文件并对其进行签名
- 卸载设备的所有驱动程序并拔下打印机
- 重新启动计算机
- 重新插入打印机。此时,在设备管理器中,设备被检测为通用串行总线设备
- 最后,按照此说明使用之前创建的驱动程序更新设备驱动程序。
驱动安装成功,regedit 反映设备现在正在使用 WinUSB
可悲的是,我继续收到“DOMException:访问被拒绝”。当我尝试从网页打印时出错......所以我仍然需要帮助:(
ps:这可能是我所知道的关于 stackoverflow 的最长帖子(或至少前 10 名)。
更新 03/06/2018
根据 Reilly Grant 的要求,我包括了 USBView 的输出(Windows 的 lsusb 等效项)
有趣的是(实际上很奇怪),在尝试获取这些新信息时,我的谷歌浏览器开始抛出
控制台中的错误,并在控制台中键入 navigator.usb 返回undefined。
由于这没有任何意义,我重新安装了 Chrome,但错误仍然存在
因此,我安装了 Chrome Canary(存在 navigator.usb),结果发现打印机开始打印并且拒绝访问错误消失了。
我卸载了 Chrome Canary 并且不知何故 GA Chrome 也可以工作。直到我关闭 Chrome 并再次打开它。然后我再次收到“无法读取未定义的属性'getDevices'”错误。
我注意到删除 AppData/Local/Google 中的 Chrome 用户数据文件夹(整个配置文件文件夹)会使 Chrome 再次工作,直到我关闭它并再次打开它。
尽管我正在调用 releaseInterface 并关闭,但我的打印代码中的某些东西可能会留下一些“保留”的东西?
现在问题似乎发生了一些变化,有什么想法吗?
webusb - Can WebUSB transfer files to a USB mass storage device, or act like dd?
I'd like to use WebUSB to read and write files to a flash drive, or better, write arbitrary bits like unix's dd
. Is this possible, or is only serial-like communication supported?
webusb - WebUSB 不再支持自定义 HID 设备?
几周前,WebUSB 能够在 MAC 和 Window 平台上与我的自定义 HID 设备进行通信。
现在看来,最新的 Chrome 更新 (65.0.3325.162) 已在 Window 平台上删除了此支持。 https://chromium-review.googlesource.com/c/chromium/src/+/951635
有人可以确认一下吗?那么自定义 HID 设备与 WebUSB 一起使用的解决方案是什么?
usb - 无法使用 WebUSB API 连接 USB 打印机
我有DATECS DPP-250 POS 打印机,我正在尝试使用 WebUSB API 连接它并打印一些数据。我遇到的问题是打印不起作用。我可以连接到设备并且 chrome 可以很好地读取它,但是当我提交打印时(transferOut
)打印机只是挂起。我试图在控制台中调试错误,但我没有任何错误。我尝试在 MAC OS 和 Windows 10 上使用 WinUSB 驱动程序(使用Zadig在 Windows上更改驱动程序),它们都有同样的问题。
有人知道问题出在哪里吗?
编辑:
我尝试使用其他 POS 打印机(非蓝牙打印机),我的代码运行良好。唯一的问题是这台打印机。这种类型的打印机使用微型 USB,所以这可能是一个问题?
这是我正在使用的代码
javascript - 如何使用 WebUSB API 和 PC/SC 从 Chrome 浏览器访问智能卡?
我正在尝试编写一个需要与本地智能卡交换消息的 Web 应用程序。目前我正在尝试使用WebUSB API将 Chrome 与智能卡读卡器连接,但我正在努力使用 PC/SC 规范。
在我的研究中,我发现了这两个主题:
从通用浏览器访问智能卡的架构?或者:如何弥合从浏览器到 PC/SC 堆栈的差距?
如何使用javascript从网络浏览器向PCSC阅读器发送APDU
尽管它们处理的是同一主题,但它们没有连接示例。
如果有人有任何提示或连接示例,我将不胜感激。
javascript - 通过AngularJS访问Chrome的WebUSB
我在通过 angularJS 为 chrome 使用 WebUSB API 时遇到问题。这是一个项目,我需要访问 esc/pos 热敏打印机来打印发票。
在普通的 JavaScript 中:
HTML:
Javascript:
在 angularjs: HTML:
控制器:
在尝试使用角度脚本时,DOMException 会引发错误:
必须处理用户手势以显示权限请求。
这是 web usb 的 requestDevice 函数所要求的,它应该是用户按钮单击或鼠标悬停。
这在第一个示例中运行良好,因为用户正在单击按钮来触发该功能。
在第二个例子中,同样的事情正在发生。我什至避免使用 ng-click 让本地事件侦听器尝试是否可行。但也没有运气。
谁能帮我?angularJS 出了什么问题?
javascript - 如何从 webusb 响应状态中恢复:“babble”
我正在 Chrome 上测试新的 webusb api ( https://wicg.github.io/webusb/ ) 并且正在测试从 USB 设备发送 (transferOut) 和接收 (transferIn)。
它工作得很好,但我尝试读取的数据比预期的要少(2 个字节而不是 3 个字节,其中消息的长度实际上用前两个字节表示)。
问题是当我读取的字节数少于预期时,USB api 返回状态“babble”。之后如何保证正常通信?我仍然可以发送数据,但接收数据总是返回错误“DOMException:发生传输错误”。
我尝试运行 device.clearHalt("in", 1) (方向“in”和端点 1),但它也不起作用(抛出“DOMException:无法清除端点。”)。
有人遇到过这个问题吗?
(我在 OSX 上使用 Chrome 65.0.3325.181)
webusb - WebUSB 闪存驱动器序列号
所以我想在我的网站上使用闪存驱动器作为 2FA 的选项(使用设备序列号)。我正在使用 WebUSB,但闪存驱动器不会显示在设备选择窗口中。我已经看到网络 USB 无法读取/写入文件,那么它甚至可以看到闪存驱动器吗?
如果有帮助,这是我的代码: