在C#中使用LibUsbDotNet与HID设备交互

时间:2013-02-01 21:06:49

标签: c# usb libusb

简单地说:我想知道LibUsbDotNet是否可以读取和写入HID功能报告。

首先,我尝试使用带有以下示例代码的vid / pid找到我的设备

class Program
    {
        public static UsbDevice MyUsbDevice;
        public static UsbDeviceFinder uFind = new UsbDeviceFinder(1234,4321);

        static void Main(string[] args)
        {
            ErrorCode ec = ErrorCode.None;

            try
            {
                // Find and open the usb device.
                MyUsbDevice = UsbDevice.OpenUsbDevice(uFind);

                // If the device is open and ready
                if (MyUsbDevice == null) throw new Exception("Device Not Found.");

但我总是会找不到设备。

我已在“设备管理器>人机接口设备”下检查了我的设备是否存在。

如果有人可以建议正确的方法在c#中实现相同的目标,那会很有帮助。

以前我试图在python中实现相同的功能(使用PyUsb),但缺少示例和文档使我无望。

1 个答案:

答案 0 :(得分:0)

在libUsbDotNet的安装文件夹中,有一个名为“inf-wizard.exe”的文件运行该app并安装libUsbDotNet使用的“假驱动程序”来查找驱动程序。

  

如果你找不到“inf-wizard.exe”,请尝试从这里下载libUsbDotNet:http://sourceforge.net/projects/libusbdotnet/

您可能必须使用设备管理器查找特定驱动程序的Pid和Vid(即使未找到驱动程序,也应显示Vid和Pid)

安装后将Pid和Vid转换为整数,此网站可能会有所帮助http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

在代码ex:

中使用转换后的整数
//Hex Values: Pid = 4D9; Vid = 1605; 

public static UsbDeviceFinder uFind = new UsbDeviceFinder(1241, 5637);

Windows要求驱动程序与任何类型的硬件进行交换,这个过程在linux中要简单得多,请参阅link (connect hack)以便简单了解usb通信的工作原理。 (这是基于Linux的,但核心保持不变)