API WebUSB
Экспериментальный: Это экспериментальная технология experimental technology
Перед использованием в производстве внимательно изучите таблицу совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
API WebUSB предоставляет способ экспонировать сервисы устройств, совместимых с универсальной последовательной шиной (USB), не соответствующих стандарту, для веб-страниц, чтобы сделать USB безопаснее и проще в использовании.
Концепции и использование
USB — это фактический стандарт для проводных периферийных устройств. Устройства USB, которые вы подключаете к компьютеру, обычно группируются по классам устройств — такие как клавиатуры, мыши, видеоустройства и т. д. Они поддерживаются драйверами классов операционной системы. Многие из них также доступны в веб через API WebHID.
Помимо этих стандартных устройств, существует большое количество устройств, которые не подходят ни к одному классу. Для них требуются пользовательские драйверы, и они недоступны из веб-приложения из-за необходимости использования кода нативных языков для их использования. Установка одного из таких устройств часто подразумевает поиск драйверов на веб-сайте производителя и, если вы хотите использовать устройство на другом компьютере, повторное выполнение этого процесса.
WebUSB предоставляет способ экспонировать сервисы устройств USB, не соответствующих стандарту, для веб-приложений. Это означает, что производители оборудования смогут предоставить способ доступа к своим устройствам из веб-приложений без необходимости разработки собственного API.
При подключении нового устройства, совместимого с WebUSB, браузер отображает уведомление с ссылкой на веб-сайт производителя. При переходе на этот сайт браузер запросит разрешение на подключение к устройству, после чего устройство будет готово к использованию. Не нужно загружать и устанавливать драйверы.
Интерфейсы
USB-
Предоставляет атрибуты и методы для поиска и подключения устройств USB с веб-страницы.
USBConnectionEvent-
Тип события, передаваемый в
USBconnectилиdisconnectсобытия, когда пользовательский агент обнаруживает новое подключенное к хосту или отключенное от хоста устройство USB. USBDevice-
Предоставляет доступ к метаданным о сопряженном устройстве USB и методам управления им.
USBInTransferResult-
Представляет результат запроса передачи данных от устройства USB к хосту USB.
USBOutTransferResult-
Представляет результат запроса передачи данных от хоста USB к устройству USB.
USBIsochronousInTransferPacket-
Представляет состояние отдельного пакета из запроса передачи данных от устройства USB к хосту USB через изохронный конечный пункт.
USBIsochronousInTransferResult-
Представляет результат запроса передачи данных от устройства USB к хосту USB.
USBIsochronousOutTransferPacket-
Представляет состояние отдельного пакета из запроса передачи данных от хоста USB к устройству USB через изохронный конечный пункт.
USBIsochronousOutTransferResult-
Представляет результат запроса передачи данных от хоста USB к устройству USB.
USBConfiguration-
Предоставляет информацию о конкретной конфигурации устройства USB и интерфейсах, которые оно поддерживает.
USBInterface-
Предоставляет информацию об интерфейсе, предоставленном устройством USB.
USBAlternateInterface-
Предоставляет информацию о конкретной конфигурации интерфейса, предоставленного устройством USB.
USBEndPoint-
Предоставляет информацию об конечном пункте, предоставленном устройством USB.
Примеры
Доступ к подключенному устройству
Следующий пример демонстрирует, как получить доступ к подключенному устройству Arduino с использованием USB.requestDevice(), у которого vendorId равен 0x2341.
navigator.usb
.requestDevice({ filters: [{ vendorId: 0x2341 }] })
.then((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
})
.catch((error) => {
console.error(error);
});
Поиск всех подключенных устройств
Вы можете найти все подключенные устройства с помощью USB.getDevices(). В следующем примере, с подключенным устройством Arduino, имя продукта и производителя выводятся в консоль.
navigator.usb.getDevices().then((devices) => {
devices.forEach((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
});
});
Спецификации
| Спецификация |
|---|
| API 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/WebUSB_API