Erfordert: VI-Skripte

Mit VI-Skripten können Sie VIs untersuchen und bearbeiten, deren Inhalt erst bei der Ausführung bekannt ist. Wie in jeder VI-Skript-Anwendung müssen Sie Referenzen auf die Objekte des Ziel-VIs ermitteln, mit denen Sie arbeiten möchten. Da der Inhalt des VIs jedoch erst bei der Ausführung feststeht, können Sie die Objekte nicht mit der Funktion VI-Objektreferenz öffnen anhand ihrer Beschriftung suchen. Stattdessen müssen Sie mit Hilfe des VIs GObjects suchen alle Objekte ermitteln, die derselben Klasse angehören. Sie können das ausgegebene Array von Objekten mehrmals durchlaufen, um festzulegen, welche Objekte bearbeitet werden sollen.

Objekte

Zum Erstellen des Skripts benötigen Sie folgende Objekte:

Vorgehensweise

Bevor Sie beginnen: Öffnen Sie das VI "Obtaining Unknown Object References.vi" im Verzeichnis labview\examples\Application Control\VI Scripting\Finding and Modifying Objects. In diesem Beispiel-VI wird jeder Schritt der folgenden Vorgehensweise dargestellt.

  1. Referenz auf das Ziel-VI ermitteln, in dem das Objekt enthalten ist, das untersucht oder bearbeitet werden soll.

    Details zum Beispiel

    Im vorliegenden Beispiel wird mit der Funktion VI-Referenz öffnen eine Referenz auf das unter Pfad zum Ziel-VI angegebene VI erzeugt. Das Skript-VI kann daher durch Angabe unterschiedlicher Pfade auf beliebige Ziel-VIs angewandt werden. Das Skript-VI lässt sich außerdem in ein SubVI umwandeln, wenn Sie das Skript-VI programmatisch auf mehrere VIs anwenden möchten.

  2. Klasse und Position der Objekte ermitteln, für die eine Referenz ermittelt werden soll.
    1. Übergeordnetes VI—Verbinden Sie diese Referenz mit dem Eingang VI-Referenz des VIs "GObjects suchen".
    2. Position innerhalb des VIs—Objekte können auf dem Frontpanel oder im Blockdiagramm des Ziel-VIs enthalten sein, aber auch in einem Cluster oder Strukturdiagramm (z. B. einer For-Schleife oder Case-Struktur). Sie müssen festlegen, wo das VI "GObjects suchen" genau nach dem Objekt suchen soll, indem Sie am Eingang Suchbereich eine entsprechende Konstante festlegen.

      Details zum Beispiel

      Im Beispiel muss das Skript-VI Elementanschlüsse (also Blockdiagrammobjekte) bearbeiten. Daher wird BD als Container angegeben, der vom Skript-VI durchsucht wird.

      Hinweis Wenn sich die Objekte in einem Cluster oder Strukturdiagramm befinden, wählen Sie die Option Andere am Eingang Suchbereich aus. Verbinden Sie die Referenz auf den Container-Cluster oder das Diagramm in beiden Fällen mit dem Eingang Andere Referenz des VIs "GObjects suchen".
    3. Klassenname des Objekts—Wie der Klassenname der Objekte ermittelt wird, erfahren Sie im Abschnitt Bestandteile gängiger VI-Objekte.

      Details zum Beispiel

      Im vorliegenden Beispiel ermittelt das Skript-VI Referenzen auf Elementsymbole im Blockdiagramm anhand der Klasse "Elementanschluss".

  3. Ermitteln Sie mit Hilfe des VIs GObjects suchen Referenzen auf die gewünschten Objekte, indem Sie die Angaben aus Schritt 2 mit dem VI verbinden.
  4. Zur Arbeit mit mehreren Objekten muss das ausgegebene Referenz-Array mehrmals durchlaufen werden.

    Details zum Beispiel

    Im vorliegenden Beispiel greift das Skript-VI mit Hilfe einer For-Schleife auf jedes Element im Array Referenzen zu.

  5. Die ausgegebenen Referenzen mit der Funktion Nach spezifischerer Klasse umwandeln. Die Klasse der Referenzen, die vom VI "GObjects suchen" ausgegeben wird, stimmt nicht mit der Angabe am Eingang Klassenname überein. Das VI gibt stattdessen ein Array aus GObject-Referenzen aus. Sie können jedoch die Funktion Nach spezifischerer Klasse auf die ausgegebenen Referenzen anwenden und sie auf diese Weise an Klassenname anpassen. Durch das Umwandeln der Referenz in eine spezifischere Klasse können Sie spezifischere Eigenschaften und Methoden auf die Referenz anwenden.

    Details zum Beispiel

    Im vorliegenden Beispiel wandelt das Skript-VI jede ausgegebene Referenz in die Klasse "Elementanschluss" um. Diese Umwandlung ist erforderlich, da die Beschriftungen für die Blockdiagrammobjekte nur durch Einstellen der Eigenschaft Elementanschluss:Beschriftung.Sichtbar auf TRUE eingeblendet werden können und die Eigenschaft "Beschriftung.Sichtbar" für GObjects nicht verfügbar ist. Durch die Umwandlung wird kein Fehler verursacht, da das VI "GObjects suchen" spezifisch nach Objekten der Klasse "Elementanschluss" gesucht hat.

  6. Durch Verbinden der Referenz mit einem Eigenschaftsknoten oder Methodenknoten die Einstellungen des angegebenen Objekts ermitteln oder festlegen.

    Details zum Beispiel

    Im vorliegenden Beispiel setzt das Skript-VI mit Hilfe eines Eigenschaftsknotens die Eigenschaft "Beschriftung.Sichtbar" auf TRUE, wodurch die Beschriftung des entsprechenden Elementsymbols im Blockdiagramm eingeblendet wird.

  7. Mit der Funktion Referenz schließen können Sie alle geöffneten Objektreferenzen nach ihrer Nutzung schließen.

Empfehlungen und Warnungen

  • Prüfen Sie bei Bedarf die Klasse jeder Referenz—Wenn Sie das VI "GObjects suchen" mit dem Namen einer Elternklasse verbinden, haben die in Form eines Arrays ausgegebenen Referenzen alle dieselbe Elternklasse, aber sie gehören nicht zwangsläufig derselben Kindklasse an. Wenn Sie z. B. mit dem VI "GObjects suchen" alle Objekte suchen, die der Klasse "Schleife" angehören, gibt das VI Referenzen auf For- und auf While-Schleifen aus. Die Klasse einer Referenz kann auf folgende zwei Arten bestimmt werden:
    • Wandeln Sie die Referenz mit der Funktion Nach spezifischerer Klasse in eine spezifische Klasse um. Wenn die Funktion einen Fehler ausgibt, entspricht die Referenz bereits der ausgewählten Klasse.
    • Vergleichen Sie die Eigenschaft Klassenname einer einzelnen ausgegebenen Referenz mit dem Namen der Klasse, den die Referenz haben soll.
  • Schließen Sie alle Referenzen nach der Verwendung—Wenn zu viele Referenzen geöffnet sind, verlangsamt sich die VI-Ausführung. Weitere Hinweise zu Faktoren, die die Ausführungsgeschwindigkeit beeinflussen, erhalten Sie im Abschnitt Schließen von Referenzen auf VIs und Objekte.

Weitere Beispiele

Ein Anwendungsbeispiel für das VI "GObjects suchen" finden Sie im VI "Using Traverse.vi" im Verzeichnis labview\examples\Application Control\VI Scripting\Finding and Modifying Objects.