RE: While-Schleife aus zweiter Schleife steuern
Moin,
im Prinzip sieht das schonmal ganz gut aus. Nur wird die untere Schleife den Case Serial-Port Run immer wieder aufrufen, weil sie den Befehl ja selber immer wieder in die Queue schreibt.
Ausserdem reicht es, die Queue nur hinter der oberen Schleife zu löschen. Die grüne Error-Leitung kannst Du unten auch direkt an den roten Punkt für's Schleifenende anschließen.
Etwas aufpassen musst Du, wenn Du an Ausgangstunnel Defaultwerte verwendest. Das sind dann nicht(!) die Werte am Eingangs-Pendant, sondern die ganz allgemeinen Default-Werte (Null bei Zahlen, leerer String, leeres Array etc.)
Man muss dann nicht zwingend alle Tunnel in allen Cases "durchverdrahten" aber zumindest diejenigen bei denen "ordentliche" Werte am Ausgang notwendig sind.
Für eine begrenzte Auswahl von Befehlen ist es recht komfortabel keine Strings zu verwenden, sondern "Enums". Die findest Du bei den Bedienelementen fürs Frontpanel und kannst sie von dort aus auch als Konstante ins Blockdiagramm kopieren. Das vermeidet Schreibfehler und bei der Case-Auswahl gibt es automatische Vorschläge.
Noch komfortabler wird es wenn man aus dem Enum eine Typdefinition macht. Denn dann werden etwaige Änderungen automatisch an allen Stellen übernommen. Aber das kannst Du Dir auch für "später" aufheben.....
Zu Deinen Fragen:
- die Queue vergisst prinzipiell nichts... das kann aber ggf. zu Überläufen oder seltsamen Wartezeiten führen
- In die Eventstruktur gehören alle Bedienelemente die ein Event auslösen sollen ;-)
Das kann auch bei Feldern mit irgendwelchen Werten der Fall sein (z.B. "Sollstrom") muss aber nicht. Wenn nicht auf eine Wertänderung, auf anklicken o.ä. reagiert werden muss, gehört es nicht in die Eventstruktur (z.B. ein Namensfeld oder Dein Umschalter).
- als Faustformel für eigene Schleifen würde ich sagen, alles was Verzögerungen verursachen kann (z.B. Benutzereingaben) oder zeitkritisch ist (z.B. Messwerterfassung) kommt in unabhängige Schleifen und wird mit Queues, Meldern etc. synchronisiert.
Alle übrigen Sachen "dürfen" zusammen abgearbeitet werden.
|