首先,我是 C# 新手。我想创建一个检测任何 USB 隐藏设备的应用程序(我使用过HidLibrary并且它检测到 HID)但我也想从隐藏中获取输入(我使用过原始输入,但这不起作用我认为它唯一用于键盘)。例如,如果我连接了鼠标,那么来自该鼠标的任何类型的输入,无论是移动还是点击都会导致函数运行。
我只想知道当输入来自 HID 时在 HidLibrary 中执行哪个函数?或者如果有比 HidLibrary 更好的选择。如果您能提供任何代码片段,我将非常感激:)
首先,我是 C# 新手。我想创建一个检测任何 USB 隐藏设备的应用程序(我使用过HidLibrary并且它检测到 HID)但我也想从隐藏中获取输入(我使用过原始输入,但这不起作用我认为它唯一用于键盘)。例如,如果我连接了鼠标,那么来自该鼠标的任何类型的输入,无论是移动还是点击都会导致函数运行。
我只想知道当输入来自 HID 时在 HidLibrary 中执行哪个函数?或者如果有比 HidLibrary 更好的选择。如果您能提供任何代码片段,我将非常感激:)
HidLibrary 与我使用过的其他库相比非常好,所以请尝试坚持下去。
当数据进入时,它会触发您在初始化 HidDevice 时分配的“OnReport”处理程序。
例如
_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);
}