USBEndpoint
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология.
Перед использованием в производстве внимательно ознакомьтесь с таблицей совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс USBEndpoint API WebUSB предоставляет информацию об конечной точке, предоставляемой устройством USB. Конечная точка представляет собой однонаправленный поток данных в устройство или из устройства.
Конструктор
-
USBEndpoint()Экспериментально -
Создаёт новый объект
USBEndpoint, который будет заполнен информацией об конечной точке на предоставленномUSBAlternateInterfaceс заданным номером конечной точки и направлением передачи.
Свойства экземпляра
-
USBEndpoint.endpointNumberЭкспериментально -
Возвращает "номер конечной точки" этой конечной точки, значение от 1 до 15, извлечённое из поля
bEndpointAddressописателя конечной точки, определяющего эту конечную точку. Это значение используется для идентификации конечной точки при вызове методов наUSBDevice. -
USBEndpoint.directionЭкспериментально -
Возвращает направление, в котором эта конечная точка передаёт данные, одно из:
-
"in"- Данные передаются от устройства к хосту. -
"out"- Данные передаются от хоста к устройству.
-
-
USBEndpoint.typeЭкспериментально -
Возвращает тип этой конечной точки, один из:
-
"bulk"- Предоставляет надёжную передачу данных для больших объёмов. Данные, отправленные через конечную точку типа bulk, гарантированно будут доставлены или сгенерируют ошибку, но могут быть прерваны другими данными. -
"interrupt"- Предоставляет надёжную передачу данных для небольших объёмов. Данные, отправленные через прерывание конечной точки, гарантированно будут доставлены или сгенерируют ошибку, а также получат выделенное время шины для передачи. -
"isochronous"- Предоставляет ненадежную передачу данных для данных, которые должны быть переданы периодически. Им выделяется выделенное время шины, но если срок выполнения пропущен, данные отбрасываются.
-
-
USBEndpoint.packetSizeЭкспериментально -
Возвращает размер пакетов, на которые данные, отправленные через эту конечную точку, будут разделены.
Примеры
Хотя иногда разработчик заранее знает точный макет конечных точек устройства, есть случаи, когда это необходимо обнаружить во время выполнения. Например, USB-устройство последовательной связи должно предоставлять конечные точки ввода/вывода типа bulk, но их номера конечных точек будут зависеть от других интерфейсов, которые предоставляет устройство.
Этот код идентифицирует правильные конечные точки, выполняя поиск интерфейса, реализующего класс USB CDC интерфейса, а затем идентифицирует кандидатуры конечных точек на основе их типа и направления.
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;
}
}
}
Спецификации
| Спецификация |
|---|
| API WebUSB # usbendpoint-interface |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
USBEndpoint |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | Нет |
USBEndpoint |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | НетWebView предоставляет этот интерфейс, но не поддерживает WebUSB. См. ошибку 41441927. |
direction |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | Нет |
endpointNumber |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | Нет |
packetSize |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | Нет |
type |
61 | 79 | Нет | 48 | Нет | 61 | Нет | 45 | Нет | 8.0 | Нет |
worker_support |
118Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.70–118Доступен в выделенных worker, недоступен в shared worker и service worker. |
118Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.79–118Доступен в выделенных worker, недоступен в shared worker и service worker. |
Нет |
104Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.57–104Доступен в выделенных worker, недоступен в shared worker и service worker. |
Нет |
118Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.70–118Доступен в выделенных worker, недоступен в shared worker и service worker. |
Нет |
79Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.49–79Доступен в выделенных worker, недоступен в shared worker и service worker. |
Нет |
25.0Доступен в выделенных worker и WebExtension service worker, недоступен в shared worker и обычных service worker.10.0–25.0Доступен в выделенных worker, недоступен в shared worker и service worker. |
НетWebView предоставляет этот интерфейс, но не поддерживает WebUSB. |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/USBEndpoint