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);
});
形式で通常の入力を受け取るようになりました。4Uint8Array(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 です。2 番目のバイトでは、ZS 操作を 1 に設定して 00000010、したがって 2 に設定しsendReport
ます。レポート ID を最初のパラメーターとして受け取り、後続のすべてのデータの配列を 2 番目のパラメーターとして受け取ります。これをデバイスに送信すると、拒否されませんが、スケールがゼロにならず、response
未定義です。
WebHID を使用してこのスケールをゼロにするにはどうすればよいですか?