LabVIEWでDAQmxの現在のタスク状態を取得する方法

更新しました Apr 17, 2026

DAQmxタスクを制御関数には複数のタスク状態があります。 DAQmx タスク完了確認関数でタスクの状態を照会し、実行が完了したかどうかを確認できます。ただし、プログラムの実行中に現在のタスク状態を取得する組み込みのDAQmx関数はありません。この記事では、ライブラリ呼び出しノードを構成し、それを使用して DAQmx の現在のタスク状態を取得する方法について説明します。

注: ここで紹介するサンプルは、DAQmx 19.1 以降のバージョンを対象としています。

 

DAQmx 19.1以降

タスクの状態を表す内部タスク属性(lvgeneratedAttributes.cpp経由)が新しく追加されました。

EXTERNC LVStatusCode kNILVAIExport kNICCall getTaskI32(
   GenericRefObjSession taskID,
   nNIDMXA::tAttributeID attributeID,
   int32 * paramValue,
   LStrHandle * extendedErrorInfoHdlPtr) 

 

属性IDはkAttributeIDTaskInternalTaskStateで、これは0x319Aです。状態属性にはnidmxa/enums.hより、以下の値があります。

enum tInternalTaskState
{
   kInternalTaskStateNotVerified = 0,
   kInternalTaskStateVerified = 1,
   kInternalTaskStateReserved = 2,
   kInternalTaskStateCommitted = 3,
   kInternalTaskStateRunning = 4,
};

LabVIEWのCLN(ライブラリ関数呼び出しノード)から呼び出す場合は、以下のように設定できます。

 

  1. LabVIEWを起動し、ファイル>>新規VIを選択して新しいVIを作成します。
  2. ウィンドウ >> ブロックダイアグラムを表示を選択して、ブロックダイアグラを開きます。

   daqtastJP1.PNG

  1. ブロックダイアグラム上で右クリックし、表示される関数パレットから、接続>>ライブラリ&実行可能ファイル>>ライブラリ呼び出しノードを選択します 選択したライブラリ関数呼び出しノード関数をブロックダイアグラムにドロップします。



   daqtastJP2 (1).png     daqtastEN CLN vierge.PNG

  1. ライブラリ関数呼び出しノードをダブルクリックして、その構成ウィンドウを開きます。



   daqtastJP3.PNG

 

  1. 関数 タブで、 ライブラリ 名またはパスとして「 nilvaiu.* 」と入力します。
  2. 関数名ドロップダウン ボックスからgetTaskI32関数を選択します。
  3. スレッドボックスで任意のスレッドで実行を選択し、 呼び出し規約ボックスでCを選択します。

  

   

  1. パラメータタブに切り替えます。
この関数は整数 (対応するタスク状態の値) を返すため、戻り値タイプ符号付き32ビット整数( Int32)に設定します。
  1. 左側のパラメータリストから戻り値タイプを選択します
  2. 現在のパラメータセクションで、 タイプドロップダウン ボックスから数値を選択します。
  3. データタイプはデフォルトの符号付き 32 ビット整数 (Int32) のままにしてます。
       

この関数はパラメータとして 3 つの整数と 1 つの文字列を受け取るため、これらを入力として追加します。
  1. 新しいパラメータを追加するには、プラス記号記号をクリックします。これにより、パスとしてを持っている符号付き 32 ビット整数 (Int32)がデフォルトで追加されます。
注: 必要に応じてパラメータの名前を変更できますが、DLL の呼び出し方法には影響しません。
今回構成する 3 つの整数パラメータtaskIDattributeIDvalueとして名前を付けます。
それぞれのデータタイプ符号なしポインターサイズ整数(uintptr)、符号なし 32 ビット整数(uint32)、
および符号付き 32 ビット整数(Int32) に設定します。
 
  1. それぞれの整数パラメータを上記のように名前データタイプを編集します。 (プラスボタンをクリックして、新規パラメータを追加します。)
      ]
 
          
 
  1. プラスボタンをクリックして最後のパラメータを追加し、 extendedErrorinfoという名前を付けます。タイプとして文字列を選択し、文字列形式として文字列ハンドルを選択します。
      
  1. 必要な入力と出力を作成し、配線します。
  • attributeIDの値として 310A を使用してライブラリ呼び出しノードのその端子に配線します。文字 A を挿入できるようにするには、作成した定数制御器をクリックしてプロパティ ウィンドウを開きます。その表示形式16 進数に変更します。

   daqtastJP8 (1).png

  • ブロックダイアグラム上の関数パレット >>文字列パレットから空文字列定数をドロップし、 extendedErrorinfo入力に配線します。
  • タスク入力制御器とタスク出力表示器を作成し、タスク入力制御器を taskIDに配線します。
  1. 関数パレット>>ストラクチャーパレットからケースストラクチャーを選択しブロックダイアグラムに配置します。
  2. ケースストラクチャーデフォルトケース内にDAQmxエラー情報の書き込み関数をブロックダイアグラム上に配置し、そのステータスコード拡張エラー情報エラー入力端子それぞれライブラリ呼び出しノード戻り値出力、extendedErrorinfo出力端子および、エラー出力端子を配線します。
注: DAQmxエラー情報の書き込み関数はDAQmxのMiscellaneous.llb ライブラリにあります。それは以下の場所から確認できます。

(Windows 10) C:\Program Files (x86)\National Instruments\<LabVIEW バージョン>\vi.lib\DAQmx\miscellaneous.llb
(Windows 11) C:\Program Files\NI\LVAddons\nidaqmx\1\vi.lib\DAQmx 

DAQmx fillin Errorinfo (1).png
  1. ケースストラクチャーを右クリックし、ポップアップウィンドウから、前にケースを追加を選択します。その名前を0とし、以下のようにエラーワイヤーそのままエラー出力端子に配線します。

   daqtastJP9.png         daqtastJP10.png

 

 

DAQmx以前

DAQmx LV APIには、タスクの状態を取得するために呼び出すことができる公開エントリポイント(lvtask.cpp経由)があります。

EXTERNC LVStatusCode kNILVAIExport kNICCall DAQGetTaskState(
    GenericRefObjSession taskID,
    int32* state)

状態出力パラメータには、nidmxa/enums.h より以下の値が含まれます:

enum tInternalTaskState
{
   kInternalTaskStateNotVerified = 0,
   kInternalTaskStateVerified = 1,
   kInternalTaskStateReserved = 2,
   kInternalTaskStateCommitted = 3,
   kInternalTaskStateRunning = 4,
};

CLNから呼び出す場合は、設定は次のようになります。

上記と同様の手順に従いますが、DAQmx 19.1より前のバージョンでは、「 nilvaiu.*」ライブラリーのDAQGetTaskStateを使用します。

    daqtastJP4 (1).png

 

この関数は2つの整数を入力として受け取り、1つの整数(対応するタスク状態値)を返します。

    daqtastJP5.PNG

 

     

 

     

結果として得られる VI サンプルは、添付ファイルからダウンロードでき、以下のように表示されます。


 

DAQmx 19.1以降 DAQmxタスク状態の取得

 

DAQmx 19.1以前 DAQmxタスク状態の取得

 

 

このドキュメントでは、各タスクの状態(未確認、確認、予約、コミット、実行)の意味について説明します。