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
Alles klar! Und zum Austausch globale Variablen zu nutzen ist bestimmt weniger sinnvoll oder?
ich würde sie nicht komplett verteufeln, aber wenn es um tatsächlichen Datenaustausch und nicht nur um die Abfrage irgendwelcher STATUS geht, muss man i.d.R. pollen - das braucht man bei den Queues nicht.


Gruß, Marko
Stimmt auch wieder, da haben Queues/Melder den grossen Vorteil direkt Events im Consumer auszulösen..und nicht per Polling abgefragt werden zu müssen..
Also danke nochmal! Smile
(04.07.2013 19:41 )Holy schrieb: [ -> ]Du kannst das SubVI einfach normal aufrufen und eine statische VI Referenz verwenden um das SubPanel zu laden.

Was mir bei dieser Variante soeben aufgefallen ist, dass ich die Main und SubVI hier nicht reentrant machen kann (VI Einstellungen) oder muss man dann was zusätzlich einstellen?
Bei mir ist es nämlich zwingend erforderlich dass die Main VIs mehrfach (reentrant) ausgeführt werden können.
Wenn die VIs reentrant sein sollen kommst du um das Open VI Reference nicht herum.
(05.07.2013 18:58 )Holy schrieb: [ -> ]Wenn die VIs reentrant sein sollen kommst du um das Open VI Reference nicht herum.

Super danke, das mit dem "Aufruf per Referenz" sieht echt gut aus..ich möchte dem SubVI nämlich auch nochn Klassenobjekt zur Initialisierung übergeben..das sollte so hoffentlich klappen! Smile

Was mir jedoch aufgefallen ist, das SubVI wird so gleich 3x in den Speicher geladen obwohl nur ein MainVI läuft..kann sich das jemand erklären? (erkannt mit dem LABVIEW Task Manager siehe: http://lavag.org/topic/14921-labview-tas...ge__st__40 )

[attachment=45296]
Das SubVI selber kommt in den Speicher weil das Main VI im Speicher ist als editierbares VI. Der erste Klon kommt von der statischen VI Referenz welche für den Typ und die Bestimmung des Names da ist. Der 2. Klon ist das laufende SubVI dann selbst.
Ah okay, das erklärt auch warum bei jeder neuen Instanz der MainVI weitere 2 Instanzen der SubVI in den Speicher geladen werden.

Ich habe nun auch noch zusätzlich einen Unterpanel Methodenknoten "VI entfernen" in der Beenden-Schleife der MainVI untergebracht, sonst bleibt beim Beenden der MainVI immer noch der zweite Klon (die laufende SubVI) im Speicher.
An dem hohen Memoryverbrauch des SubVIs bin vielleicht ich schuld. Es waren ja ursprünglich zwei VIs, ich hatte das Beipiel auf ein einziges reantrantes VI umgestellt, und dabei diese von den drei Optionen gewählt:
[attachment=45297]
Dabei ist es geblieben. Mit einer anderen Option, so vermute ich, würden wahrscheinlich weniger Kopien geladen.
Die Einstellung "gemeinsam genutzte Kopien" bringt hierbei auch nur abhängig von den Umständen etwas. Hier im Speziellen wird der erste Klon noch benötigt wenn der zweite angefordert wird. Ich denke für die meisten Anwendungsfälle ist es total uninteressant welche Option man gewählt hat. Nur in den Grenzfällen wird man die Wahl zwischen potentiell besserem Aufrufjitter bzw. Speicherverbrauch überhaupt merken. Von hohem Speicherverbrauch würde ich da auch eher weniger reden, da man es doch ausser dieser Option sowieso garnicht beeinflussen kann. Zu welchem Zeitpunkt er dann Klone wiederverwendet bzw. nicht ist dann auch nicht so einfach zu überblicken, da weder dokumentiert noch diskutiert.
Seiten: 1 2 3 4
Referenz-URLs