2016-03-23 8 views
0

Umbuchung von https://groups.google.com/a/chromium.org/d/topic/chromium-apps/noGfn29Aed8/discussion für öffentliche Antwort.chrome.usb.findDevices funktioniert nicht zeigt Fehler beim Öffnen des Geräts: Die Entität wurde nicht in chrome gefunden: // device-log/

Ich versuche, eine Chrome-App zu entwickeln, um über die chrome.usb-API mit einem HID zu kommunizieren. Ich benutze diese Funktionen.

  1. chrome.usb.findDevices
  2. chrome.usb.controlTransfer

Was ich bisher versucht habe, funktioniert nicht. Die Info in chrome://device-log/ zeigt diese Fehlermeldung.

USB  Event [13:54:01] Failed to open device: Entity not found 

Ich verwende Right VendorId und ProductId im Dezimalformat, die ich aus Gerätemanager Informationen extrahiert habe.

Hier ist das Code-Snippet, das ich verwende.

chrome.usb.findDevices(DEVICE_INFO, function (devices) { 
    if (!devices || !devices.length) { 
     console.log('device not found'); 
    } 

    console.log("Devices: " + devices); 
    console.log(devices[0]); 

    var TransferData = { 
     "requestType": "class", 
     "recipient": "interface", 
     "direction": "out", 
     "request": 0xx9, 
     "value": 0xxx0, 
     "index": 0, 
     "data": new Uint8Array([00,05, 47, 76, 66, 48, 47,00]).buffer 
    }; 


    setTimeout(function() { 
     chrome.usb.controlTransfer(devices[0], TransferData, function (config) { 
      if (chrome.runtime.lastError) { 
       console.log(chrome.runtime.lastError); 
      } else { 
       console.log('Data Transfer completed'); 
      } 
     }); 
    }, 3000); 
}); 

Antwort

1

Ich sehe zwei Fragen in Ihrer Frage.

  1. Überprüfen Sie Ihre Lieferanten-/Produkt-IDs. Sie sagten, Sie hätten Dezimal-IDs, aber die DEVICE_INFO Definition fehlt. Ich sehe in dem Codeschnipsel, das Sie 0xx9 in dem Anforderungsfeld TransferData verwenden, das kein gültiges Hex-Literal ist. Machst du dasselbe in der DEVICE_INFO? Wenn die vid 1234 dezimal ist, stellen Sie sicher, dass Sie nicht 0x1234 sagen.

  2. Es gibt separate chrome. APIs für USB und HID. Ich bin mir ziemlich sicher, dass die USB-Schnittstelle es Ihnen nicht erlauben wird, Geräte zu manipulieren, die als HID werben. Sie müssen stattdessen die Schnittstelle chrome.hid für diese Geräte verwenden.

Es gibt ein paar Fragen hier, dass einige hilfreiche Informationen für Sie haben könnte:

Verwandte Themen