zoukankan      html  css  js  c++  java
  • 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();
            }
    漫思
  • 相关阅读:
    Hashset 常用的方法
    List新增的方法
    关于集合
    转载关于sql 注入
    可变参数和preparestatement 结合使用
    数据库连接 中的测试事例,包括工具类,配置文件,查询,增加,以及查询后返回对象
    在静态方法中不能调用非静态变量,但getclass()可以换个形式来调用
    用一个对象中读出信息进行出入的代码片段
    新建maven项目更改 web版本
    elasticsearch 局部更新
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15456014.html
Copyright © 2011-2022 走看看