NI-DAQmxを使用した連続収録システムにおけるバッファの現在使用量

更新しました Jun 11, 2026

使用製品

ソフトウェア

  • LabVIEW

ドライバ

  • NI-DAQmx

問題

NI-9215を用いて、NI-DAQmxを使用した連続収録システムを構築しています。

以下のバッファについて、現在の使用量(蓄積サンプル数)をLabVIEWから取得できるか確認したいです。

  • デバイスのオンボードFIFOバッファ
     (Input.OnbrdBufSizeで容量は取得可能)
  • DAQmx PCバッファ
     (Input.BufSizeで容量は取得可能)

取得したいのは容量設定値ではなく、実行中に現在どれだけサンプルが蓄積されているかという使用量です。

解決策

オンボードFIFOバッファの現在使用量は取得できません。デバイス上のFIFOバッファは容量が比較的小さく、収録されたデータはDMA(Direct Memory Access)等により極めて高速にPC上のバッファへ転送されます。そのため、ソフトウェアレベルでFIFOの現在の充填レベル(現在使用量)をリアルタイムで取得する機能やプロパティは提供されておりません。設定値(最大容量)の取得のみとなります。

DAQmx PCバッファの現在使用量は取得可能です。PC側のバッファに転送済みで、まだLabVIEW側(DAQmx読み取り関数)で読み取られていないサンプル数(蓄積サンプル数)を確認することができます。DAQmx読み取りプロパティノード を使用します。プロパティを次のように設定してください。

  • ステータス >> チャンネル毎の有効なサンプル数

英語環境では次の通りとなります。

  • DAQmx Read Property Node: Status >> Available Samples Per Channel

 

 

追加情報

チャンネル毎の有効なサンプル数を監視することで、PCバッファ内に現在どれだけのデータが蓄積されているかを確認し、読み取りループの処理速度がハードウェアの収録速度に追いついているかを判断することが可能です。もしもこの値が時間経過とともに一貫して増加している場合、ソフトウェアがハードウェアのデータ取得速度に追いつけていないことを示しており、バッファが完全に満杯になると、DAQmxはPCバッファオーバーフローのエラー-200279を返します。