USB.requestDevice()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/ru/web/api/webusb_api/index.md)
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Метод requestDevice()
интерфейса USB
возвращает Promise
, возвращающий экземпляр USBDevice
, если необходимое устройство было найдено. Вызов этого метода начинает процесс соединения браузера с устройством.
Синтаксис
USB.requestDevice([filters])
Параметры
- filters
-
Массив объектов, определяющих фильтры для устройств, к которым требуется подключиться. Каждый фильтр может содержать следующие свойства:
vendorId
- ИД производителя (USB VID)productId
- ИД устройства USB PIDclassCode
- код класса функциональности устройстваsubclassCode
- код подклассаprotocolCode
- код протоколаserialNumber
- серийный номер
Возвращаемое значение
Пример
Этот пример запрашивает любое из перечисленных USB-устройств. Обратите внимание, указаны два разных PID. Оба присутствуют в списке фильтров для requestDevice()
. При этом браузер покажет окно для выбора и подтверждения доступа к устройству. Только выбранное пользователем устройство будет передано в then()
.
Количество фильтров не определяет количество устройств, показываемых браузером. Например, если найдено только USB-устройство с product ID 0xa800
, браузер отобразит только одно устройство. Но, если браузер определит два устройства, совпадающих с первым фильтром, и ещё одно, совпадающее со вторым, будут показаны все три устройства.
const filters = [
{ vendorId: 0x1209, productId: 0xa800 },
{ vendorId: 0x1209, productId: 0xa850 },
];
navigator.usb
.requestDevice({ filters: filters })
.then((usbDevice) => {
console.log("Product name: " + usbDevice.productName);
})
.catch((e) => {
console.log("There is no device. " + e);
});
Спецификации
Specification |
---|
WebUSB API # ref-for-dom-usb-requestdevice④ |
Совместимость с браузерами
BCD tables only load in the browser