2016-05-23 13 views
1

Sicher, ich kann es tun, indem ich funktionale globale Variable (FGV) benutze. Ganz am Anfang des Codes lese ich den Zustand (boolsche Werte, Numerische Werte usw.) von FGV und verbinde die Daten in das Schieberegister in Facade.vi. Nachdem die while-Schleife sich selbst beendet hat, schreibe ich die Daten in FGV und kann sie beim nächsten Mal wiederverwenden.LabVIEW - Wie behalte ich interne Zustände und verwende sie in X-Control wieder?

Aber es gibt ein Problem, wenn ich mehrere Instanzen von X-Steuerelement in einem VI statt einzelne Instanz verwenden. Die Non-reentrant FGVs, die von verschiedenen Instanzen von X Control verwendet werden, teilen dort ihren gemeinsamen Status.

Gibt es eine Möglichkeit, interne Zustände unabhängig von Instanzen von X Control zu halten?

Danke für jede Hilfe.

Antwort

0

Hier ist die Antwort meines Kollegen. Er hält interne Zustände unabhängig von Instanzen von XControl.

Er verwendet FGV, aber ein Schieberegister enthält den Namen des VI-Klons und der andere enthält Array der Cluster (Zustände) der XControl-Instanz. Die FGV ist immer noch nicht-reentrant und mehrere Instanzen verwenden eine gemeinsame FGV. Wenn einer der Instanzen seine eigenen Zustände lesen möchte, übergibt er einfach seinen VI-Klonnamen an FGV und dann gibt FGV ihm Zustände entsprechend dem VI-Klonnamen. Auf der anderen Seite, wenn eine der Instanzen die Arbeiten abschließt, übergibt sie ihren VI-Klon-Namen und ihre Zustände nach Beendigung der while-Schleife an FGV. Der FGV stapelt VI-Klon-Namen und entsprechende Zustände getrennt in Schieberegister. Diese Methode behält interne Zustände unabhängig von Instanzen von XControl bei.

Stack method used in FGV

+0

Dies ist natürlich nicht die beste Lösung, aber es ist eine Lösung. Ich würde MarcoMs meiner Lösung vorziehen. –

3

Sie können State ability and/or Custom Properties verwenden, um jede Variable zu speichern, die zur Steuerung des Aussehens und/oder Verhaltens des X-Controls verwendet wird.

In beiden Fällen hat jede Instanz von X Control unterschiedliche Statuswerte.

1

Ich habe das gleiche Problem konfrontiert und gelöst mit DVRs.

Nach dem Initiieren des Codes sollten Sie den DVR starten und die Referenz in der globalen Variablen speichern. Auf diese Weise können Sie festlegen, dass "FGV" s erneut einspringt, aber immer noch korrekt funktioniert.

-1

Nur die FGVS voll einspringende sein machen.