USB开发相关记录
1. 开发环境及参考
1.1 语言对应的开发包
C/C++ libusb
C# >>>>>
libUSBDotNet–安装包 LibUsbDotNet_Setup.2.2.8.exe
HID 操作库
WINUSBnet ,貌似只能高速(480M),不能低速
python pyUSB
自发自收下位机
USB基础
参考资料
微软Docs Windows Windows 驱动程序 驱动程序技术 USB
USB官方文档库
2. python 操作
2.1 挂载驱动
点击 install 安装后面就可以在代码中安装
2.2 安装完成之后打开python代码开始查看信息
import usb.core
all_devs = usb.core.find(find_all=True)
for devices1 in all_devs:
print(devices1)
3. C# 代码操作
3.1 实现对设备信息的读取
-
首先操作 2.1 给设备安装一个驱动
-
新建一个控制台工程
-
写入如下的代码
如果挂载正常的话可以显示出之前被挂载的设备的信息
using System;
using LibUsbDotNet;
using LibUsbDotNet.Info;
using LibUsbDotNet.Main;
using System.Collections.ObjectModel;
namespace ConsoleApp1
{
internal class Program
{
public static UsbDevice MyUsbDevice;
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// Dump all devices and descriptor information to console output.
UsbRegDeviceList allDevices = UsbDevice.AllDevices;
foreach (UsbRegistry usbRegistry in allDevices)
{
if (usbRegistry.Open(out MyUsbDevice))
{
Console.WriteLine(MyUsbDevice.Info.ToString());
for (int iConfig = 0; iConfig < MyUsbDevice.Configs.Count; iConfig++)
{
UsbConfigInfo configInfo = MyUsbDevice.Configs[iConfig];
Console.WriteLine(configInfo.ToString());
ReadOnlyCollection<UsbInterfaceInfo> interfaceList = configInfo.InterfaceInfoList;
for (int iInterface = 0; iInterface < interfaceList.Count; iInterface++)
{
UsbInterfaceInfo interfaceInfo = interfaceList[iInterface];
Console.WriteLine(interfaceInfo.ToString());
ReadOnlyCollection<UsbEndpointInfo> endpointList = interfaceInfo.EndpointInfoList;
for (int iEndpoint = 0; iEndpoint < endpointList.Count; iEndpoint++)
{
Console.WriteLine(endpointList[iEndpoint].ToString());
}
}
}
}
}
// Free usb resources.
// This is necessary for libusb-1.0 and Linux compatibility.
UsbDevice.Exit();
// Wait for user input..
Console.ReadKey();
}
}
}