6

まず第一に、私はC#が初めてです。USB hid デバイスを検出するアプリケーションを作成したい ( HidLibraryを使用し、HID を検出する) が、hid からも入力を取得したい ( Raw 入力を使用しましたが、それは機能しません。キーボード用)。たとえば、マウスを接続した場合、そのマウスからのあらゆるタイプの入力が移動またはクリックされると、関数が実行されます。

私が知りたいのは、入力が HID から来たときに HidLibrary で実行される関数はどれですか? または、HidLibrary よりも優れた代替手段がある場合。コードスニペットを提供できる場合は、非常に感謝します:)

4

1 に答える 1

5

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);
}
于 2014-07-10T04:47:57.193 に答える