Как найти функции, которые вы используете для взаимодействия с USB-устройством

Отказ от ответственности: я очень плохо знаком с доступом к USB-устройствам из Интернета.

Читая этот документ, я успешно подключился к устройству. На моей странице есть кнопка, кнопка вызывает окно для подключения к устройству, затем она может выбрать конфигурацию и запросить интерфейс.

Из того, что я понимаю, устройства тогда имеют разные возможности в зависимости от того, что они делают. Как узнать, на что способно устройство? Я просмотрел все, что дает мне регистрация устройства, и не могу найти список методов, реквизитов или чего-либо еще.

Устройство представляет собой рентгеновский датчик, поэтому документация довольно скудная из того, что я видел.

Если я задаю не тот вопрос, извините. Опять же, очень плохо знакомы с этим. Может быть, это неправильно.

Фрагмент кода, который соединяет меня с устройством:

navigator.usb.requestDevice({ filters: [{ vendorId: 0x0547 }] })
                .then(device => {
                    console.log(device);
                })
            .catch(error => { console.log(error.message); });

3 ответа

Я никогда не использовал USB-соединение, но, глядя на документацию по нему и не видя возможности спросить устройство, на что оно способно. Я подозреваю, что взаимодействие с устройством может быть сравнимо с сокетным соединением в том смысле, что не существует методов, специфичных для этого устройства, но, возможно, json, который отправляется / принимается, когда запрашивается интерфейс. Затем, controlTransferIn() а также controlTransferOut() вероятно, может использоваться для отправки / получения информации на / с устройства.

Обратите внимание, что controlTransferIn / controlTransferOut оба описывают конкретного поставщика request / value свойства.

Я думаю, что лучший путь вперед - обратиться к поставщику напрямую за документацией о том, как взаимодействовать с его USB-устройством. Это должно быть сделано для любых устройств, которые вы хотите поддерживать. Также имейте в виду, с точки зрения архитектуры в вашем коде, абстракция - ваш друг.

Ознакомьтесь с этим примером (речь идет о настройке термопринтера USB, он не тот, но он мне помог): https://github.com/drffej/webusb.printer/blob/master/printer.html

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

С Уважением,

Предполагая, что вы сделали домашнее задание:

  • обслуживание вашей страницы через https
  • используя браузер, поддерживающий WebUSB
  • Выполнение следующего фрагмента в рамках действия, вызванного пользователем, т. е. обычно обратного вызова после того, как пользователь нажал кнопку.

Вы можете получить информацию о вашем USB-устройстве следующим образом:

      async function onClick(){
  const vendorId = 0x0547; // your vendor id
  const device = await navigator.usb.requestDevice({ filters: [{vendorId}] });

  console.log(device.configurations); // <- this will print conf. with interfaces and endpoints per interface.

}
Другие вопросы по тегам