2017-06-22 4 views
1

Ich verbrachte viel zu viel Zeit mit dem Versuch, das Problem hier zu verstehen. Ich arbeite mit einem HID Barcode-Scanner und bin in der Lage, die Geräteinformationen zu erhalten. Aber ich kann das HidDevice-Objekt nicht einmal mit der richtigen Geräte-ID erreichen. Es gibt immer null zurück. Hier ist, was ich habe:HIdDevice.fromIdAsync immer null zurück

var selector = Windows.Devices.HumanInterfaceDevice.HidDevice.getDeviceSelector(parseInt('0x1', 16), parseInt('0x6', 16)); 

     Windows.Devices.Enumeration.DeviceInformation.findAllAsync(selector, null).then(
       function (deviceInfoCollection) { 
        if (deviceInfoCollection.length > 0) { 
         for (var i = 0; i < deviceInfoCollection.length; i++) { 
          var id = deviceInfoCollection.getAt(i).id; 
          return Windows.Devices.HumanInterfaceDevice.HidDevice.fromIdAsync(id, Windows.Storage.FileAccessMode.readWrite); 
         } 
        } 
        else { 
         throw "No Devices Discovered."; 
        } 
       }) 
     .done(function (device) { 
      if (device != null) 
       successCallback(device.name); 
     }); 

ich diese Gerätefunktionen in meinem Manifest-Datei hinzugefügt:

<DeviceCapability Name="humaninterfacedevice"> 
    <Device Id="any"> 
     <Function Type="usage:0001 *"/> 
    </Device> 
    </DeviceCapability> 
+0

Haben Sie das [CustomHidDeviceAccess] (https://github.com/Microsoft/Windows-universal-samples/tree/6370138b150ca8a34ff86de376ab6408c5587f5d/Samples/CustomHidDeviceAccess) Beispiel getestet? Wenn nicht, bitte verweisen Sie es. –

+0

Danke. Ich habe, und da die Selektoren darin konfiguriert waren, mit einem SuperMUTT-Gerät zu arbeiten, änderte ich die usageID und die usagePageID, damit es tastaturähnliche HID-Geräte auswählte. Während ich die Geräte aufgelistet habe, konnte ich keine Verbindung zu ihnen herstellen. Außerdem arbeite ich mit JavaScript, wenn dies für den Prozess einen Unterschied macht. – newbee8

Antwort

1

ich jetzt durch das gleiche Problem geht. Das einzige, was ich in Ihrem Code zu sehen, die mir seltsam auffällt, ist das folgende Manifest tag:

<Device Id="any"> 

Üblicherweise werden die „alle“ Wert funktioniert. Aber ich habe Probleme bekommen, wo der Verkäufer und die Produkt-ID benötigt werden; Ich bin mir nicht ganz sicher, warum, aber ich denke, es basiert auf der Art des Geräts/der Verwendung. Ich würde versuchen, den Verkäufer und die Produkt-ID hart zu codieren, um zu sehen, ob es einen Unterschied macht.

Ein anderer Gedanke: Ich vermute, die durch den Gebrauch Tag, das der Scanner als Tastatur konfiguriert ist. Sie können überprüfen, ob Ihr Scanner als Nicht-Tastatur-HID-Gerät konfiguriert werden kann, was mir persönlich geholfen hat. Ich sehe andere Leute im Internet mit Problemen, bei denen ein HidDevice als null zurückgegeben wird, weil ein anderes Programm dieses Gerät verwendet; In Ihrem Fall könnte das Betriebssystem die Tastatur bereits verwenden und es irgendwie aussperren.

Viel Glück!

+0

Vielen Dank für Ihre Notizen, Dave. Ich habe versucht, das Vid/Pid für die Gerätefähigkeit zu geben, aber kein Glück dort. Und die Anwendung muss verschiedene Arten von Barcode-Scannern und PinPads unterstützen, die alle hoffentlich Tastaturen emulieren werden. Aber ich experimentierte mit dem Barcode-Scanner, indem ich ihn in den POS-Modus stellte, und die Microsoft POS-Bibliotheken konnten ihn abholen. Jedenfalls versuche ich, den Hid-Modus zu aktivieren, um die Einrichtung des Geräts zu vereinfachen. In unserem Anwendungsfall können mehrere Peripheriegeräte gleichzeitig angeschlossen sein. – newbee8