LabVIEWForum.de - Event löst in VI im Subpanel nicht aus :-(

LabVIEWForum.de

Normale Version: Event löst in VI im Subpanel nicht aus :-(
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Interessanterweiser führt die Einstellung "mit gemeinsamer Kopie" beim SubVI bei mir sogar zu insgesamt 5 SubVI Instanzen bei nur einer MainVI am laufen..also in dem Fall noch mehr Speicherlast als mit "vorbelegter Kopie"..

Aber ansonsten schön mal drüber gesprochen zu haben.. Big Grin

[attachment=45298]
Und hallo schon wieder! Wink

Ich würde nun gerne dass auch Events im SubVI Events im MainVI auslösen, bekomme es aber leider nicht richtig hin die Event Referenz vom Sub ins MainVI zu geben.

Hier mal mein Versuch der leider so nicht funktioniert:
Hallo zusammen,

hab den Anfang der Diskussion nicht komplett mitbekommen, aber die VIs vom Vorpost habe ich mir mal angeschaut.
Ich habe das nun mal mit VI-Server gemacht und setze per InvokeNode die ControlVals, statt das VI mit CallByRef zu rufen.

[attachment=45350]
[attachment=45349]
Prima danke, also kann man wie ich sehe auch Event-Referenzen mittels InvokeNode übergeben. Sehr wichtig scheint dabei jedoch die richtige Reihenfolge im Fluss zu sein.
Das funktioniert so prinzipiell aber es gibt da immer folgende Punkte zu beachten:
  • die Aufrufmethode mit Set Control und folgendem Run VI ist relativ langsam
  • Umbenennung von Frontpanelelementen muss im aufrufenden VI beachtet werden
  • Datentypüberprüfung der Controls und Indicators erst zur Aufrufzeit und dadurch potentielle Laufzeitfehler

Im Allgemeinen würde ich das daher vermeiden und nur für Sachen verwenden wo es keine vergleichbar einfache Lösung gibt.
Okay das stimmt, dann werde ich versuchen weitestgehend ohne diese InvokeNodes / Set Control Knoten auszukommen und eher auf Notifier/Queues und gegebenfalls Events setzen. Smile
Ich hatte schon versucht komplexe Daten mit diesen InvokeNodes zu übertragen aber immer wieder Probleme gehabt sie ohne Laufzeitfehler an der richtigen Stelle einzusetzen..da verliert man schnell den Überblick über den Datenfluss..
Weiter gehts.. Wink

Ich habe zur Zeit eine MainVI mit zwei SubVIs in SubPanels, da mein Programm objektorientiert sein soll möchte ich die Daten welche zwischen den SubVIs kommuniziert werden gerne als Klassendaten speichern, scheitere aber daran beiden SubVIs das selbe Objekt zur Initialisierung zu übergeben, bei Abzweigung entsteht ja wieder eine neue Objektkopie. Wie ist es überhaupt möglich parallel laufende VIs mit dem selbem Objekt arbeiten zu lassen?
Das Datenflussprinzip lässt sich auch durch Klassen nicht aufweichen. Wenn du Daten hin- und herschicken möchtest benötigst du immer einen entsprechenden Transportmechanismus. Typischerweise Benachrichtungen oder Queues. Die Referenz zu diesen kannst du dann natürlich in ein Klassenobjekt legen und dieses teilen und schon kennt jedes deiner SubVIs den Transportmechanismus.
Die Liste der Transportmechanismen ist natürlich noch sehr viel länger...
Wenn du eine Objektkopie verhindern willst könntest du mit einer DVR-Klasse arbeiten und somit eine Referenz auf ein Klassenobjekt erhalten. Ich denke aber das ist eigentlich garnicht das was du brauchst sondern du benötigst nur einen Mechanismus zum Datenaustausch.
Okay, alles klar. Danke! Smile
Seiten: 1 2 3 4
Referenz-URLs