VIスクリプトを使用して既知のターゲットVIのオブジェクトのリファレンスを取得する



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

必要: VIスクリプト

テンプレートから新規VIを作成すると、多くの場合、テンプレートから新規VIへコピーされたコードの変更が必要になります。これらの変更を行うためには、新規VI内の検査または変更をしたいオブジェクトのリファレンスを取得する必要があります。これらのオブジェクトリファレンスを取得した後、これらをプロパティノードまたはインボークノードに配線して、リファレンスされたオブジェクトの情報を取得または設定します。新規VI内のオブジェクトのリファレンスを取得する一番簡単な方法は、「VIオブジェクトリファレンスを開く」関数を使用する方法です。ただし、この関数を使用するには、新規VI内の対象オブジェクトに固有のラベルが付いていなければなりません。対象オブジェクトに固有のラベルが付いていない場合は、ラベル付けされていないオブジェクトや不明のオブジェクトのリファレンスを取得するためのより複雑な方法を使用する必要があります。

使用するオブジェクト

このVIスクリプトタスクには以下のオブジェクトが必要です。

VIオブジェクトリファレンスを開く クラス指定子定数 リファレンスを閉じる

解決方法

操作を開始する前に: 以下の手順の各ステップを説明したサンプルを参照するには、labview\examples\Application Control\VI Scripting\Finding and Modifying ObjectsディレクトリにあるObtaining Known Object Reference VIを開きます。

手順を展開すると、このサンプルの詳細が表示されます。

  1. 操作したいオブジェクトが含まれているターゲットVIのリファレンスを取得します。
  2. リファレンスを取得したいオブジェクトの定義情報を決定します。

    1. クラスタイプ―VIスクリプトで使用できるフロントパネルまたはブロックダイアグラムオブジェクトは、すべてVIサーバクラスに属すため、オブジェクトのリファレンスは対応するクラスに属します。アクセスしたいオブジェクトのクラス名を確認するには、VIの構造を参照してください。「VIオブジェクリファレンスを開く」関数にオブジェクトクラスを示すには、クラス指定子定数を使用します。

      サンプルの詳細

      サンプル中のこれを編集制御器は数値クラスに属します。

    2. 所有者―フロントパネルおよびブロックダイアグラム上のすべてのオブジェクトには所有者が指定されています。最も簡単なケースでは、オブジェクトの所有者は、VIのフロントパネルまたはブロックダイアグラムとなっています。ただし、オブジェクトがループ、ケースストラクチャ、シーケンスストラクチャ、あるいはクラスタなどのサブストラクチャ内にある場合は、そのサブストラクチャがオブジェクトの所有者となります。

      サンプルの詳細

      サンプル中のこれを編集制御器はターゲットVIのフロントパネルにあるため、所有者はターゲットVIのフロントパネルです。このため、スクリプトVIはVI:フロントパネルプロパティを使用して、ターゲットVIのフロントパネルのリファレンスを取得します。

      メモ 制御器クラスと制御器の端子クラスは、混同されることがよくあります。制御器の端子オブジェクトは、対応するフロントパネル制御器オブジェクトのブロックダイアグラム上の表示です。つまり、ターゲットVIのフロントパネルはこれを編集制御器オブジェクトを所有し、ターゲットVIのブロックダイアグラムは対応するこれを編集制御器の端子オブジェクトを所有します。制御器オブジェクトの数値表記は変更できますが、制御器の端子オブジェクトの数値表記は変更できません。
    3. ラベル―これは、ターゲットVIの対象オブジェクトに割り当てられた名前です。

      サンプルの詳細

      サンプルでは、変更する制御器のラベルはこれを編集です。

  3. VIオブジェクトリファレンスを開く」関数にステップ2の識別情報を配線することにより、対象オブジェクトのリファレンスを取得します。
  4. 「VIオブジェクトリファレンスを開く」関数のオブジェクトrefnum出力をプロパティノードまたはインボークノードに配線して、リファレンスされたオブジェクトの情報を取得または設定します。

    サンプルの詳細

    サンプルでは、スクリプトVIは数値:表記プロパティを使用してこれを編集制御器の数値表記を設定します。

  5. 使用が終わったオブジェクトリファレンスは、1つずつ「リファレンスを閉じる」関数を使用して閉じます。

注意とアドバイス

  • ブロックダイアグラムのレベルを少なくとも一度表示する―「VIオブジェクトリファレンスを開く」関数は、ラベルが表示されたことのないオブジェクトを検出できません。デフォルトではブロックダイアグラムオブジェクトのラベルは表示されないため、「VIオブジェクトリファレンスを開く」関数で検出したいブロックダイアグラムオブジェクトのラベルは手動で表示する必要があります。非表示になっているオブジェクトのラベルを表示するには、オブジェクトを右クリックして表示項目→ラベルを選択します。ラベルを一度表示すると、その後で非表示にしても、「VIオブジェクトリファレンスを開く」関数はそのオブジェクトを検出できます。
  • 固有のラベルを作成する―LabVIEWでは、ブロックダイアグラムオブジェクトに固有のラベルを付けることは強制されていません。ほとんどの場合、同じクラスのオブジェクトにはデフォルトで同じラベルが付いています。たとえば、ブロックダイアグラムにForループを2つ追加すると、両方のループがForループとラベル付けされます。同じラベルの付いたオブジェクトが他にもあるオブジェクトに「VIオブジェクトリファレンスを開く」関数を使用すると、最初に検出されたオブジェクトのリファレンスが返されます。目的のリファレンスを返すようにするには、各オブジェクトに固有のラベルを付けます。
  • 開いたリファレンスをすべて閉じる―多くのリファレンスが開いていると、VIのパフォーマンスが遅くなります。パフォーマンスの詳細については、VIおよびオブジェクトリファレンスを閉じるを参照してください。

追加サンプル

既知のVIのリファレンスを取得するサンプルについては、labview\examples\Application Control\VI Scripting\Creating VIsディレクトリのCreating New VI From Template VIを参照してください。



この記事は役に立ちましたか。

役に立たなかった