【问题标题】:LibUsbDotNet doesn't open deviceLibUsbDotNet 不打开设备
【发布时间】:2018-09-19 11:43:00
【问题描述】:

我在 Win 10 上的 Visual Studio 2017 中使用最新的 LibUsbDotNet nuget 包。对于具有 2 个中断端点和 1 个批量 IN 端点的全速 USB 设备,我使用 zadiq 2.4 实用程序安装了 WinUSB 驱动程序。

当 UsbDevice.AllDevices 被调用时,LibUsbDotNet 可以看到我的设备。

但是,它无法打开我的设备:

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

MyUsbDevice 为空,不抛出异常。

我还尝试安装不同的驱动程序(libusbk 和 libusb-win32),但没有成功。

前段时间,我编写了一个 C++ 应用程序,以使用 libusb 库与我的 USB 设备进行通信 - 从那时起它就可以正常工作了。

有没有人可以确认 libusbdotnet 是工作产品?我欢迎任何建议如何找出问题所在。谢谢。

【问题讨论】:

  • 同意,这太疯狂了! sourceforge 上的 LibUsbDotNet_Setup.2.2.8.exe 下载已有 9 年历史,而活动的 github 项目似乎无法正常工作。我和其他 22K 人显然已经通过 nuget 安装了它,而且它似乎对我不起作用,并且样本已经过时(截至 2018/09 年中)。 ://

标签: libusb libusbdotnet


【解决方案1】:

这是UsbDeviceFinder 中的一个错误,其中使用int.MaxValue 而不是null 来忽略一个值。这使得UsbDeviceFinder 无法使用,并且所有使用它的示例都不起作用。

解决方法是使用

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

而不是

MyUsbDevice = context.Find(MyUsbFinder);

【讨论】:

    【解决方案2】:

    首先使用设备管理器找到您的供应商 ID 和产品 ID,输入设备,详细信息,然后是硬件 ID。

    接下来,您需要下载 LibUsbDotNet_Setup.2.2.8.exe 并运行安装程序。在设置过程中,您应该启用过滤器并根据您的供应商 ID 选择您的输入设备。然后你的代码会在之后找到设备

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      相关资源
      最近更新 更多