我使用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调零该电子秤?
1条答案
按热度按时间hrysbysz1#
因此,我最终遇到了一个非常相似的问题--尝试通过编程将USB秤归零。设置ZS似乎没有任何作用。使用Wireshark + Stamps.com应用程序查看他们是如何操作的,并注意到发送的实际上是强制归零,即0x 02 0x 01(报告ID = 2,EZR)。现在可以使用此功能了。