2017-08-30 7 views
1

Je travaille sur un projet nécessitant une alerte de notification via un navigateur utilisant un périphérique Blink (1) mk2. J'ai essayé le code suivant pour la connexion à l'usb en utilisant l'API WEBUSB.Blink1 mk2 Connectivité Chrome via l'API WEBUSB Light Blink Problème

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); 
}); 

Je suis capable de se connecter à l'USB après avoir réglé la fenêtre des autorisations. Après que le code ci-dessus ouvre, selectConfiguration, claimInterface aussi a bien fonctionné et quand je l'appelle controlTransferOut il envoie également la commande et retourner le résultat comme:

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

Mais clignotant ou changement de couleur sur l'USB n'a pas pris en compte. Est-ce qu'il me manque quelque chose ou est-ce qu'il y a une autre configuration que je dois utiliser pour allumer la lumière sur USB?

+0

Notez, le tag "blink" n'a rien à voir avec ce que vous voulez. Techniquement, WebUSB car c'est une API différente .. – Xan

Répondre

0

j'ai couru ce code et moi-même trouvé que lorsque je mis requestType-"standard" Je suis un "stall" mais si je mets à "class" (ce qui est correct puisque c'est le transfert de contrôle de classe HID SET_REPORT) puis-je obtenir "ok" et la couleur de la LED sur mon clignotement (1) mk2 change.

Notez que les valeurs RVB dans votre extrait ci-dessus sont définies de manière aléatoire, ce qui peut entraîner une couleur très sombre.

+0

J'ai essayé les changements que vous avez suggérés mais cela n'a pas fonctionné pour moi ... J'ai une version chromée 62.0.3202.89 (Build Officiel) (64-bit) ... voici la vidéo de ce que je vis: https://www.screencast.com/t/1reAHN86nzlm ... Changé la couleur pour montrer le rouge seulement de sorte que la couleur de choix aléatoire ne devrait pas prendre effet, le type de requête changé à "classe" mais la demande est en train de clignoter USB ... J'ai aussi blink (1) mk2 comme vous pouvez le voir dans la vidéo. –