LibUsbDotNet не открывает устройство - PullRequest
0 голосов
/ 19 сентября 2018

Я использую последний пакет nuget LibUsbDotNet в Visual Studio 2017 на Win 10. Для моего полнофункционального USB-устройства с 2 конечными точками прерывания и 1 объемной конечной точкой IN я установил драйвер WinUSB с помощью утилиты zadiq 2.4.

LibUsbDotNet может видетьмое устройство, когда вызывается UsbDevice.AllDevices.

Однако оно не может открыть мое устройство, используя:

UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(VID, PID);
UsbDevice MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);

MyUsbDevice имеет значение null, исключение не выдано.

Iтакже пытался установить разные драйверы (libusbk и libusb-win32), но безуспешно.

Некоторое время назад я написал приложение C ++ для связи с моим USB-устройством с помощью библиотеки libusb - и с тех пор оно работает без каких-либо проблем..

Кто-нибудь может подтвердить, что libusbdotnet - это работающий продукт?Я приветствую любые советы, как найти то, что не так.Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Это ошибка в UsbDeviceFinder, где int.MaxValue используется вместо null для игнорирования значения.Это делает UsbDeviceFinder непригодным для использования, и все примеры, которые его используют, не работают.

Обходной путь должен использовать

MyUsbDevice = context.Find (device => device.ProductId == ProductId && device.VendorId == VendorId);

вместо

MyUsbDevice = context.Find (MyUsbFinder);

0 голосов
/ 18 октября 2018

Сначала найдите свой идентификатор поставщика и идентификатор продукта с помощью диспетчера устройств, устройства ввода, подробностей, а затем идентификатора оборудования.

Далее необходимо загрузить LibUsbDotNet_Setup.2.2.8.exe и запустить программу установки.Во время настройки вы должны включить фильтр и выбрать устройство ввода в соответствии с идентификатором вашего поставщика.Тогда ваш код найдет устройство потом

...