2017-09-08 3 views
2

J'essaie la nouvelle API Chrome WebUSB, mais je ne vois aucun périphérique connecté.L'API Chrome WebUSB ne renvoie aucun périphérique lors de l'utilisation de navigator.usb.getDevices()

Essayé ceci par exemple, avec différents périphériques USB connectés à mon PC Windows 7:

<html> 
    <body> 
     <button onclick="myFunction()">Click me</button> 

     <script> 
      function myFunction() { 
       console.log('Clicked'); 
       navigator.usb.getDevices() 
        .then(devices => { 
        devices.map(device => { 
         console.log('Device:'); 
         console.log(device.productName); 
         console.log(device.manufacturerName); 
        }); 
        }); 
      } 
     </script> 
    </body> 
</html> 

Mais aucun appareil a obtenu.

Qu'est-ce que je fais mal? Devrait-il fonctionner avec n'importe quel appareil?

Merci.

Répondre

5

Jusqu'à ce que votre page ait demandé l'autorisation d'accéder à un périphérique navigator.usb.getDevices() renverra une liste vide. À l'intérieur de votre gestionnaire onclick appelez navigator.usb.requestDevice() à la place avec un filtre en sélectionnant le fournisseur et l'ID de produit des périphériques que vous souhaitez prendre en charge. Voir l'exemple from the specification:

let button = document.getElementById('request-device'); 
button.addEventListener('click', async() => { 
    let device; 
    try { 
    device = await navigator.usb.requestDevice({ filters: [{ 
     vendorId: 0xABCD, 
     classCode: 0xFF, // vendor-specific 
     protocolCode: 0x01 
    }]}); 
    } catch() { 
    // No device was selected. 
    } 

    if (device !== undefined) { 
    // Add |device| to the UI. 
    } 
});