【问题标题】:How do I zero a USB scale using WebHID?如何使用 WebHID 将 USB 秤归零?
【发布时间】:2021-07-02 11:25:06
【问题描述】:

我在 Chrome 中使用 WebHID 与支持 USB 的数字秤进行通信。我可以连接到体重秤并订阅体重数据流,如下所示:

// Get a reference to the scale.
// 0x0922 is the vendor of my particular scale (Dymo).
let device = await navigator.hid.requestDevice({filters:[{vendorId: 0x0922}]});

// Open a connection to the scale.
await device[0].open();

// Subscribe to scale data inputs at a regular interval.
device[0].addEventListener("inputreport", event => {
    const { data, device, reportId } = event;
    let buffArray = new Uint8Array(data.buffer);
    console.log(buffArray);
});

我现在收到Uint8Array(5) [2, 12, 255, 0, 0] 格式的常规输入,其中第四个位置是重量数据。如果我把东西放在秤上,它会变成Uint8Array(5) [2, 12, 255, 48, 0],即 4.8 磅。

我想将秤归零(去皮),使其当前的受阻状态成为新的归零点。成功归零后,我希望秤再次开始返回Uint8Array(5) [2, 12, 255, 0, 0]。我目前对此的最佳猜测是:

device[0]
  .sendReport(0x02, new Uint8Array([0x02]))
  .then(response => { console.log("Sent output report " + response) });

这是基于HID Point of Sale Usage Tables 中的下表:

第一个字节是报告 ID,根据表格为 2。对于第二个字节,我希望 ZS 操作设置为 1,因此设置为 00000010,因此也设置为 2。sendReport 将报告 ID 作为第一个参数,并将所有后续数据的数组作为第二个参数。当我将它发送到设备时,它不会被拒绝,但不会将比例归零,并且response 未定义。

如何使用 WebHID 将此比例归零?

【问题讨论】:

  • 您可以尝试使用 sendFeatureReport() 代替 sendReport() 吗?通常通过功能报告配置设备。
  • 看看我再次发布的图,你是绝对正确的——它说的是示例比例控制功能报告。我刚刚尝试使用sendFeatureReport 代替sendReport 发送相同的命令,但我仍然没有得到我预期的结果。不过,这是我需要研究的一个新领域!

标签: google-chrome usb hid webhid


【解决方案1】:

所以我最终来到了一个非常相似的地方 - 尝试以编程方式将 USB 秤归零。设置 ZS 似乎没有做任何事情。使用 Wireshark + Stamps.com 应用程序查看他们是如何做到的,并注意到发送的实际上是强制归零,即 0x02 0x01(报告 ID = 2,EZR)。现在让它工作。

【讨论】:

  • 如果我没看错你的帖子,你的建议如下:device[0].sendFeatureReport(0x02, new Uint8Array([0x01])) 这对我不起作用,所以我尝试使用一个名为 USB Scale Wedge 的程序来查看我的体重秤是否可以完全通过 HID 去皮重。好像不能。我将您的答案标记为已接受,希望它可以帮助使用与我不同规模的人。
  • 我的评论特别是我发现发送 EZR,而不是 ZS,为我的体重秤工作(不幸的是,我确信并非所有体重秤都会以相同的方式响应)。我使用不同的机制将报告发送到秤。我将字节数组直接写入 USB 设备文件句柄,而不是“sendFeatureReport”。我还用零填充数组,直到从 GetCapabilities 调用中获得的 FeatureReport 的大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2010-11-27
  • 1970-01-01
相关资源
最近更新 更多