ソフトウェア制御のUSRPでマイクロ秒単位の送受信制御を行う

LabVIEWからPythonスクリプトを呼ぶ "クラスタと2次元配列を渡す" (3 of 3)

こんにちはドルフィンシステム福島です。

前回の投稿でLabVIEWからPython関数を呼び、関数に引数を渡して戻り値を取得しました。また複素数を渡す方法も解説しました。

今回は、LabVIEWのクラスタを渡す方法を解説致します。

第1回 LabVIEWからPythonスクリプトを呼ぶために必要な4つのステップ (1 of 2)
第2回 LabVIEWからPythonスクリプトを呼ぶ "int32と複素数を渡す" (2 of 3)
第3回 LabVIEWからPythonスクリプトを呼ぶ "クラスタと2次元配列を渡す" (3 of 3)

サンプルコード
https://github.com/mikiofuku/FS-call-a-python-function-from-LabVIEW


サンプルコードを開く

上記のgitからサンプルコードをcloneして、プロジェクトをLabVIEWで開いて下さい。プロジェクトエクスプローラーのinterlop\interlop.viを開きます。

Pythonのセットアップをしていない場合は、第1回を参照してセットアップを行って下さい。

まずインストールしてあるPython.exeとバージョンを指定します。またinterlop.viと同じフォルダにinterlop.pyがあるのでmodule pathで指定します。module pathに2バイトコードを含めるとLabVIEW側でエラーになるので含めないようにして下さい。


2次元配列を渡す

interlop.viを実行して、2次元配列をPythonに渡してみます。
下図のようにboolの2次元配列を渡すため、以下の様に配線します。


2次元配列を受け取る(呼び出される)Python関数は以下の様にします。

def val_bool_2darray(val_bool_2darray):
    print(type(val_bool_2darray))
    print(type(val_bool_2darray[0][0]))
    print(val_bool_2darray)   
    print()  

    # 入力待ち
    input()

すると以下の様に配列を受け取ることが出来ます。
配列はlist、boolはboolとしてPython側でキャストされています。



クラスタを渡す

interlop.viを実行して、クラスタをPythonに渡してみます。
下図のようにクラスタの中にクラスタを含んだ複雑なクラスタです。

以下の様に配線します。


クラスタを受け取る(呼び出される)Python関数は以下の様にします。

def val_cluster(cluster):

    # cluster
    print(type(cluster))
    print(cluster)
    print()

   # 入力待ち
    input()

すると以下の様にクラスタを受け取ることが出来ます。クラスタはtupleとして受け取っています。

あとはPython側でクラスタ構造に応じて値を取得していけば良いでしょう。


参考情報

Pythonノードを使用してLabVIEWとの間でPythonデータ構造を渡す

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000oyaHCAQ&l=ja-JP


コメント