USBEndpoint
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 表格仅在浏览器中加载