2016-05-11 17 views
2

Ich versuche, eine Verbindung zu einem Gerät (SecuGen Hamster Pro 20) über Windows.Devices.Usb APIs mit Universal Windows App nur für PC (keine Telefone) (WinRT).Kann UsbDevice nicht von DeviceInformation.Id erstellen

Das Gerät ist ein Fingerabdruck-Scanner.

Ich habe mit für alle Geräte angesehen:

Ich habe online, dass zu tun, fanden alle Schritte getan

var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(); 

Das gibt etwa 1400 Geräte. Nach einiger filteration mit:

var resultList = myDevices.Where(s => s.Name.ToLower().Contains("secu")).ToList<DeviceInformation>(); 

resultList enthält 3 Geräte in meinem Rechner (ich habe es auf einer anderen Maschine versucht und fand 10 Treffer auf etwas).

Ich habe nicht die Überlastung verwenden für Geräte zu finden, weil es DeviceInformation.FindAllAsync(String aqsFilter) 0 Ergebnisse althought kehrt Ich bin sicher, dass ich es richtig (verwendet richtige VID & PID) getan haben

Das Problem hier ist, wenn ich versuche, ein UsbDevice Objekt aus einem der 3 Ergebnisse erstellen mit:

UsbDevice device = await UsbDevice.FromIdAsync(resultList[0].Id); 

der Rückgabewert null ist, habe ich sie alle ausprobiert (resultList[0], resultList[1], resultList[2]) ohne Glück.

konfiguriert ich die Fähigkeiten mit:

<DeviceCapability Name="usb"> 
     <Device Id="vidpid:1162 2200"> 
     <Function Type="name:vendorSpecific"/> 
     </Device> 
    </DeviceCapability> 

Ich habe versucht, auch ein UsbDevice Objekt aus einem der 1400-Geräte von DeviceInformation.FindAllAsync() zurück erstellen, aber alle wieder null und einige werfen sogar eine Ausnahme, die the system cannot find the file specified 0x80070002

sagt

Ich habe versucht, DeviceAccessInformation für das Gerät zu lesen DeviceAccessStatus.Unspecified

Jeder kann mich zu dem führen, was ich hier fehlt?

Antwort

1

Sie müssen UsbDevice.GetDeviceSelector verwenden und dann den Selektor verwenden, wenn Sie nach dem Gerät suchen. Wenn das nichts zurückgibt, ist das Gerät nicht ordnungsgemäß konfiguriert, um den WinUSB.sys-Treiber zu verwenden. (Und von dem, was ich verstehe, muss dieser Treiber verwendet werden, um mit der usbdevice-Klasse verwendet zu werden).

Wenn Sie ihm manuell mitgeteilt haben, diesen Treiber im Gerätemanager zu verwenden, müssen Sie theoretisch noch einen Schlüssel mit regedit ändern, bevor das funktioniert (Hinweis: Ich habe das getan und es würde immer noch nicht funktionieren). Ich habe eine Lösung gefunden, die es hier gelöst hat: http://www.lewisbenge.net/2013/09/20/integrating-windows-8-1-with-owi-535-robotic-arm/ Grundsätzlich müssen Sie den Treiber mit Hilfe einer inf-Datei installieren. Verwenden Sie den auf dieser Site verlinkten und ersetzen Sie den NTamd64 durch NTarm, abhängig von der Zielplattform