网上C#USB通信的资料比较少, 基本上都是基于LibUsbDotNet 和 CyUsb, 关于打印机设备的还有一个OPOS。
本篇文章基于LibUsbDotNet。
1. 下载并安装 LibUsbDotNet 安装文件。
2. 运行Filter Wizard, Install a device filter。 安装需要通信的usb设备。
3. 建一个简单的控制台项目,进行测试, 下图为打印需要通信设备的信息。
相关代码:
引用
using LibUsbDotNet;
using LibUsbDotNet.Main;
using LibUsbDotNet.Info;
PrintUsbInfo
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");}}
调用
public static void Main(string[] args){PrintUsbInfo();// Wait for user input..Console.ReadKey();}