LabVIEWから他のプログラムを起動する

VIスニペット

せっかくLabVIEW2009を使うのでVIスニペット機能の実験がてら、このエントリを書こう。

スニペット(snippet)とは聞き慣れないけど、「切れ端、断片、スクラップ、短い抜粋」の意味らしい。プログラミングでは、よく使う短いコードを登録するような考えのようだ。LabVIEWのコード*1でもこのスニペット機能が搭載された。初めて見たときは驚いた。VIから切り取ったLabVIEWのVIスニペットは、PNG画像になっていて実にビジュアルだ。PNG画像のスニペットをブロックダイアグラム上にドロップすると、あたかも画像を貼り付けたようにコードが現れる。もちろん、これは画像ではなくて動くコード。PNG画像には画像に付加情報をいろいろ仕込むことができるのだけど、VIスニペットは画像情報と同時にコードも内包している。PNG画像の仕様には、公開する必要のないセクション(プライベート チャンク、private chunk)があるので、ここをNIが利用しているのだろう。

VIスニペットチュートリアルがある。音声の無い動画とサンプル「VIスニペット」も付属。

VIスニペットで再利用を促進 - National Instruments

LabVIEW2009のヘルプファイルには、「VIスニペット」と「コードスニペット」の2種類の言い方が混在。重要な注意書きを見つけた。

LabVIEWはサブVIを.pngファイルに組み込みません。ユーザが.pngファイルをブロックダイアグラムにドロップする際に、VIスニペットで呼び出されたサブVIがコンピュータに存在している必要があります。そうでない場合、VIスニペットには壊れたコードが含まれます。

サブVIで階層化したプログラムをVIスニペットにするときは要注意。自分の環境で使う分にはまったく問題ないんだろうけど、他の人と共有するときは.vi や .llb も検討すべきということだね。このダイアリでも浅い階層で表現できそうなコードはなるべくVIスニペットを使って公開してみようと思う。添付ファイルだけより、ダイアリとしてのインパクトもありそうだからね。

LabVIEWから他のプログラムを起動する方法

これは Solved: LabVIEWでWindowsソフトを起動する - NI Community - National Instruments で勉強させていただいたこと。LabVIEWから他のWindows実行ファイルを起動させるVIはベースパッケージにも含まれる標準機能であるのだけど、あまり使わない機能なのでメニューの場所は忘れやすい。関数は「コネクティビティVIおよび関数→ライブラリ&実行可能ファイルVIおよび関数→システム実行 (VI) 」。このVIはWindowsの cmd プロセスを呼び出す。当然、仕様はWindows の cmd に準じている、といってもDOSを知らない若いユーザはよく分からないかも。

もっとも簡単な例で、Windowsの電卓を起動してみる。

↑これがVIスニペットのサムネイル。画像をクリックして新しいウィンドウが開いたら画像下部の「オリジナルサイズを表示」をクリックするとVIスニペット画像が表示される。*2 *3 LabVIEW2009をお持ちの方は、VIのブロックダイアグラム上にVIスニペット画像をブラウザからマウスでドラッグ&ドロップするとインポートできるはず。Google Chromeでは直接のドラッグ&ドロップは上手くいかないので、いったんPNGファイルをディスクに保存してから保存したファイルのアイコンをブロックダイアグラムにドロップすると良い。

コマンドラインの入力文字列はWindowsの「スタート」にある「ファイル名を指定して実行」と同じ機能なので、「ファイル名を指定して実行」で可能なことはここでも可能。「calc.exe」としたが「calc」でも同じ結果になる。このviは「終了まで待機」をTrueにしておくと、電卓を終了するまで次の処理を実行しない。

次に、LabVIEWの設定ファイルをWindowsのメモ帳で開けてみよう。これはNIのサンプル「Calling System Exec.vi」に同じものがある。

コマンドラインに「notepad LabVIEW.ini」と打つだけでは動作しない。パラメータであるLabVIEW.iniへはフルパスが必要だ。コマンドラインを「notepad C:\Program Files\National Instruments\LabVIEW 2009\LabVIEW.ini」としても良いが、ここではデフォルトディレクトリ定数を使って、作業ディレクトリにLabVIEW.iniへのパスを入力している。

ここまではWindows環境変数パス上にあるソフトウエアの場合だ。たとえば、電卓→calc、メモ帳→notepad、ペイント→mspaint、マインスイーパ→winmine、MS-EXCELexcelあたりなら、コマンドラインに実行ファイル名を文字列で入れるだけでよい。Windows環境変数パス上にないソフトウエアでは一工夫が必要。ここではNI-MAXを例に取る。

ファイルパスのワイヤを「パスを文字列に変換」関数をつかって文字列に変換すればOK。こういうのは知っていると何でも無いのだけど、はまると辛い。そんなコードをここで紹介していきたいと思っている。

*1:「G言語」て言うんだよ、知ってるかい

*2:はてなの仕様上、直接クリックでオリジナル画像が開かないのはたいへん残念だ。要望はこちら>>http://i.hatena.ne.jp/idea/23249

*3:はてなfotolife でのVIスニペットアップロードのTips。アップロード時に【□オリジナルサイズの画像を保存】をチェックするのを忘れないこと。【画像サイズxxxピクセル(長辺)】がこの指定値を下回る小さなVIスニペットの場合、一見画像サイズが変更されていない画像がアップロードできるが、これはコード情報が削除されている。小さなサイズのVIスニペットをアップロードするときは、必ずサムネイルが作成されるように、サイズ(xxx)をオリジナルよりも小さく指定してやると、うまくVIスニペットをアップロードできる。