Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo,
habe zwar ähnlich schon gepostet, aber es ist einen eigenen Threads würdig und ich kann das Problem jetzt auch genauer spezifizieren, also bitte nicht böse sein!
Folgendes Problem:
1 Hauptvi, das aus einer Whileschleife besteht, in der 1 Mal pro Sekunde Messdaten von einem OPC-Server geholt, dargestellt und demnächst auch gespeichert werden. Dieses VI hat ein Menü. Jedes Mal, wenn ich das Programm ausführe und einen Menüpunkt aktiviere bzw. mir das Untermenü (zum Beispiel Datei, Hilfe usw.) anzeigen lasse, stoppt die Datenerfassung. Abgesehen davon, dass ich ein Timingproblem bei der OPC-Abfrage bekomme, bleibt die Datenerfassung stehen, solange ich mich im Menü aufhalte. Wie kann ich dieses Verhalten abstellen?
Hab mich noch nicht mit Menüs beschäftigt... aber ich wuürd das ganze Menüzeugs in eine extra Schleife auslagern.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Hi,
du meinst also quasi einfach zwei whileschleifen, die miteinander nicht in Verbindung stehen und somit automatisch parallel ablaufen? Werd das mal probieren, aber mich wundert dieses Verhalten einfach, weil die Prozesse in der Schleife ja eigentlich parallel laufen sollten und demnach dann ja auch wieder die subvi's in der einen Schleife usw...
Werds gleich mal probieren und melde mich dann wieder :-D
Gruß Thomas
Innerhalb einer Schleife wird das Datenflussprinzip eingehalten. Das bedeutet nicht, das zwei VI's in einer Schleife parallel ausgeführt werden. Insbesondere nicht, da LV (korrigiert mich falls ich falsch liege) in ein Sub-Vi hineinspringt und dann die Code-Ausführung im übergeordnenten VI solange anhält, bis das Sub-Vi fertig ist.
Wenn also mit der Fortsetzung der Schleife gewartet wird bis das Menü-VI-Gedöns fertig ist (= Auswahl durch User abgeschlossen), dann passiert da während der Menügeschichte auch nix mehr...
Scheint in deinem Fall ja auch so zu sein.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' schrieb:Das bedeutet nicht, das zwei VI's in einer Schleife parallel ausgeführt werden. Insbesondere nicht, da LV (korrigiert mich falls ich falsch liege) in ein Sub-Vi hineinspringt und dann die Code-Ausführung im übergeordnenten VI solange anhält, bis das Sub-Vi fertig ist.
Das stimmt so nicht unbedingt.
Parallele Datenflüsse, also auch parellel platzierte SubVIs, laufen immer quasi-gleichzeitig ab. Das funktioniert auf jeden Fall. Für Schleifen bedeuten parallele SubVIs aber, dass der nächste Schleifendurchgang nur dann gemacht werden kann, wenn alle SubVIs beendet wurden. Hängt eines dieser SubVIs z.B. mit einem Menü, so hängt demzufolge die Schleife im MainVI, nicht aber die anderen SubVIs selbst.
Das Anhalten der Code-Ausführung im aufrufenden VI bezieht sich nur auf den Datenfluß, in dem sich das aufgerufene SubVI befindet.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Hallo!
Ich habe es gerade ausprobiert. Die Ursprüngliche Idee mit den beiden Whileschleifen funktioniert tatsächlich nicht. Die gerade eingetroffene Erklärung trifft zu. Ich werde mal das mit der Eventstruktur ausprobieren, ich habe allerdings noch nicht so viel Erfahrung damit, daher wird das eine Weile dauern. Bisher habe ich damit nur die F12 Taste (Siehe EasterEgg-Thread) abgefragt, aber das sollte ja nicht das Problem darstellen.
So funktioniert es aber nicht, das Programm steht immer noch. Daher habe ich diesen Teil aus der separaten Schleife in die Hauptschleife eingefügt. Weil ich den Timeout auf -1 gelassen hatte, stand die Ausführung dauerhaft. Mit einem Timeout von 200ms läuft wieder alles. Problem aber nach wie vor: sobald ich im Menü etwas auswähle steht der Rest der Anwendung!
Gruß Thomas
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!