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 LAbview Forum,
Als “Neuling” besser gesagt Wiedereinsteiger in Labview (Programmiererfahrung aus Praktikum) benötige ich eure Hilfe.
Es sind mehre Dinge die ich für eine gute Kommunikation zwischen Schleifen bräuchte, aber starten wir erstmal mit dieser Frage hier:
Ich habe mehre Schleifen, die miteinander kommunizieren sollen (exemplarisches Beispiel im Anhang), dies soll möglichst PC-Resourcen schonen erfolgen. D.h: Die Schleife soll eigentlich wie immer durchlaufen und nur wenn besondere Ereignisse eintreten dann auch einen speziellen Zustand einnehmen.
Also dachte ich mir ich benutze eine Erzeugnisstruktur dafür. Leider reagiert diese aber nur auf wirklich Knopf drücke des Benutzers und nicht auf „programmieret Knopfdrücke“. Jemand eine Idee für einen „Workaround“? Eine FGV will ich nicht nehmen, weil diese ja ständig abgefragt würde und nicht nur bei bestimmten Veränderungen.
An Queues hatte ich schon gedacht....
Die Herausforderung ist dass die Queues aus unterschiedliche Schleife kommen /ausgehen und das finde ich extrem unübersichtlich. Mit dieser Ereignisstruktur ist es wirklich schön übersichtlich...
06.04.2020, 15:06 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2020 15:06 von Freddy.)
(06.04.2020 14:14 )LV-New schrieb: An Queues hatte ich schon gedacht....
Die Herausforderung ist dass die Queues aus unterschiedliche Schleife kommen /ausgehen und das finde ich extrem unübersichtlich. Mit dieser Ereignisstruktur ist es wirklich schön übersichtlich...
ein Cluster schafft eventuell Abhilfe. Das bringt Übersicht ins Queue Gewusel. Anbei ein Beispiel.
Gruß
NoWay
06.04.2020, 15:21 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2020 15:28 von LV-New.)
Das Interessante ist aber dass es beim "Emergency"-Knopf funktioniert....
Wäre halt wirklich genial wenn ich mittels einem Eigenschaftswert o.ä. auch die anderen Ereignisstrukturen so bearbeiten könnte.
Gibt es denn da wirklich kein Workaround?
Mit Queues habe ich es ausprobiert geht natürlich, aber ist eben unübersichtlich als mit mehreren Queues die ständig irgendwo da rein und rausgehen...
(Im echten Programm werden es wohl 5 Prozesse/Schleifen die untereinander kommunizieren sollen/müssen).
Gibt es noch andere Varianten außer Queues? FGV fallen raus, da diese ständig abgefragt werden.
@NoWay: Cluster ist ne schöne Lösung, muss ich mir mal anschauen... sind wie gesagt 5 Schleifen die teilweise 4 unterschiedliche "Datentypen" austauschen sollen....
Anzeige
06.04.2020, 15:21 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2020 15:25 von Freddy.)
Wenn Du alle Ereignisaufrufe in eine Struktur schreibst funktioniert es.
Ein weiterer Punkt. Mit dem True zum Beenden der While Schleife wird die entsprechende Ereignisstruktur in der While Schleife nicht mehr verwendet.
Man beendet erst am Ende eines Programms diese Schleife. Dafür gibt es einige Möglichkeiten.
Dein End All wird kein Ereignis aufrufen. Dazu verwendet man "Wert (Signalisierend)".
Gruß
Freddy
Zitat:Das Interessante ist aber dass es beim "Emergency"-Knopf funktioniert....
Interessant dabei ist das Emergency am schnellsten war. Alle anderen Ereignisstrukturen kommen nicht zum Einsatz.
(06.04.2020 15:06 )Freddy schrieb: Jetzt habe ich mal das VI angeschaut.
Das geht nicht.
Pro VI nur eine Ereignisstruktur und auch nur wenn die VI's MODAL sind.
Eigentlich für ein Programm nur eine Ereignisstruktur verwenden.
Gruß
Freddy
Dem widerspreche ich: Max. eine Eventstruktur pro VI, damit kommt LabVIEW gut zu Rande.
Ich mach sowas immer wieder, z.B. wenn ich VIs in Subpanels lade und dann parallel zum Haupt-VI auf Events reagiere.
Klappt super.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(06.04.2020 12:13 )LV-New schrieb: Hallo LAbview Forum,
Als “Neuling” besser gesagt Wiedereinsteiger in Labview (Programmiererfahrung aus Praktikum) benötige ich eure Hilfe.
Es sind mehre Dinge die ich für eine gute Kommunikation zwischen Schleifen bräuchte, aber starten wir erstmal mit dieser Frage hier:
Ich habe mehre Schleifen, die miteinander kommunizieren sollen (exemplarisches Beispiel im Anhang), dies soll möglichst PC-Resourcen schonen erfolgen. D.h: Die Schleife soll eigentlich wie immer durchlaufen und nur wenn besondere Ereignisse eintreten dann auch einen speziellen Zustand einnehmen.
Also dachte ich mir ich benutze eine Erzeugnisstruktur dafür. Leider reagiert diese aber nur auf wirklich Knopf drücke des Benutzers und nicht auf „programmieret Knopfdrücke“. Jemand eine Idee für einen „Workaround“? Eine FGV will ich nicht nehmen, weil diese ja ständig abgefragt würde und nicht nur bei bestimmten Veränderungen.
Soweit erstmal….
Wie meine Vorredner kann auch ich nur dringend von der Verwendung von mehreren Ereignisstrukturen innerhalb eines VI abraten. Die LabVIEW-Hilfe sagt zwar, dein Beispiel-Konstrukt geht so in Ordnung, die Erfahrung zeigt es anders. Das geht fast immer schief !!!
Außerdem kannst du so nicht modular programmieren, du musst ja immer alles in einem VI halten, um Events in anderen Schleifen auszulösen (ok, stimmt nicht ganz, es gibt benutzerdefinierte Events und man kann Controls aus anderen VIs für die Eventverarbeitung registrieren). Trotzdem, das Gelbe vom Ei ist das nicht, da ist ein Vorgehen mit Queues zu bevorzugen.
Übrigens, wenn du unbedingt ein Event programmatisch auslösen willst, dann musst du die PropertyNode "Value (Signaling)" verwenden, nur die löst Events programmatisch aus. Aber sieh diesen Hinweis bitte nicht als Erlaubnis dafür, mit dieser Struktur weiterzumachen...
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!