「グリッチ」は、バッファ内の古いサンプルから新しいサンプルへ移行する際に、古いサンプルと新しいサンプルが混合したサンプルが生成される現象を指します。この現象は、書き込みの再生成モード属性/プロパティを「再生成を許可」に設定して連続的にサンプルを生成すると発生する可能性があります。グリッチは、サンプル書き込み中に、新しいサンプルのサブセットが生成され、すべての新しいサンプルの書き込みが完了していないために、古いサンプルが生成されることで発生します。書き込み操作が完了していれば、新しいサンプルだけが生成されます。

NI-DAQmxでは、新しく書き込まれるサンプルの数が、生成されるサンプル数よりも上回らないようにすることで、グリッチの発生を防止します。このグリッチ保護は、生成されるサンプルの合計が現在の書き込み位置より1バッファ分以上先になるまで書き込みを一時停止するように働きます。しかし、NI-DAQmxでは、書き込み中の新しいサンプルを生成が追い越さないという保証はありません。この場合、グリッチが発生し、NI-DAQmxはkWarningPotentialGlitchDuringWriteという警告が発信されます (エラー200015)。グリッチの生成を回避するには、次のガイドラインを参考にしてください。

  • 生成されるサンプルの合計よりほぼ1バッファ分先の新しいサンプルを書き込みます。生成されるサンプルの合計よりほぼ1バッファ分先の新しいサンプルを書き込むことで、書き込み中の新しいサンプルを生成が追い越す可能性が低くなります。バッファ全体を一度に更新する場合は、生成サンプルの総数を示す属性/プロパティがバッファサイズよりも1サンプル多くなるまで新しいサンプルの書き込みを待機します。たとえば、バッファサイズが1000サンプルの場合、生成サンプルの総数が1001、2001、3001などになるまで新しいサンプルの書き込みを待機します。
  • バッファサイズを増やすことをお勧めします。バッファサイズが大きければ大きいほど、サンプルの生成がバッファへの書き込み数を上回る可能性が低くなります。
  • サンプリングクロックレートを低くすることをお勧めします。サンプリングクロックレートが低速であるほど、サンプルの生成がバッファへの書き込み数を上回る可能性が低くなります。

以下のグラフでは、正弦波が古いサンプルから生成され、矩形波が新しいサンプルから生成されます。最初の図は、グリッチを表しています。



2番目のグラフでは、これらの波形にグリッチが発生していない場合を示しています。