2016-05-11 51 views
2

我試圖通過Windows.Devices.Usb API使用通用Windows應用程序僅用於PC(無電話)(WinRT)連接到設備(SecuGen Hamster Pro 20)。無法從DeviceInformation.Id創建UsbDevice

該設備是一個指紋掃描儀。

我已經做了所有在網上發現這樣做的步驟:

我看使用的所有設備:

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

這將返回約1400設備。使用一些filteration後:

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

​​包含在我的機器3個設備(我已經嘗試過了其他機器上,發現10個結果一些)。

,因爲它返回0結果althought我敢肯定,我已經做了正確的我沒有使用過載查找設備DeviceInformation.FindAllAsync(String aqsFilter)(用正確的VID & PID)

這裏的問題是,當我嘗試從任何使用3個結果創建UsbDevice對象:

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

返回值是空的,我沒有運氣想盡一切他們(resultList[0]resultList[1]resultList[2])的。

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

我也試圖從任何從DeviceInformation.FindAllAsync()返回的1400個設備創建一個UsbDevice對象,但都返回null甚至有的扔,說the system cannot find the file specified 0x80070002

異常:

我使用配置的能力

我試圖閱讀DeviceAccessInformation它返回的設備DeviceAccessStatus.Unspecified

任何人都可以讓我知道我在這裏錯過了什麼?

回答

1

您必須使用UsbDevice.GetDeviceSelector,然後在搜索設備時使用選擇器。如果這不會返回任何內容,則設備未正確「配置」以使用WinUSB.sys驅動程序。 (據我所知,它必須使用該驅動程序與usb設備類一起使用)。

如果您手動告訴它在設備管理器中使用該驅動程序,那麼從理論上講,您仍然必須在註冊表之前使用regedit更改密鑰(注意:我這樣做並且仍然無法使用)。我發現一個解決方案,在這裏解決它: http://www.lewisbenge.net/2013/09/20/integrating-windows-8-1-with-owi-535-robotic-arm/ 基本上,你必須安裝使用inf文件的驅動程序。使用該網站上鍊接的那個,並根據目標平臺使用NTarm替換NTamd64