Intereting Posts
Исправление текста Itextsharp Как решить статические и нестатические методы C #? ITextSharp возвращает тот же размер pdf, когда я пытаюсь сжать pdf-файл с разными уровнями Можем ли мы использовать GetEnumerator () без использования интерфейса IEnumerable? Вставить приложение Unity3D в приложение WPF SqlCommand с использованием оператора копирование определенного диапазона выделенных ячеек из одного листа на другой рабочий лист Статические конструкторы вызывают накладные расходы на производительность? Подпись под общим названием Azure – подпись не соответствует Вызов скалярной функции из c # с использованием Entity Framework 4.0 / .edmx Ввод данных GridView в DataTable Сериализовать объект в XElement и десериализовать его в памяти Регулярное выражение для проверки допустимого времени Как объявить массив объектов в C # Почему неизменяемые объекты являются streamобезопасными?

Невозможно создать UsbDevice из DeviceInformation.Id

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

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

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

Я искал все устройства, используя:

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

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

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

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

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

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

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

Возвращаемое значение равно null, я пробовал все из них ( resultList[0] , resultList[1] , resultList[2] ) без везения.

Я настроил возможности, используя:

       

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

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

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

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

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