VIを動的に実行2011/05/27 11:15

サブVIを利用する場合、そのVIをブロックダイアグラムに貼り付けて呼び出す方法が基本です。
使用するメモリーの節約などを考慮して、VIを動的に呼び出す場合があります。
動的に呼び出す方法には、手順が有るため、少々手間がかかります。
そこで、今回は、VIを動的に実行するサブVIを作成しました。


"VIパス"に実行するVIのファイルパスを入力します。
"終了まで待機"にVIが実行を完了するまで待機するかどうかを指定します。
"ウィンドウの状態"にフロントパネルのウィンドウを開いた状態を設定します。
実行して、スマイルマークのボタンを押すとゲームスタートです。
実行すると指定したVIが実行されます。


オプションの"終了まで待機"をFalseで実行すると、通常のサブVIではできない動きが可能です。
実行した後で、呼び出した方のVIを終了しても、呼び出されたVIはそのまま動き続けます。
動的な実行を使うと、呼び出されるまでは、メモーを消費しないため、メモリーの節約になります。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

VIを動的に実行

マインスイーパー2011/04/28 17:00

時々、LabVIEWは計測専用のソフトだと思われている方がいます。
そこで、おなじみの地雷探しゲームをLabVIEWで作ってみました。


"WIDTH"に横のマス数を入力します。
"HEIGHT"に縦のマス数を入力します。
"Mines"に地雷の個数を設定します。
実行して、スマイルマークのボタンを押すとゲームスタートです。
左クリックでマスを開き、右クリックで旗を立てます。
左右同時クリックには対応していません。

プログラムはイベント処理の生産者消費者デザインパターンを利用しています。
選んだマス目の周囲に地雷が有るか探す部分で、再帰呼出しの手法を使っています。
再帰呼出しは、LabVIEW2009で新たに追加された機能です。


サンプルは会社のサイトに掲載しましたので下記をご覧ください。

マインスイーパー

強度グラフのマーカー色自動設定2011/04/15 15:00

二次元のデータを色の変化で表現する強度グラフですが、色の仕手に一手間かかります。
特に、表示したい値が大きく変化すると、すぐに画面全体が一つの色だけになってしまいます。
これは、色の指定をするマーカーの位置が、自動的に変化してくれないためです。
そこで、マーカーの位置を値の範囲に応じて自動調整するVIを作りました。


"IntGraphRefIn"に強度グラフのリファレンスを接続します。
"DataIn"に強度グラフに表示するデータを接続します。
"MarkerColors"にマーカーに使う色のリストを接続します。値が大きい範囲に対応する色から並べます。
実行すると波形グラフのマーカーが自動的に設定されます。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

強度グラフのマーカー色自動設定

一次元配列を編集する2011/04/08 15:00


フロントパネルの一次元配列をボタンの操作で編集するサンプルVIを作りました。
配列の順番の変更、データの削除、挿入の処理をボタンのクリックで行えます。


配列の左側に、操作対象を選択する丸ボタンの選択ボタンがあります。
この選択ボタンで対象とするデータを選びます。
"Delete"を押すと、対象のデータを削除します。
"Up"を押すと、対象のデータを一つ上に移動します。
"Down"を押すと、対象のデータを一つ下に移動します。
"Insert"を押すと、対象のデータの上に新しいデータを挿入します。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

一次元配列を編集する

ある範囲の整数の乱数を作る2011/03/08 15:00


乱数を作る関数としては、「乱数(0-1)」があります、これは0から1の範囲の小数乱数を発生させます。
それでは、サイコロの様に1から6の整数をランダムに発生させるにはどのようにすれば良いでしょう?

乱数の値を、5倍して0~5の乱数を作り、それに1を加えて1~6の乱数として、それを整数に変換すると間違えです。
この計算方法では、1と6の発生確率が半分になってしまいます。

ちょっと考えると当たり前なのですが、このようなミスを防ぐためにも、範囲を指定できる乱数発生のサブVIを作成しました。


「Max」に発生させる最大値、「Min」に発生させる最小値を入力します。
実行すると、「Random Num」からランダムな整数値が出力されます。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

ある範囲の整数の乱数を作る

VIのフォルダパスを調べる2011/02/16 15:00


VIの保存先のパスを調べる時に、"現在のVIパス"で調べる方法がありますが、
実行形式のEXEファイルにするとパスが変わってしまう場合があります。

