Blink1 mk2 Chrome подключение через WEBUSB API Light Blink Issue

Я работаю над проектом, которому нужно уведомление через браузер с помощью устройства Blink(1) mk2. Я попробовал следующий код для подключения к USB с помощью WEBUSB API.

const VENDOR_ID = 0x27b8;
navigator.usb.requestDevice({
  filters: [{
    vendorId: VENDOR_ID
  }]
}).then(selectedDevice => {
  device = selectedDevice;
console.log("open")
 var tOpen = device.open();

console.log("opened")
return tOpen;
}).then(() => {
console.log("selectConfiguration")
  return device.selectConfiguration(1);
}).then(() => {
console.log("claimInterface")
  return device.claimInterface(0);
}).then(() => {
console.log("controlTransferOut")
 const r = Math.floor((Math.random() * 255) + 0);
  const g = Math.floor((Math.random() * 255) + 0);
  const b = Math.floor((Math.random() * 255) + 0);
  // not entirely sure what is going on below...
  const fadeMillis = 500;
  const th = (fadeMillis / 10) >> 8;
  const tl = (fadeMillis / 10) & 0xff;

  const data = new Uint8Array([0x01, 0x63, r, g, b, th, tl, 0x00, 0x00]).buffer;


var rgb = new Uint8Array(3);
  rgb[0] = r;
  rgb[1] = g;
  rgb[2] = b;

  return device.controlTransferOut({
    requestType: 'standard',
    recipient: 'interface', 
    request: 0x09,
    value: 1,
    index: 0
  },data);
}).then(result => {
  console.log(result);
}).catch(error => {
  console.log(error);
});

Я могу подключиться к USB после установки всплывающих окон. После того, как вышеприведенный код откроет его, selectConfiguration, ApplicInterface также будет работать нормально, и когда я вызываю controlTransferOut, он также отправляет команду и возвращает результат в виде:

USBOutTransferResult {bytesWritten: 8, status: "ok"}

Но мигание или изменение цвета на USB не отражается.

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

1 ответ

Я сам запустил этот код и обнаружил, что когда requestType в "standard" Я получил "stall" но если я установлю это "class" (что правильно, так как это передача управления классом HID SET_REPORT), то я получаю "ok" и цвет светодиода на моем мигает (1) mk2 меняется.

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

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