解決策
この問題はNI-DAQmx 16.0.1以降で解決されています。このアップデートは、NI 更新サービスを通じてを入手するか、NIドライバのダウンロードから入手できます。
必要最小限のインストールは、DAQmx 16.0.1コアランタイムです。 しかし、アプリケーションでリアルタイムサポートが必要な場合は、NI-DAQmx構成ランタイムをインストールする必要があります。 フルのNI-DAQmx 16.0.1ドライバをインストールすると、NI-DAQmx 16.0.1のフルADEサポートが提供されること、およびリアルタイムのCompactDAQコントローラを使用している場合は、更新されたドライバをcDAQコントローラにデプロイする必要があります。
NI-DAQmxドライバをアップデートすることが現実的な解決策でない場合は、NI-DAQmx 16.0.1以前を引き続き使用するために、以下のコードを追加すると回避策になります。
回避策は、各チャンネルで(通常は、Forループ内で)次の手順を実行することです。
- 単一チャンネル用のタスクを作成します。
- 端子構成および/または論理レベル動作プロパティをコミットします。
- タスク予約を解除します。
- タスクを停止します。
- 次のチャンネルに進み、すべてのチャンネルに対して、同様にこの手順を実行します。
端子ごとに設定をハードウェアにコミットした後、すべての端子が含まれているDAQmxタスクを実行し、必要に応じて集録を実行したときに、プロパティが各チャンネルにアサートされます。
以下のVIスニペットは、ctr0とctr1のエッジカウント測定用にこの回避策を実装する方法を示しています。 このコードを、データを集録する各カウンタチャンネルで繰り返し実行する必要があることに注意してください。

上のスニペットは、目的の測定タイプ、物理チャンネル、端子、および端子構成および/または論理レベル動作に合わせて変更したら、サブVIに移行可能です。サブVIにすることで、回避策を既存のコードの必要な場所にスムーズに追加することが可能になります。