USB.requestDevice()

Experimental

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

Secure context

This feature is available only in secure contexts (en-US) (HTTPS), in some or all supporting browsers.

Метод requestDevice() интерфейса USB возвращает Promise, возвращающий экземпляр USBDevice (en-US), если необходимое устройство было найдено. Вызов этого метода начинает процесс соединения браузера с устройством.

Синтаксис

USB.requestDevice([filters])

Параметры

filters
Массив объектов, определяющих фильтры для устройств, к которым требуется подключиться. Каждый фильтр может содержать следующие свойства:
  • vendorId - ИД производителя (USB VID)
  • productId - ИД устройства USB PID
  • classCode - код класса функциональности устройства
  • subclassCode - код подкласса
  • protocolCode - код протокола
  • serialNumber - серийный номер

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

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

Пример

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