2017-08-30 106 views
1

我正在使用Blink(1)mk2设备通过浏览器浏览需要通知提醒的项目。 我已经尝试使用WEBUSB API连接到USB的以下代码。Blink1 mk2通过WEBUSB API进行Chrome浏览器连接Light Blink问题

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,claimInterface也工作得很好,当我打电话controlTransferOut也发出命令并返回结果为:

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

但闪烁或USB上的颜色变化也没有体现出来。

我是否错过了一些东西,或者是否有任何其他配置需要使用才能使USB亮起来?

+0

请注意,标签“眨眼睛”与您想要的无关。从技术上讲,WebUSB,因为它是一个不同的API .. – Xan

回答

0

我跑这个代码我发现,当我设置requestType"standard"我有一个"stall",但如果我将它设置为"class"(这是正确的,因为这是HID类控制转移SET_REPORT)然后我得到"ok"和颜色我眨眼的LED(1)mk2的变化。

请注意,上面代码段中的RGB值是随机设置的,因此您可能会获得非常暗淡的颜色。

+0

我已经尝试了你所建议的更改,但它不适用于我...我有一个铬版本62.0.3202.89(官方版本)(64位)...这里是我正在经历的视频:https://www.screencast.com/t/1reAHN86nzlm ...更改颜色只显示红色,以便随机选取颜色不应生效,将请求类型更改为“class”但请求正在发送闪烁USB ...我也有闪烁(1)mk2,你可以在视频中看到。 –