特定のエラーをクリアする2010/07/10 15:00

LabVIEWでファイルの保存先を聞かれた時、キャンセルボタンを押すと、エラーが発生します。
測定開始時にファイル名を指定するのですが、そこでキャンセルされても、測定終了時にファイルを選べば問題ないソフトだったのですが、
そのままエラーワイヤーを次の測定などに接続してしまうと、測定もエラーでキャンセルされてしまいます。

そこで、ある特定のエラーコードの場合にのみ、エラーをクリアするサブVIを作成しました。
クリアしたことを示すブールの出力も付けたので、エラー時に、別のメッセージを出すなど特別な処理をすることもできます。

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

特定のエラーをクリアする

複数の文字を一括検索置換2010/07/09 15:00

LabVIEWで日付の文字列を作ると、曜日が月、火、水、と漢字で出てきます。
これを、Mon、Tue、Wedに変更したいとの要望があり、文字列の検索置換を7回繰り返して変換しました。
午前、午後も、AM、PMにして、とか、月もJan、Feb、Marにして、、とさらに要望が出ました。
そこで、いくつもの文字列をまとめて置換するサブVIを作りました。

仕組みは簡単で、検索語と置換語の組をクラスタにして、その配列を指定し、各項目の置換処理を行います。
Forループで繰り返しの処理をしています。

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

複数の文字を一括検索置換

全ての制御器の値を保存読込み2010/07/08 15:00

全ての制御器の値を保存するサブVI

LabVIEWで計測用アプリケーションを作成していると、フロントパネルに多くの設定用の制御器が配置されます。
この制御器の値を、毎回、一から設定するのは手間がかかります。
できれば前回設定した値を保存しておけないか?という要望がでたりします。

保存するには、たくさんある制御器の値を、受け取って、それをファイルに保存します。
また、次に起動した時にファイルから読み取って、対応する制御器に格納します。
これを、一つ一つ作っていると、かなりの労力です。設定項目が追加になったりした場合には、また修正が必要です。

そこで、サブVIを一つ使えばこの問題が解決するような、そんな仕組みを作りました。
リファレンスと、インボークノードやプロパティノードを使って、指定したVIのフロントパネルにある全制御器の値を保存、読み出しを行います。

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

全ての制御器の値を保存読込み

LabVIEWでブブゼラフィルター2010/07/07 15:00

こんな記事がありました。


World Cup 2010 - Filtering the Annoying Vuvuzela Noise

かなり本格的に作り込んであるVIで、実行形式の配布用インストーラも配っています。

ソースファイルを見てみると、ノーティファイアを使ったマスタースレーブデザインパターンを採用したVIで、綺麗に書かれています。
フィルターのデータを機能的グローバル変数で管理しているのですが、書き方が独特ですね。
場所を取らないので良いですね。参考になります。

データを切替える2010/07/06 15:00

LabVIEWでデータの処理をする場合、2つのデータを入れ替える処理が必要な時があります。
通常は、数値A → 数値A’ 数値B → 数値B’ のところ、
ある条件が成立した時は、数値A → 数値B’ 数値B → 数値A’ とする場合です。
ケースストラクチャを使ったり、選択関数を2つ使ったりすれば簡単にできるのですが、数が多いと手間も場所もとります。

そこで、データを切替えるサブVIを作成しました。
このVIは多態性VIで、接続したデータに応じて適切なVIが自動的に選択されます。
一般的なデータタイプには対応できるように作って見ました。

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

データの切替え

VIスニペットを使う2010/07/05 15:00

LabVIEWのプログラムを配布するにはVIを添付する方法が簡単ですが、ダウンロードしてファイルを開かないと内容がわかりません。
LabVIEW2009から新たに加わったVIスニペットを使うと、サブVIを作るほどでは無い小さいコードや、ダイアグラムの一部を簡単に共有できます。


