USBEndpoint - 提供有关 USB 设备提供的端点的信息
USBEndpoint
是 WebUSB 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 的定义 |
草稿 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
USBEndpoint() 构造函数 | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
direction | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
endpointNumber | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
packetSize | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
type | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |
USBEndpoint() 构造函数 | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |
direction | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |
endpointNumber | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |
packetSize | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |
type | 不支持 | 61 | 未知 | 不支持 | 未知 | 45 | 不支持 |