C#基于LibUsbDotNet实现USB通信(一)

网上C#USB通信的资料比较少, 基本上都是基于LibUsbDotNet 和 CyUsb, 关于打印机设备的还有一个OPOS。

本篇文章基于LibUsbDotNet。

  1. 下载并安装 LibUsbDotNet 安装文件。

  2. 运行Filter Wizard, Install a device filter。 安装需要通信的usb设备。

  C#基于LibUsbDotNet实现USB通信(一)

  3. 建一个简单的控制台项目,进行测试, 下图为打印需要通信设备的信息。

  C#基于LibUsbDotNet实现USB通信(一)

相关代码:  

引用  

1 2 3 using LibUsbDotNet; using LibUsbDotNet.Main; using LibUsbDotNet.Info;

PrintUsbInfo

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 public static void PrintUsbInfo()        {            UsbDevice usbDevice = null;            UsbRegDeviceList allDevices = UsbDevice.AllDevices;              Console.WriteLine("Found {0} devices", allDevices.Count);              foreach (UsbRegistry usbRegistry in allDevices)            {                Console.WriteLine("Got device: {0}\r\n", usbRegistry.FullName);                  if (usbRegistry.Open(out usbDevice))                {                    Console.WriteLine("Device Information\r\n------------------");                      Console.WriteLine("{0}", usbDevice.Info.ToString());                      Console.WriteLine("VID & PID: {0} {1}", usbDevice.Info.Descriptor.VendorID, usbDevice.Info.Descriptor.ProductID);                      Console.WriteLine("\r\nDevice configuration\r\n--------------------");                    foreach (UsbConfigInfo usbConfigInfo in usbDevice.Configs)                    {                        Console.WriteLine("{0}", usbConfigInfo.ToString());                          Console.WriteLine("\r\nDevice interface list\r\n---------------------");                        ReadOnlyCollection<UsbInterfaceInfo> interfaceList = usbConfigInfo.InterfaceInfoList;                        foreach (UsbInterfaceInfo usbInterfaceInfo in interfaceList)                        {                            Console.WriteLine("{0}", usbInterfaceInfo.ToString());                              Console.WriteLine("\r\nDevice endpoint list\r\n--------------------");                            ReadOnlyCollection<UsbEndpointInfo> endpointList = usbInterfaceInfo.EndpointInfoList;                            foreach (UsbEndpointInfo usbEndpointInfo in endpointList)                            {                                Console.WriteLine("{0}", usbEndpointInfo.ToString());                            }                        }                    }                    usbDevice.Close();                }                Console.WriteLine("\r\n----- Device information finished -----\r\n");            }        }

调用

1 2 3 4 5 6 7 public static void Main(string[] args)         {             PrintUsbInfo();               // Wait for user input..             Console.ReadKey();         }

 

上一篇:集合框架-工具类-Arrays方法介绍


下一篇:Object的理解