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