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


    网上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}
    ", usbRegistry.FullName);
    
                    if (usbRegistry.Open(out usbDevice))
                    {
                        Console.WriteLine("Device Information
    ------------------");
    
                        Console.WriteLine("{0}", usbDevice.Info.ToString());
    
                        Console.WriteLine("VID & PID: {0} {1}", usbDevice.Info.Descriptor.VendorID, usbDevice.Info.Descriptor.ProductID);
    
                        Console.WriteLine("
    Device configuration
    --------------------");
                        foreach (UsbConfigInfo usbConfigInfo in usbDevice.Configs)
                        {
                            Console.WriteLine("{0}", usbConfigInfo.ToString());
    
                            Console.WriteLine("
    Device interface list
    ---------------------");
                            ReadOnlyCollection<UsbInterfaceInfo> interfaceList = usbConfigInfo.InterfaceInfoList;
                            foreach (UsbInterfaceInfo usbInterfaceInfo in interfaceList)
                            {
                                Console.WriteLine("{0}", usbInterfaceInfo.ToString());
    
                                Console.WriteLine("
    Device endpoint list
    --------------------");
                                ReadOnlyCollection<UsbEndpointInfo> endpointList = usbInterfaceInfo.EndpointInfoList;
                                foreach (UsbEndpointInfo usbEndpointInfo in endpointList)
                                {
                                    Console.WriteLine("{0}", usbEndpointInfo.ToString());
                                }
                            }
                        }
                        usbDevice.Close();
                    }
                    Console.WriteLine("
    ----- Device information finished -----
    ");
                }
            }
    

    调用

    public static void Main(string[] args)
            {
                PrintUsbInfo();
    
                // Wait for user input..
                Console.ReadKey();
            }
  • 相关阅读:
    SwiftUI:看我展示52张扑克牌,“很快啊!”
    不会吧,这也行?iOS后台锁屏监听摇一摇
    分布式锁
    布隆过滤器原理
    redis缓存穿透
    布隆过滤器应用DEMO
    线程的声明周期
    分布式事务
    滑动窗口协议
    代理
  • 原文地址:https://www.cnblogs.com/jackbase/p/7244046.html
Copyright © 2020-2023  润新知