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