Chrome 如何使用WebHID将USB电子秤归零?

yqkkidmi  于 2022-12-16  发布在  Go
关注(0)|答案(1)|浏览(168)

我使用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调零该电子秤?

hrysbysz

hrysbysz1#

因此,我最终遇到了一个非常相似的问题--尝试通过编程将USB秤归零。设置ZS似乎没有任何作用。使用Wireshark + Stamps.com应用程序查看他们是如何操作的,并注意到发送的实际上是强制归零,即0x 02 0x 01(报告ID = 2,EZR)。现在可以使用此功能了。

相关问题