この記事で扱っていること
- Viスクリプト小プログラム
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
プログラムからプログラムを作ることができる、VIスクリプトを使用することでそれが可能になります。
VIスクリプトに関する小ネタはこれまでにも紹介してきました。
いずれも、ちょっとした面倒を解消するための機能ですが、私が個人的に面倒だと思っている操作を今回はVIスクリプトで緩和しようと思って作ってみました。
どんな結果になるか
今回はずばり、リファレンスの配列やバンドル関数への配線についてのVIスクリプトです。
LabVIEWでデザインパターンに沿ってプログラムを組むとき、フロントパネル上の各制御器のプロパティをプログラム中で制御する際に、最初リファレンスを一つの配列もしくはクラスタにまとめるという場合が割とあります。
制御器の数が2つ3つだけならまだしも、その数が多いと一つずつリファレンスを作成してさらに配列連結追加やバンドルの関数に配線するのは地味に面倒です。
特定のデータタイプのみの場合でかつリファレンスを既に作成している場合に、配列連結追加を用意して配線させることができます。

また、リファレンスを作成するのすら面倒、な場合にはリファレンス作成も自動的に行わせます。

さらに、いくつかのデータタイプが混ざった場合にも対応させます。

上記は配列連結追加に配線しましたが、バンドル関数への配線もできます。

プログラムの構造
VIスクリプトは、「このように組む」というのが割とはっきりしています。
その分、説明をすることも少ないので、それぞれのプログラムについて淡々とブロックダイアグラムを紹介します。
まずは、既に制御器以外にもリファレンスや配列連結追加をブロックダイアグラムに配置しているVIを指定して、配線を自動的に行わせる場合の例です。
ブロックダイアグラムに存在しているリファレンスがControlReferenceConstantであり、それら「リファレンスのリファレンス」を、Connect WireのインボークノードのWire Sourceに指定しています。

次に制御器のみがあってリファレンスも配列連結追加の関数も配置していないVIを指定して自動配線する場合です。
新規VIオブジェクトとして配列連結追加を作成しますが、これは「拡張可能な関数」扱いとしています。
途中、配列から削除だったり1D配列反転が使われているのが違和感があるかもしれませんが、このようにしないと自動配線される順番が昇順じゃなく降順になったり配列連結追加の入力部分の数が意図したとおりにならないので注意します。

様々なデータタイプの制御器に対してリファレンス作成および配列連結追加への配線を行う場合には、フロントパネル上のそれぞれの制御器のクラス名を指定してそれぞれで「リファレンスのリファレンス」を作成するだけです。

配列連結追加ではなくバンドル関数を使用する場合、最初の「新規VIオブジェクト」で配列ではなくバンドル関数を指定することと、途中、配列サイズから2を引いた値をインボークノードに指定している部分があります。

プログラムをいちいち作るのが面倒?
上で紹介したプログラムを見て、こんなことを思った方も少なくないと思います。
「このプログラム作るくらいなら、自分でリファレンス用意して配線した方が早いのでは?」と。
たしかに、VIスクリプトのプログラムは慣れればそこまで時間がかからないものの、このプログラムを組むこと自体に時間がかかってしまっていては本末転倒です。
ただし、例えばクイックドロップのショートカットとして一度作ってしまえば、便利に使えるショートカットとして重宝すると思います。
クイックドロップのショートカットはVIスクリプトを駆使したプログラムも多いので相性もよく、ぜひ活用してみてください。
ショートカットの作成の仕方は過去に以下のような記事を出しています。
本記事ではviスクリプトの機能を使ってちょっとした手間をプログラムで一括解決する方法を紹介しました。
VIスクリプトは特に、自分で書けば書くほど慣れて早く色々なプログラムが組めます。
VIスクリプトを多用したアプリケーションを組むという機会はあまりなくどちかというとクイックドロップのショートカットを始めとした、LabVIEWの開発環境を便利にする機能という位置づけかもしれませんがこういった例を参考に色々とアレンジしてみてください。
ここまで読んでいただきありがとうございました。




コメント