USBDevice: clearHalt() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

clearHalt() 方法属于 USBDevice 接口,它返回一个 Promise,当停止条件清除时该 Promise 会解决。停止条件是指向设备或从设备传输数据时状态为 'stall',这要求网页(在 USB 术语中是主机系统)清除该条件。有关详情,请参阅。

语法

js
clearHalt(direction, endpointNumber)

参数

direction

指示应清除设备的输入或输出。有效值为 'in''out'

endpointNumber

指示要清除的端点编号。如果提供了无效的端点,Promise 将会拒绝。

返回值

一个 Promise

示例

以下示例展示了如何测试并清除数据传输结果中的 'stall' 条件。

注意:可以传递什么数据给 USB 设备以及如何传递是每个设备特有且唯一的。

js
while (true) {
  let result = await data.transferIn(1, 6);

  if (result.data && result.data.byteLength === 6) {
    console.log(`Channel 1: ${result.data.getUint16(0)}`);
    console.log(`Channel 2: ${result.data.getUint16(2)}`);
    console.log(`Channel 5: ${result.data.getUint16(4)}`);
  }

  if (result.status === "stall") {
    console.warn("Endpoint stalled. Clearing.");
    await device.clearHalt("in", 1);
  }
}

规范

规范
WebUSB API
# dom-usbdevice-clearhalt

浏览器兼容性