您的位置:首页 > 编程语言 > C#

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

2017-07-27 11:45 381 查看
网上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}\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");
}
}


调用

public static void Main(string[] args)
{
PrintUsbInfo();

// Wait for user input..
Console.ReadKey();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: