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


网上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();
         }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM