使用HidLibrary检测C#中任何USB HID的输入

时间:2013-08-05 04:37:15

标签: c# usb hid

首先,我是C#的新手。我想创建一个检测任何usb隐藏设备的应用程序(我使用HidLibrary并检测到HID)但我也想从隐藏中获取输入(我使用了Raw input但是没有我觉得它只适用于键盘)。例如,如果我已连接鼠标,那么来自该鼠标的任何类型的输入移动或点击将导致功能运行。

我想知道的是,当输入来自HID时,哪个功能在HidLibrary中执行? 或者,如果有比HidLibrary更好的选择。 如果你能提供任何代码片段,我将非常感谢:)

1 个答案:

答案 0 :(得分:3)

与我使用过的其他人相比,HidLibrary相当不错,所以请坚持下去。

当数据进入时它会触发" OnReport"初始化HidDevice时分配的处理程序。

E.g。

_myDevice = HidDevices.Enumerate(myVendorId, myProductId).FirstOrDefault();

if (_myDevice != null)
{
    _myDevice.OpenDevice();

    _myDevice.Inserted += DeviceAttachedHandler;
    _myDevice.Removed += DeviceRemovedHandler;

    _myDevice.MonitorDeviceEvents = true;

    // this is where we start listening for data
    _myDevice.ReadReport(OnReport); 
}

在这种情况下," OnReport"是事件处理程序的名称,只要数据从您的设备到达,就会调用它。名称" OnReport"不是非常具有描述性,但是这些示例都使用了这个名称,所以我也在我的代码中坚持使用它。重要的是,在处理程序结束时,您要求设备在更多数据到达后再次激活,因此OnReport函数中的最后一行再次调用ReadReport。

private void OnReport(HidReport report)
{
    if (attached == false) { return; }

    // process your data here
    var byteFromMyDevice = report.Data[0];

    // we need to start listening again for more data
    _myDevice.ReadReport(OnReport);
}
相关问题