Как найти функции, которые вы используете для взаимодействия с 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.
}