USB.requestDevice()

Experimental

Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

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 PID
  • classCode - код класса функциональности устройства
  • subclassCode - код подкласса
  • protocolCode - код протокола
  • serialNumber - серийный номер

Возвращаемое значение

Promise, возвращающий экземпляр USBDevice.

Пример

Этот пример запрашивает любое из перечисленных 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);
});

Спецификации

Спецификация Статус Комментарий
WebUSB
Определение 'requestDevice' в этой спецификации.
Черновик Изначальное определение.

Совместимость

BCD tables only load in the browser