Reply To: ノードの作成方法について

HARK FORUM ノードの作成方法について Reply To: ノードの作成方法について

#871

お問い合わせありがとうございます。

> 逆の処理も可能でしょうか。
はい。可能です。

Python内で定義された変数(または定数)を self.outputValues["端子名"] に代入して頂ければ出力されます。ネットワークファイル側では、PyCodeExecutor3ノードを右クリックし、 Add Output を選び、 self.outputValues["端子名"] で指定した端子名で出力端子を追加してください。
入力は self.端子名 で取得できますが、こちらもネットワークファイルのPyCodeExecutor3ノードに Add Input で追加した入力端子名となります。
calculate() メソッドが毎フレーム呼び出されますのでinputに対して処理してoutputするという用途が基本になります。inputが1つも無い例として、処理を開始する最初のノード(AudioStreamFromWaveのようにファイル入力等を行う)として作成する場合は、EOFでHARKの処理を停止するためにCONDITIONというbool型の出力を追加し、通常はTrue、EOFでFalseを設定します。ネットワークファイルではCONDITION端子にCONDITIONを設定してください。

PyCodeExecutor3の仕様について:
HARKがサポートしている型であれば、入出力ともに可能です。例えばHARKの Vector はPythonの list と、HARKの Map はPythonの dict と対応します。注意点としては、2点ほどあります。出力する場合はデータを渡す相手ノードの入力と型が一致している必要があります。また、HARKの標準ノードと異なりパラメータ設定ダイアログを表示できませんので、パラメータを変更できるノードを作りたい場合にはjsonファイル等でパラメータ設定が起動時にロード出来るようにする等で対応をお願い致します。Pythonコード内でsocketなど用いて記述して頂ければネットワークから動的に値を設定するコードなども可能です。

Pythonコード上での処理は自由に行う事が出来ますが、HARK側からPythonのクラスを呼び出すためGUI処理(Plot等)の書き方はやや癖があります。下記ディレクトリにPlot系ノードのサンプルがありますので参考にしていただければ幸いです。
/usr/share/hark/hark-python3/harkpython/src/

hark-python はPython2をサポートするための旧パッケージになります。HARK2.5までサポートしていました。HARK2.5以降は hark-python3 としてPython3をサポートする新しいパッケージを提供しています。ユーザが記述するPythonコードについては基本的に互換性がある設計ですが、Forumの回答ではインストール手順などで旧バージョン向けの説明が書かれている事が御座います。

以上、よろしくお願い致します。