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(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?