このVIスニペット、一見すると.pngの画像ファイルですが、なんとこの画像ファイルにダイヤグラムの情報が含まれているのです。
Internet Explorerで表示されたVIスニペット画像を、LabVIEWのブロックダイアグラムにドラッグアンドドロップで配置できます。
Firefox などのブラウザは、デスクトップなどにドラッグアンドドロップしてから、LabVIEW にドラッグアンドドロップで配置します。
※こちらのブログの場合は、画像をクリックすると大きな画像が表示されますので、それをドラッグしてください。

作り方は、ブロックダイアグラムの一部を選択して、[編集]-[選択範囲からVIスニペットを作成] を実行します。
次に、VIスニペットを保存するパスを指定します。

とても便利な機能なので、これから普及していくのではないでしょうか。

二次元の配列をソートする2010/07/02 15:00

1次元の配列のソートは、Sort 1D Array 関数を使うと簡単にできます。
それでは、2次元の配列をソートするにはどうすれば良いでしょうか?

ネット上には様々な方法が紹介されているのですが、一つ簡単な方法を紹介します。
2次元の配列の各行を取り出して、取り出された1次元の配列をクラスタに変換します。
そうするとクラスタの1次元配列ができるので、これをソートします。
その後で、再びクラスタを配列に戻せばソートされた2次元の配列ができあがります。

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

2次元配列のソート

グラフに絵を描く2010/07/01 15:00

LabVIEW で、波形グラフなどのグラフの上に文字や図形を描く機能あります。これを使うと、表示される波形に説明を加えたりできて便利です。

しかし、ピクセル単位で図形を描かなければいけないので、グラフのXYの値との座標変換が必要です。


そこで、面倒な座標変換を組み込んだVIライブラリを作成しました。 ピクチャ関数に対応して、以下の関数を作りました。

DrawPointOnGraph.vi  :点を打つ関数
DrawLineOnGraph.vi  :線を引く関数
DrawMultiLinesOnGraph.vi  :複数の線を引く関数
DrawRectOnGraph.vi  :四角形を描く関数
DrawGORectOnGraph.vi  :グレー表示の長方形を描く関数
DrawRoundRectOnGraph.vi  :角の丸い長方形を描く関数
DrawOvalOnGraph.vi  :楕円を描く関数
DrawArcOnGraph.vi  :円弧を描く関数
DrawClearOnGraph.vi  :円を描く関数
DrawTextAtPointOnGraph.vi  :指定した位置に文字を描く関数
DrawTextInRectOnGraph.vi  :指定した枠内に文字を描く関数
DrawCircleByROnGraph.vi  :半径を指定して円を描く関数

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

グラフに絵を描く

列挙体とは何か2010/06/30 17:00

LabVIEWでは数値、文字、ブールなど様々なデータが使われますが、その中でもわかりにくいのが”列挙体”でしょう。

簡単に言うと、選択肢を提供するためのデータのタイプです。
例えば季節なら、"春"、"夏"、"秋"、"冬"、と4つの選択肢があります。
この選択肢をあらかじめ登録しておけば、メニューで選択できるのが列挙体です。

そして、この列挙体にはもう一つ特徴があります。
それは、選択肢は文字で選択するのですが、データの中身は選択肢に対応した数値で処理されるということです。
コンピュータは文字よりも、数値の方が扱いやすいからです。

列挙体をケースストラクチャのセレクタ端子につなぐと、ケースストラクチャのケースも列挙体を同じ選択肢で選ぶことができるようになります。
列挙体は、ケースストラクチャと相性が良いのです。
このため、LabVIEWではこの列挙体が大変よく使われます。

日時文字列の作成2010/06/29 12:41

データをテキストファイルで保存するなど、タイムスタンプのデータを日付や時間の文字列に変換する事がありますよね。

日付/時間文字列をフォーマット関数を使うと変換ができるのですが、ここで面倒なのが時間形式文字列です。ヘルプを参照して、呪文のように”%Y%m%d%H%M%S”などと記述しなければいけません。

そこで、選択肢を選んで簡単に形式を設定できるサブViを作りました。

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

日時文字列作成