使用WebHID时梅特勒-托利多PS60 USB秤无法识别的问题
问题描述
我正尝试通过WebHID API连接梅特勒-托利多PS60型号的USB秤,以便为Web应用获取秤量数值,但调用requestDevice()时该设备未出现在设备列表中。使用的代码如下:
navigator.hid.requestDevice({ filters: [] })
使用WebUSB API时该设备可被识别,但连接时会出现错误提示:The requested interface implements a protected class.。在chrome://usb-internals/中显示该接口为HID且“blocked by WebUSB”,这符合逻辑,但为何WebHID无法识别它?
我尝试将驱动更换为WinUSB,但并无效果。请问有人知道问题所在,或有方法获取设备未被列出的更多信息吗?或者该设备根本无法通过WebHID/WebUSB使用?
可能的原因与解决思路
1. 设备HID接口被浏览器默认拦截
Chrome等浏览器对WebHID可访问的设备有系统级限制,部分USB秤、条码扫描器这类设备可能被归类为“受保护设备”,默认不会暴露给WebHID API。可以通过以下方式排查:
- 打开
chrome://device-log/查看设备连接日志,这里会明确记录WebHID过滤设备的原因,比如是否属于被排除的设备类别、驱动权限是否不足等。 - 用USB调试工具(如USBlyzer)读取设备的HID报告描述符,确认设备是否使用了浏览器默认拦截的HID用途(比如模拟键盘/鼠标的HID协议)。
2. WinUSB驱动未正确绑定到HID接口
更换驱动时需确保绑定到设备的HID接口,而非其他接口——很多USB设备存在多接口,若替换了错误的接口驱动,自然无法生效:
- 打开设备管理器,展开该USB秤的条目,找到对应的HID接口,右键选择“更新驱动程序”,手动指定WinUSB驱动(推荐用Zadig工具精准选择HID接口进行驱动替换)。
- 替换完成后重启浏览器,再尝试调用
navigator.hid.requestDevice()。
3. 设备固件存在访问限制
部分厂商会对USB秤的HID接口做权限限制,仅允许官方应用访问,或需要特定的初始化指令才能唤醒设备:
- 查找梅特勒-托利多PS60的官方文档,确认设备是否支持通用HID访问,或是否需要发送特定的HID报告指令来激活数据输出。
- 用HID调试工具(如HIDExplorer)连接设备,尝试发送读取指令测试能否获取数据。若工具能正常读取,再将对应的指令逻辑移植到WebHID代码中。
4. 浏览器环境或设置问题
- 确保Web应用运行在HTTPS环境下(localhost除外),WebHID API仅支持安全上下文。
- 检查浏览器隐私设置,确认未阻止HID设备访问权限。
- 尝试在Chrome Canary版本中测试,部分新设备的HID支持可能先在开发版浏览器中推出。
内容的提问来源于stack exchange,提问作者Gunnar Berg
相关产品推荐
相关产品推荐

