”日付/時間文字列を取得 ”関数のように接続されていない場合は現在の日時を使用するサブVIの作り方



使用ソフトウェア:
使用ソフトウェア・バージョン: 8.0
使用ソフトウェア・バージョンに特化:
二次のソフトウェア: LabVIEW Development Systems>>LabVIEW Full Development System

問題:

”日付/時間文字列を取得 ”関数は、”タイムスタンプ”に何も接続していない場合は、現在の日時をもとに文字列を出力します。この関数をサブVIの中で使用する場合は、”タイムスタンプ”に制御器を接続することになり、そのサブVIの入力に何も接続されていなくても、現在の日時ではなく、タイムスタンプ制御器のデフォルト値が使用されてしまいます。何も接続されていない場合に現在の日時を使用するサブVIはどのようにしたら作れますか。



解決策:

”日付/時間文字列を取得 ”関数をサブVIの中で使用する場合は、”タイムスタンプ”に制御器を接続することになるので、そのVIをサブVIとして使用すると、そのサブVIに何も接続していなくとも、タイムスタンプ制御器のデフォルト値が使用されてしまいます。

何も接続されていない場合に現在の日時を使用するサブVを作成する場合は、何らかの形で場合分けをする必要があります。一つの方法は、多態性VIを使用する方法です。多態性VIとは、アイコンの下部にセレクタや入力のデータ型によって内部で呼び出すVIが変化するVIです。多態性VIの作成方法は、LabVIEWのヘルプで"多態性"で検索をしてください。この方法は、上級のトピックでやや手間がかかります。もう少し、簡易な方法としては、次のような方法があります。

タイムスタンプ制御器のデフォルト値に、決して入力されない値を設定しておき、その制御器の値がデフォルト値のままかどうか比較をして、その結果で場合分けをする。

LabVIEWでは、サブVIの入力に何も接続していない場合、その制御器のデフォルト値が使用されるという特徴があります。これを応用して、上記のようにすれば、接続されていない場合に現在の日時を使用するようにプログラムできます。また、この方法を使うと、タイムスタンプだけでなく、さまざまなデータ型でも接続されていない場合に、"所定の動作"をするというプログラムができますので、いろいろな応用が考えられます。”スプレッドシートファイルに書き込む”アイコンの”ファイルパス”の入力もその一例です。ファイルパスを入力すれば、ダイアログは開きませんが、接続しなかったり、空のパスを接続するとダイアログが開きます。比較のパレットには、”空”かどうかや数値かどうかなどの判断をするアイコンがありますので、これらを組み合わせて応用することでいろいろな動作をさせることができます。

添付のサンプルは、”日付/時間文字列を取得 ”関数のようにタイムスタンプ制御器に接続しない場合は現在の日時を使用するように作成したVIです。”日付/時間文字列を取得 ”関数を内部で使用していて、接続してあるものとないものをケースストラクチャで使い分けるようにしています。このサンプルは、LabVIEW8.5で作成し、LabVIEW 8.0用に保存してあります。

Default at No connect.vi が今回の動作を行うVIですが、NoConnectDefaultTest.vi  を開いて実行してください。



関連リンク:



添付:

Default at No connect.vi

NoConnectDefaultTest.vi






報告日時: 05/06/2009
最終更新日: 05/06/2009
ドキュメントID: 4X5MTO8V