HIDDevice
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 设备上哪个按钮被按下。
js
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
用于使设备闪烁。
js
const reportId = 1;
for (let i = 0; i < 10; i++) {
// Turn off
await device.sendFeatureReport(reportId, Uint32Array.from([0, 0]));
await waitFor(100);
// Turn on
await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
await waitFor(100);
}
您可以在文章连接到不常见的 HID 设备中查看更多示例和实时演示。
规范
规范 |
---|
WebHID API # dom-hiddevice |
浏览器兼容性
BCD 表格仅在浏览器中加载