USBEndpoint - 提供有关 USB 设备提供的端点的信息

安全上下文
该功能仅在部分或所有支持的浏览器中的安全上下文(HTTPS)中可用。

USBEndpointWebUSB API 的接口,提供有关 USB 设备提供的端点的信息。端点表示单向数据流流入或流出设备。

构造函数

USBEndpoint.USBEndpoint

创建一个新的 USBEndpoint 对象,该对象将使用给定 USBAltenateInterface 上具有给定端点号和传输方向的端点信息进行填充。

属性

USBEndpoint.endpointNumber

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

USBEndpoint.direction

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

  • "in" - 数据从设备传输到主机。
  • "out" - 数据从主机传输到设备。

USBEndpoint.type

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

  • "bulk" - 为大型有效负载提供可靠的数据传输。通过批量端点发送的数据可以保证被传递或产生错误,但是可能被其他数据流量抢占。

  • "interrupt" - 为小型有效载荷提供可靠的数据传输。通过中断端点发送的数据可以保证被传递或产生错误,并且还为传输提供了专用的总线时间。

  • "isochronous" - 为必须定期交付的有效负载提供了不可靠的数据传输。它们有专用的总线时间,但是如果错过了最后期限,则数据将丢失。

USBEndpoint.packetSize

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

实例

尽管有时开发人员会提前知道设备端点的确切布局,但在某些情况下必须在运行时发现它。例如,USB 串行设备必须提供批量输入和输出端点,但是它们的端点号将取决于该设备提供的其他接口。

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

let inEndpoint = undefined;
let outEndpoint = undefined;

for (const interface of device.configuration.interfaces) {
  // 仅支持没有多个备用接口的设备。
  const alternate = interface.alternates[0];

  // 确定实现 USB CDC 类的接口。
  const USB_CDC_CLASS = 10;
  if (alternate.interfaceClass != USB_CDC_CLASS) {
    continue;
  }

  for (const endpoint of alternate.endpoints) {
    // 确定批量传输端点。
    if (endpoint.type != "bulk") {
      continue;
    }

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

规范

规范 状态 备注
WebUSB
USBEndPoint 的定义
草稿 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持6179 不支持 不支持48 不支持
USBEndpoint() 构造函数6179 不支持 不支持48 不支持
direction6179 不支持 不支持48 不支持
endpointNumber6179 不支持 不支持48 不支持
packetSize6179 不支持 不支持48 不支持
type6179 不支持 不支持48 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持61 未知 不支持 未知45 不支持
USBEndpoint() 构造函数 不支持61 未知 不支持 未知45 不支持
direction 不支持61 未知 不支持 未知45 不支持
endpointNumber 不支持61 未知 不支持 未知45 不支持
packetSize 不支持61 未知 不支持 未知45 不支持
type 不支持61 未知 不支持 未知45 不支持