[英]Sending data blink(1) device
我剛剛開始研究webusb並嘗試使用它來打開blink(1)mk2 。 我能夠發現該設備,打開它,聲明一個接口,然后調用controlTransferOut
。 我現在遇到的麻煩是不知道我應該發送什么數據以使其閃爍或點亮。
我一直在使用這個示例 ,其中有人能夠使用Chrome擴展程序(使用chrome.usb
界面)來控制它, chrome.usb
來激發它的正常工作。 我寫了以下代碼:
const VENDOR_ID = 0x27b8;
navigator.usb.requestDevice({
filters: [{
vendorId: VENDOR_ID
}]
}).then(selectedDevice => {
device = selectedDevice;
return device.open();
}).then(() => {
return device.selectConfiguration(1);
}).then(() => {
return device.claimInterface(0);
}).then(() => {
return device.controlTransferOut({
requestType: 'class',
recipient: 'interface',
request: 0x09,
value: 1,
index: 0
});
}).then(() => {
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;
return device.transferIn(1, data);
}).then(result => {
console.log(result);
}).catch(error => {
console.log(error);
});
調用controlTransferOut
時,此操作會失敗並出現傳輸錯誤。 但是,如果我將requestType
更改為standard,則在調用transferIn
時它繼續失敗。
我如何找出需要什么樣的數據和數據格式才能使其正常工作?
您需要在第一個controlTransferOut
包括data
。 transferIn
不向設備發送數據,而是接收數據。
編輯添加 :不幸的是,如果未實現標准設備類,則沒有通用的方法來確定發送到USB設備或從USB設備發送的數據的正確格式。 blink(1)mk2使用HID協議,但是它發送和接收的功能報告的特定格式是非標准的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.