2016-05-11 3 views
2

Я пытаюсь подключиться к устройству (SecuGen Hamster Pro 20) через Windows.Devices.Usb API, используя универсальное приложение для Windows только для ПК (без телефонов) (WinRT).Не удается создать UsbDevice из DeviceInformation.Id

Устройство является сканером отпечатков пальцев.

Я сделал все шаги, найденные в Интернете, чтобы сделать это:

Я просмотрел для всех устройств, используя:

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

Это возвращает около 1400 устройств. После некоторого фильтрования с помощью:

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

resultList содержит 3 устройство в моей машине (я пробовал его на другой машине и нашел 10 результатов на некоторых).

я не использовал перегрузку для поиска устройств DeviceInformation.FindAllAsync(String aqsFilter), потому что она возвращает 0 результатов Althought я уверен, что я сделал это правильно (используется правильно VID & PID)

Проблема здесь в том, когда я пытаюсь создать UsbDevice объект любой из 3 результатов с использованием:

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> 

Я также попытался создать UsbDevice объект от любого из 1400 устройств, возвращенных из DeviceInformation.FindAllAsync() но все возвращается нуль и даже некоторые сгенерирует исключение, которое говорит the system cannot find the file specified 0x80070002

Я попытался прочитать DeviceAccessInformation для устройства, которое оно вернуло DeviceAccessStatus.Unspecified

Любой может привести меня к тому, что мне здесь не хватает?

ответ

1

Вы должны использовать UsbDevice.GetDeviceSelector, а затем использовать селектор при поиске устройства. Если это ничего не возвращает, устройство неправильно настроено для использования драйвера WinUSB.sys. (И из того, что я понимаю, он должен использовать этот драйвер для использования с классом usbdevice).

Если вы вручную сказали ему использовать этот драйвер в диспетчере устройств, то теоретически вам все равно придется менять ключ с помощью regedit до этого (Примечание: я сделал это, и он все равно не сработает). Я нашел решение, которое решило его здесь: http://www.lewisbenge.net/2013/09/20/integrating-windows-8-1-with-owi-535-robotic-arm/ В принципе, вам нужно установить драйвер, используя файл inf. используйте ссылку, связанную с этим сайтом, и замените NTamd64 на NTarm в зависимости от целевой платформы

Смежные вопросы