プログラミング

LabVIEWでJavaScriptを使う

2015年4月19日

仕事でLabVIEWを使うことになった。用途は、顕微鏡用のカメラやレーザー等のコントロール。数年ぶりに使うプログラミング言語だ。私は、どうもあの回路図ベースのプログラミング言語になじめなくて、これを使うときはいつも苛々してしまう。しかし、職場仲間の間では、LabVIEW以外のプログラミング言語が扱えない人が大多数なので、みなが触る共通の機器用にはこれを使うしかない。しかし、簡単なプログラムならまだしも、少し複雑な物を書こうとすると、プログラミングにはほとんどの操作をマウスで行なわなければならないし、私の能力では可視性の悪いプログラミングしかできないしで、なんとかならないかと思っている。で、GUI周りはLabVIEWで書いて、複雑な操作の部分はテキストスタイルの普通のプログラミング言語が使えないかと、色々調べてみた。

一般的な方法は、DLLを作成して、それをLabVIEWから呼び出すやり方のようだ。DLLは、CでもVBでも.NETでも、何でも良いようである。加えて、LabVIEW独自のCIN(Code Interface Node)という埋め込み機能もあるらしい。いずれの方法でも、LabVIEW以外のプログラミングソフト(Visual Studio等)を立ち上げて、そちらでプログラミングしておき、これをLabVIEWに取り込む方式である。これだと、2つのプログラミングソフトウェアを同時に扱わなければならず、かなり煩雑な操作になる。

テキストスタイルのプログラミングそのものも、LabVIEW上で出来れば、色々と便利そうだ。色々と調べてみると、どうやらJScriptとVBScriptなら、LabVIEWに取り込んで実行できるらしいということが分かった。作成したテストプログラムは、以下の通り。まずは、フロントパネル。
2015-04-19-front.png

次に、ダイアグラム(クリックで、拡大)。
2015-04-19-diagram.png
興味のある方は、こちらをダウンロード(LabVIEW ver 6.1用です)

JScriptを使うための操作は、以下の通り。

1. Front Panelに、Active X containerを作成。
2. 右クリックし、Insert Active X objectから、ScriptControl Objectを選択。
3. Diagramで"Property Node"を挿入し、IScriptControlを選択。PropertyにLanguageを指定して、文字列"Jscript"のシグナルを入力しておく。
4. "Invoke Node"を挿入し、IScriptControlを選択。PropertyにAddCodeを選択。メインプログラム文字列を入力
5. "Invoke Node"を挿入し、IScriptControlを選択。PropertyにEvalを選択。実行したい命令の文字列を作成して、入力。
6. Evalの実行結果は、右側から出力される。Variant値なので、Dataに変換して使用する必要がある。

このテストはLabVIEW ver 6.1で行なった。Invoke Nodeにバグがあるらしく、propertyにRunを選択すると、実行時にLabVIEWが落ちる。この不具合はLabVIEW 2010では見られないので、最新版のLabVIEWならEvalだけでなくRunも使える。ただし、parameterはなぜだか、一つしか取れない。引数を複数与えたい場合は、文字列をconcatenateして与える必要があるようだ。

テストプログラムでは、SFC miniを用いたDLLの呼び出しの確認コードも挿入されている。SFC miniを使わない場合は、該当部分(MessageBox云々の所)を削除もしくはコメントアウトして、実行して頂きたい。

コメント

コメントはありません

コメント送信