USBEndpoint

有限可用性

此功能不是基线,因为它在一些最常用的浏览器中无法正常工作。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,在一些或所有支持的浏览器中可用。

实验性:这是一个实验性技术
在生产环境中使用之前,请仔细查看浏览器兼容性表

USBEndpoint 接口是WebUSB API 的一部分,它提供有关 USB 设备提供的端点的信息。端点表示到设备或从设备的单向数据流。

构造函数

USBEndpoint() 实验性

创建一个新的 USBEndpoint 对象,该对象将填充有关提供的USBAlternateInterface 上的端点的信息,该端点具有给定的端点号和传输方向。

实例属性

USBEndpoint.endpointNumber 实验性

返回此端点的“端点号”,该号是从定义此端点的端点描述符的 bEndpointAddress 字段中提取的 1 到 15 之间的数值。此值用于在调用 USBDevice 上的方法时识别端点。

USBEndpoint.direction 实验性

返回此端点传输数据的方向,其中之一

  • "in" - 数据从设备传输到主机。
  • "out" - 数据从主机传输到设备。
USBEndpoint.type 实验性

返回此端点的类型,其中之一

  • "bulk" - 为大型有效载荷提供可靠的数据传输。通过批量端点发送的数据保证会被传递或生成错误,但可能会被其他数据流量抢占。
  • "interrupt" - 为小型有效载荷提供可靠的数据传输。通过中断端点发送的数据保证会被传递或生成错误,并且还为传输分配了专用的总线时间。
  • "isochronous" - 为必须定期传递的有效载荷提供不可靠的数据传输。它们分配了专用的总线时间,但如果错过截止日期,数据将被丢弃。
USBEndpoint.packetSize 实验性

返回通过此端点发送的数据将被划分的包的大小。

示例

虽然有时开发人员提前知道设备端点的确切布局,但也有一些情况需要在运行时发现这些布局。例如,USB 串行设备必须提供批量输入和输出端点,但它们的端点号将取决于设备提供的其他接口。

此代码通过搜索实现 USB CDC 接口类的接口,然后根据其类型和方向识别候选端点,从而识别出正确的端点。

js
let inEndpoint = undefined;
let outEndpoint = undefined;

for (const { alternates } of device.configuration.interfaces) {
  // Only support devices with out multiple alternate interfaces.
  const alternate = alternates[0];

  // Identify the interface implementing the USB CDC class.
  const USB_CDC_CLASS = 10;
  if (alternate.interfaceClass !== USB_CDC_CLASS) {
    continue;
  }

  for (const endpoint of alternate.endpoints) {
    // Identify the bulk transfer endpoints.
    if (endpoint.type !== "bulk") {
      continue;
    }

    if (endpoint.direction === "in") {
      inEndpoint = endpoint.endpointNumber;
    } else if (endpoint.direction === "out") {
      outEndpoint = endpoint.endpointNumber;
    }
  }
}

规范

规范
WebUSB API
# usbendpoint-interface

浏览器兼容性

BCD 表格仅在浏览器中加载