Chapter Eighty One

第81話


LabVIEWのG言語はバージョン3で基本が固まったように思う。それ以降はUNDOの実装に見られるように開発環境の整備と、画像処理技術、ネットワーク技術など対象領域の拡大を図ってきた。残念ながらバージョン5ではプラットフォームに依存しない開発環境に陰りをみせた。Mac版ではバージョン5の魅力が少なかったのであえてアップグレードをパスしたのだが、今年は予算を組んでバージョン6のWindowsのプロ版とMacの開発版を入手できた。詳しくは比較していないのだが、バージョン6ではWindows版とMac版の機能の差は少ないように感じる。

ということで、(LV4、LV5のユーザーには不便なこともあるかもしれないが、)今回からLabVIEW6対応になってしまったのでよろしく。

奥ゆかしくもLV4で作ったフロントパネルはLabVIEW6でも見た目が全く変わっていない。Classicという名前で制御器が残されているおかげだろう。ピクチャーコントロールには以前から興味があったのでx-yグラフで無理矢理表示していた部分を書き換えてみようと思っているが、その前にフロントパネルを3D表示器に置き換えてみよう。

古い表示器を選んで変更すればいいだけなので楽な作業だ。ただ、チャートを変更した時に新しいチャートのデフォルトのサイズが大きくて古い表示器と重なりが生じたためだろうか、MacOS XのClassic環境で動いていたLabVIEW6は簡単にクラッシュしてしまった。プログラミングしている時や実行時には問題ないのであまり深刻ではない。それよりもLabVIEW6からMac用では日本語版がなくなり英語版を使わなくてはいけないので厄介だ。たまに「Property NodeをCreateしてVisibleをFalseにする」などと書かいてしまっても、わらってすまして欲しい。電子マニュアルはMac版にも日本語版も提供してくれるとありがたいのだが、日本NIは配慮してくれないのだろうか?

バージョン5を飛ばしたので特にバージョン6を新鮮に感じるのだろうが、二つのツールキットがMac版開発システムに標準で導入されている。役に立つかどうか分からなくて購入できなかったピクチャーコントロールツールキット、G-MathツールキットがMac版に添付されている。機能アップでバージョンアップ代がチャラになったみたいなものだが、その割には製本されたマニュアルには多くは書かれていないので、意識して資料を探さなくてはならない。

ピクチャーコントロールの使い方はPicture Control Toolkit Reference Manual (Part Number 320594-01)でNIのウエブサイトから320594.pdfという名前でダウンロードできる。LV6のユーザーマニュアルにはごく簡潔にしか書かれていなくて、電子マニュアルの関数の説明を見てとりあえずは分かるのだが少し不便だ。G-Mathツールキットのマニュアルもどこか探せば入手できるだろう。

例によって、プログラミング方法を知るにはサンプルをよく見ることなのだろう。examplesのpictureのdemos.llbに豊富なviが収録されている。まず、注目したのはMouse Control Demo.viだ。マウスがUIの中心になった時代にあって快適な操作感を実現できそうな気にさせてくれる。

実際のところ、picture領域のマウスポインターの座標をプログラム内で検知できるのは便利そうだ。Mouse Control Demo.viはデモとしては人目と興味を引いて良いのだが、ダイアグラムはあまり教育的とは言えない。もともとProperty Nodeと実体のつながりが分かりにくいのだが、フレームの内側を透明にしたPictureコントロールの下に波形チャートを置いているとはすぐには気がつかないだろう。

また、Polar Plotなどのピクチャーコントロールで作られているグラフは変わっていて、フロントパネルに配置した時点でダイアグラムにサブVIやクラスターが作成される。たぶん昔から備わっていた機能だと思うが、このようにグラフをカスタマイズして作っておいてパレットに登録しておくと便利かも知れない。パレットの変更方法は電子版のマニュアルに書かれている。

パレットには登録されていないが、x-yグラフをカスタマイズしたいときのベースになりそうなグラフがDistribution Plot Indicatorで、vi.libのpictureのcartesn.llbの中に保存されている。VIの中身をみるとグラフを書くというのは大変なことだと思う。高価なソフトの割にはグラフ表示が貧弱だという声はよく聞いたが、完全にカスタマイズできる機能を提供されてもいちいちVIを組み合わせてグラフを書く時間もあまり自由にならないのがLabVIEWユーザーの実情だろう。ピクチャーできれいに表示できてもしょせんビットマップなのでプリントするとジャギーだらけになるような気がする。ExelとWordに出力できるツールキットが発売されたようなので、検討対象になるかもしれない。

Pictureコントロールに接続するワイヤーは文字列のワイヤーの形で青色になっている。線の形が似ているのは、おそらく偶然ではなく、下のダイアグラで分かるようにピクチャーのワイヤーと文字列がConcatenate Stringで結合されている。このviはピクチャーコントロールの下位のviであるDraw Point.viだが、何らかの操作コードを文字列としてピクチャーのワイヤーに追加しているようだ。opcode -SetPixelという定数に指示されるタグで画像データの操作が行われるのだろう。この数値を適当に変えるとLabVIEWが落ちてしまったので深入りしないほうが無難だろう。

x-yグラフで表示していたことをPictureコントロールでやろうとすると、下準備が必要になる。従来はカーソルのシンボルで素子の関数を区別していたが、ピクチャーで使えそうなのは矩形と楕円だけなので今回はシンボルを作ってみようと思う。

ピクチャーで図形を描く練習にもなるので、まず、+を作ってみよう。シンボルの中心の座標、サイズ、描画色を指定できるようにフロントパネルを構成した。

Draw Line.viは描画しながらポイントを移動させ、Move Pen.viは描画しないでポイントを移動させるviだ。Pictureはそれぞれのviを通過する毎に描画情報を連結していき、Pictureコントロールに到達して一括で描画を実行しているようだ。

調子に乗って各種のシンボルを同様のインターフェースで作成した。下の画面はシンボルの一覧表示のためのDemo Marker.viを実行したもので、塗りつぶしの有無によって合計20種類のシンボルができた。Draw Multipul Lines.viは塗りつぶし命令のところにバグがあるようで左から5個目の記号の塗りつぶしが1ドット変になる。これは愛嬌ということでそのままにした。(Draw Rect.viはバグなのか、描画位置が1ドットずれていたのでダイアグラム内で修正した。)

シンボルとしては11種類あるのでForループの中でMarker.viにループカウンターを接続してシンボルの形を変えながら描画命令をシフトレジスタに連結している。

Marker.viはMarkerShapeで指定されたシンボル描画のviをケース構造で選択するインターフェースになっている。アイコンはvi毎に変えるのが筋なのだが、さすがに面倒なのでシンボル関連ということで共通のものを使用した。LV4ではアイコンエディターがクリップボードのコピー、ペーストに対応していなかったようだが、LV6ではペイントソフトでアイコンを作ってペーストすることができた。

今回はLV6のピクチャー機能の基本的な確認を行った。文字の描画は癖がありそうなので次回に調べてみよう。

祝LV6! and 期待Mac OS X対応

 

See you!

Nigel Yamaguchi


戻る