HidLibrary は、私が使用した他のものと比較してかなり優れているので、それに固執してみてください。
Data が入ってくると、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);
}