HIDDevice
注意:此功能在 Web Workers 中可用,但 共享 Web Workers 除外。
HIDDevice 接口是 WebHID API 的一部分,用于表示一个 HID 设备。它提供了用于访问设备信息的属性、用于打开和关闭连接的方法,以及用于发送和接收报告的功能。
实例属性
此接口还继承了 EventTarget 的属性。
HIDDevice.opened只读 实验性-
返回一个
boolean值,如果设备连接已打开,则为true。 HIDDevice.vendorId只读 实验性-
返回 HID 设备的 vendorId。
HIDDevice.productId只读 实验性-
返回 HID 设备的 productId。
HIDDevice.productName只读 实验性-
返回一个包含 HID 设备产品名称的字符串。
HIDDevice.collections只读 实验性-
返回 HID 设备报告格式的数组。
事件
inputreport实验性-
当从设备发送报告时触发。
实例方法
此接口还继承了 EventTarget 的方法。
HIDDevice.open()实验性-
打开与此 HID 设备的连接,并返回一个
Promise,该 Promise 在连接成功后解析。 HIDDevice.close()实验性-
关闭与此 HID 设备的连接,并返回一个
Promise,该 Promise 在连接关闭后解析。 HIDDevice.forget()实验性-
关闭与此 HID 设备的连接并重置访问权限,然后返回一个
Promise,该 Promise 在权限重置后解析。 HIDDevice.sendReport()实验性-
向此 HID 设备发送一个输出报告,并返回一个
Promise,该 Promise 在报告发送后解析。 HIDDevice.sendFeatureReport()实验性-
向此 HID 设备发送一个功能报告,并返回一个
Promise,该 Promise 在报告发送后解析。 HIDDevice.receiveFeatureReport()实验性-
以
Promise的形式从此 HID 设备接收一个功能报告,该 Promise 解析为一个DataView。这允许对该消息的内容进行类型化访问。
示例
以下示例演示了如何监听 inputreport 事件,该事件允许应用程序检测 Joy-Con Right 设备上哪个按钮被按下。
device.addEventListener("inputreport", (event) => {
const { data, device, reportId } = event;
// Handle only the Joy-Con Right device and a specific report ID.
if (device.productId !== 0x2007 && reportId !== 0x3f) return;
const value = data.getUint8(0);
if (value === 0) return;
const someButtons = { 1: "A", 2: "X", 4: "B", 8: "Y" };
console.log(`User pressed button ${someButtons[value]}.`);
});
在以下示例中,sendFeatureReport 用于使设备闪烁。
const reportId = 1;
for (let i = 0; i < 10; i++) {
// Turn off
await device.sendFeatureReport(reportId, Uint32Array.from([0, 0]));
await new Promise((resolve) => setTimeout(resolve, 100));
// Turn on
await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
await new Promise((resolve) => setTimeout(resolve, 100));
}
您可以在文章 Connecting to uncommon HID devices 中看到更多示例和实时演示。
规范
| 规范 |
|---|
| WebHID API # dom-hiddevice |
浏览器兼容性
加载中…