ソフトウェアイベントは、一連のDAQイベントの非同期通知のメカニズムとしての役割を果たします。ハードウェアイベントとは異なり、ソフトウェアイベントではスレッドを使用してデータが用意されるまで待機する必要がありません。イベントベースでプログラミングすると、データ待機中にも動作を継続するアプリケーションを、マルチスレッドアプリケーションを開発することなく作成できます。

NI-DAQmxでは、以下のソフトウェアイベントが使用されます。

  • Nサンプル毎バッファへ集録イベント—ユーザが指定した数のサンプルがデバイスからコンピュータのバッファに書き込まれたときに発生します。このイベントは、バッファタスクをサポートするデバイスでのみ有効です。
    メモ AOシリーズ、Eシリーズ、Mシリーズデバイスなどのいくつかのデバイスでは、DMAをデータ転送メカニズムとして使用している場合に、サンプル間隔がバッファサイズに均等に分割される必要があります。たとえば、バッファサイズが1,000サンプルの場合、このソフトウェアイベントに102を指定するとエラーが発生します。代わりに、100に指定するとエラーは発生しません。IRQをデータ転送メカニズムとして使用している場合は、均等に分割できないイベント値も指定することができます。ただしIRQでは、ソフトウェアイベントが発生したときにデータ転送リクエスト条件属性/プロパティが影響される可能性があります。
  • Nサンプル毎バッファから転送イベント—ユーザが指定した数のサンプルがコンピュータのバッファからデバイスに書き込まれたときに発生します。このイベントは、バッファタスクをサポートするデバイスでのみ有効です。
    メモ AOシリーズ、Eシリーズ、Mシリーズデバイスなどのいくつかのデバイスでは、DMAをデータ転送メカニズムとして使用している場合に、サンプル間隔がバッファサイズに均等に分割される必要があります。たとえば、バッファサイズが1,000サンプルの場合、このソフトウェアイベントに102を指定するとエラーが発生します。代わりに、100に指定するとエラーは発生しません。IRQをデータ転送メカニズムとして使用している場合は、均等に分割できないイベント値も指定することができます。ただしIRQでは、ソフトウェアイベントが発生したときにデータ転送リクエスト条件属性/プロパティが影響される可能性があります。
  • 完了イベント—タスクが実行を完了するか、エラーによってタスクが終了した場合に発生します。タスク終了の原因にはならない修復可能なエラーでは、このイベントは発生しません。また、「タスクを停止」関数/VIを呼び出して実行を完了した場合も、このイベントは発生しません。
  • 信号イベント—指定されたハードウェア信号が生成されると発生します。このイベントは、カウンタ出力イベント、変化検出イベント、サンプリング完了イベント、サンプリングクロックなどをサポートしています。