解決策
通常、データはDAQmx PCバッファにおいて次の2つの理由のいずれかで上書きされます。
連続サンプリングされたDAQmxアプリケーションの読み取り速度はサンプルレートより遅く、上書きが発生するまでDAQmx PCバッファにサンプルが蓄積されます。エラー-200279は、多くの場合、DAQmxタスクが以下のDAQmxタイミングVIで指定されたサンプルレートより遅い読み取り速度による結果です。
このエラーをトラブルシューティングする際には、アプリケーションの読み取り速度とサンプルレートが同じであることを確認する必要があります。
DAQmxアプリケーションの読み取り速度は、DAQmx読み取りVIで要求しているサンプル数のほかに、DAQmx読み取りVIがすぐに呼び出された回数の両方に依存しているため、DAQmx読み取りVIで必要なサンプル数を明示的に制御するか、下図のようにDAQmx読み取りVIを含むwhileループがWait(ms)関数などを使用して1秒間に実行される回数を明示的に制御することで読み取り速度を調整することができます。
メモ: DAQmx読み取りVIは、要求されたサンプル数が使用可能になるまで自動的に待機するため、通常特定のアプリケーションでこれらの要因の1つを制御するだけで構いません。
Whileループが予想よりも遅く実行されている場合は、ロギング、後処理、解析、ユーザーインターフェイス(UI)機能などの他のプロセスを収集ループ外に移動するために、生産者/消費者アーキテクチャを実装する必要があります 。
基本的な生産者/消費者アーキテクチャの実装方法の詳細については、
Application Design Patterns: Producer/Consumerを参照してください。
Whileループのパフォーマンスを向上させることができない場合は、代わりにアプリケーションのサンプルレートを下げる必要があります。
DAQmx読み取りVIを含むコードで
実行のハイライトを使用しないでください。実行が遅くなり、バッファオーバーフローが発生します。
DAQmx PCバッファが小さすぎるためタスクに必要なデータ量が保持されず、DAQmx PCバッファに上書きされてデータが全く収集されません。このエラーは、ホスト側のデータバッファのサイズを手動で大きくすることによって解決することがあります。ただし、データがDAQmxバッファから十分に速く読み取られないためにエラーが発生している場合(理由1を参照)、バッファサイズを大きくするとエラーの発生が遅れるだけで完全に除去されません 。
バッファサイズを増やす方法については、
DAQmx Buffer Size Allocation for Finite or Continuous Acquisitionを参照してください。