例えば "c:\Test\Main.vi" の中で "c:\Test\Sub.vi" が使われている場合。
Subの中で、"現在のVIパス"は "c:\Test\Sub.vi"を出します。
ここで、Mainを実行形式にすると、"c:\Test\Main.vi\Sub.vi" となります。
実行形式にする場合には変更が必要になります。
そこで、今回はそのVIが保存されているフォルダを調べるサブVIを作成しました。


このサブVIを使えば、VIの状態でも、EXEでも、そのVIが保存されているフォルダのパスを返します。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

VIのフォルダパスを調べる

Googleのチャートツールでマップチャートを描く2011/01/19 15:00

Googleのサービスで、様々なグラフやチャートを描くサービスが有ります。
Googleチャートというサービスです。詳しくは Google Chart Toolsを参照してください。
仕組みは簡単、URLに、グラフのデータを添えて送信すると、グラフ画像を返してくれます。


今回はマップチャートです。

"PointData"に、データを入力します。
データは以下の三要素のクラスタの配列です。
 "Country Code "は、プロットする国、地域の選択肢です。
 国と、日本の県、アメリカ合衆国の州の選択肢から選ぶことができます。
 "Legend"は、凡例に表示する文字です。
 "Color"は、プロットの色です。

"Size"に、グラフのサイズを設定します。

"Zoom"では、表示する地域の範囲を指定できます。
 "ZoomOption"では二種類のオプションがあります。
 "auto"では、選択した場所を中心に自動的に範囲を決めます。
  auto場合、"bottom"、"left"、"top"、"right"でピクセル単位で位置を調整できます。
 "fixed"では、緯度経度で表示範囲を決めます。
  fixed場合、"bottom"、"top"、は緯度(南緯はマイナス)、"left"、"right"は経度(西経はマイナス)で指定します。

実行すると、"Chart"に画像が表示されます。
Googleのサイトを利用するので、インターネットへの接続環境が無いと使えません。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

Googleのチャートツールでマップチャートを描く

バイナリデータを符号無し整数に変換する2011/01/15 15:00

バイナリファイル等を扱う場合に、バイナリデータから整数を取り出す必要が出てきます。
複数バイトのサイズの整数を扱う場合に問題になるのがバイト順序(バイトオーダー)です。
バイトオーダーには、主に「ビッグエンディアン」と「リトルエンディアン」の二種類があります。

「ビッグエンディアン」は、データを大きい値に対応する上位バイトから並べます。
この方式は、IBMの汎用計算機から、UNIX系のCPU、モトローラー系のCPUで採用されていました。
そのため、「Motorola形式」と呼ぶ場合もあります。

「リトルエンディアン」は、データを小さい値に対応する下位バイトから並べます。
この方式は、インテルのCPUで採用され普及したため、「インテル形式」と呼ぶ場合もあります。

ちなみに、LabVIEWの内部処理では、「ビッグエンディアン」が使われています。
これは、LabVIEWが元々AppleのMacintoshで開発されたソフトウェアであるり、当時のMacがMotorolaのCPUを使っていたためです。

この二種類のバイト順序に対応してデータを変換するサブVIを作りました。

サブVIは、16ビット、32ビット、64ビットの3種類がありますが、32ビットを例に説明します。

"Binary Data"に元になるバイナリデータを文字列形式で入力します。
"Byte Order"で、バイトオーダーを"big-endian"か"little-endian"を選択します。
"Index"には、データ読出し位置を入力します。
実行すると、
"U32"から、変換された値が出力されます。
"Bytes"からは、変換に使われた箇所のデータをバイト配列で出力します。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

バイナリデータを符号無し整数に変換する 

VIの説明をまとめて編集する2010/12/27 15:00

VIの説明をまとめて編集するViを作りました。
大きなプロジェクトで、たくさんのVIを作った場合に、まとめて作業できると便利です。

このVIでは、ファイル名のリストからVIを動的に開いて、プロパティノードから説明を変更します。
編集後には、インボークノードを使ってVIを保存します。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

VIの説明をまとめて編集する

音のフィルター2010/12/03 15:00

LabVIEWで波形のフィルタ処理を行うViを作りました。
タイプは、"ローパスフィルター"、"ハイパスフィルター"、"バンドパスフィルター"、"バンドストップフィルター"の4種類です。
カットオフ周波数を指定して実行します。

今回はバターワースフィルタ関数を使用しています。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

音のフィルター