我正在寻找一种跨平台的方式,以C#获取USB插入和拔出事件,并找到了“LibUsbDotNet C# USB Library”(http://sourceforge.net/projects/libusbdotnet/?source=navbar)。
它按照预期工作,但在Linux上似乎无法获取设备挂载点(路径)。在Linux中,它使用“libusb”库,该库没有获取设备路径的方法。
以下是一个简单的代码示例,用于检测设备事件:
它按照预期工作,但在Linux上似乎无法获取设备挂载点(路径)。在Linux中,它使用“libusb”库,该库没有获取设备路径的方法。
以下是一个简单的代码示例,用于检测设备事件:
internal class DeviceNotification
{
public static IDeviceNotifier UsbDeviceNotifier = DeviceNotifier.OpenDeviceNotifier();
private static void Main(string[] args)
{
// Hook the device notifier event
UsbDeviceNotifier.OnDeviceNotify += OnDeviceNotifyEvent;
// Exit on and key pressed.
Console.Clear();
Console.WriteLine();
Console.WriteLine("Waiting for system level device events..");
Console.Write("[Press any key to exit]");
while (!Console.KeyAvailable)
Application.DoEvents();
UsbDeviceNotifier.Enabled = false; // Disable the device notifier
// Unhook the device notifier event
UsbDeviceNotifier.OnDeviceNotify -= OnDeviceNotifyEvent;
}
private static void OnDeviceNotifyEvent(object sender, DeviceNotifyEventArgs e)
{
// A Device system-level event has occured
Console.SetCursorPosition(0,Console.CursorTop);
Console.WriteLine(e.ToString()); // Dump the event info to output.
Console.WriteLine();
Console.Write("[Press any key to exit]");
}
}
这里是输出示例:
我的问题是如何获取已连接或已移除设备的路径,或者如何将libusb返回的信息与实际设备路径绑定?[设备类型:设备接口] [事件类型:设备到达] 名称:usbdev1.17 总线编号:1 设备地址:17 长度:18 描述符类型:设备 BcdUsb:0x0200 类别:每个接口子类:0x00 协议:0x00 MaxPacketSize0:64 厂商ID:0x059F 产品ID:0x1014 BcdDevice:0x0000 制造商字符串索引:1 产品字符串索引:2 序列号字符串索引:3 配置计数:1
[按任意键退出] [设备类型:设备接口] [事件类型:设备移除完成] 名称:usbdev1.17 总线编号:1 设备地址:17 长度:18 描述符类型:设备 BcdUsb:0x0200 类别:每个接口子类:0x00 协议:0x00 MaxPacketSize0:64 厂商ID:0x059F 产品ID:0x1014 BcdDevice:0x0000 制造商字符串索引:1 产品字符串索引:2 序列号字符串索引:3 配置计数:1