LabVIEWForum.de - Stil-Frage? Wohin gehören Anzeige & Bedienelemente im Blockdiagramm?

LabVIEWForum.de

Normale Version: Stil-Frage? Wohin gehören Anzeige & Bedienelemente im Blockdiagramm?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

bin neu im Forum und Neuling in LabVIEW. Im Bestreben von Anfang an alles richtig zu machen frage ich mich wo Bedien- und Anzeigeelemte im Blockdiagramm z.B. im Fall von Case-Strukturen zur Fehlerbehandlung platziert werden sollen. Falls ich im Fehlerfall weder das Bedien- noch das Anzeigeelement benötige, macht es nicht Sinn diese erst da ("vor Ort") zu platzieren wo ich diese benötige anstelle die Signale durch das komplette Diagramm zu ziehen / zu tunneln und mit Default-Werten zu versehen?

Ich habe zwei Grafiken angehängt in denen man sieht was ich meine. Man beachte die Platzierung der Eingabe- und Ausgabeelemente.

Gruß

Ulf
Hallo
Ich würde in erster Linie mal schauen, dass die Linien sich nicht Kreuzen.
Normalerweise ziehe ich diese nach Aussen (error etc.), ausser sie habe nur mit etwas bestimmten zu tun

Hier ein paar Links zum Thema
http://www.scribd.com/doc/12447063/Labview-Style-Book
http://zone.ni.com/devzone/cda/tut/p/id/8369

lg Martin
Hallo,

LabVIEW kann besser (speicher-effizienter) kompilieren, wenn die Anzeige-/Bedienelemente außerhalb von Strukturen liegen... (Steht irgendwo im StyleGuide und/oder PerformanceGuide.)
Ich habe mir von Anfang an angewöhnt die Front Panel Elemente stets außerhalb zu platzieren. Links die Kontrollelemente und auf der rechten Seite die Anzeigeelemente. Jeder weitere Code wird genau dazwischen platziert.

Schöne Grüße
Falk
Also ich entscheide mich im Zweifallsfall auch immer für die größere Übersichtlichkeit, also für die zweite Option. Die paar Byte mehr bei der Kompilierung - falls überhaupt - spielen doch heutzutage überhaupt kein Rolle. Man sieht doch auch sofort, daß die Bedienelemente nur bei (Kein Fehler) bzw. bei (kein Fehler AND false) verwendet werden und muß nicht in den Cases des BD herumblättern, um das herauszufinden.

Bei Schleifen mache ich das aber nicht, ich sei denn, es ist audrücklich erwünscht, daß sich sich der Wert während das Schleifenausführung durch Bedienung ändern kann. Das ist in der Haupt-Ausführungsschleife eines Programms in der Regel der Fall, bei Schleifen innerhalb dieser Schleife eher nicht.

Aber selbst in der Haupausführungschleife ist die bessere Option eine Ereignisbehandlung der Bedienelemente. Damit vermeidet man, daß Elemente ohne daß sie bedient wurden dauernd gelesen werden.

Im Drahtwirrwar zu vermeiden, scheue ich auch vor der Verwendung lokaler Variablen nicht zurück (Manchmal muß man dazu ein "verstecktes Element" erzeugen, denn ohne Element gibt es keine lokale Variable). Für einen Anfänger gilt aber, lokale Variablen erst mal tunlichst zu verweiden, und zwar solange, bis sich die neuartige LV-Eigenschfaft der quasiparallelen Verarbeitung von Allem was nicht voneinander datenabhängig ist in all ihren Konsequenzen fest bis ins Kleinhirn hinein verankert hat.
Also bislang keine eindeutige Antwort?

Beim Blättern durch den Style-Guide ist mir auf jeden Fall keine Regel untergekommen, die von einem Verfahren nach Option 2 ("kurze-Wege") abrät.
Bin auf weitere Meinungen gespannt...

Gruß

Ulf
Hallo,

ich entscheide mich - sofern möglich - für die erste Möglichkeit. Ich platziere also alle Elemente außerhalb.
Darin sehe ich einen großen Vorteil:

- Ich weiß sofort, wo sich Bedien- und Anzeigeelemente befinden (Übersichtlichkeit, leichte Wartbarkeit)

Und wie angesprochen stand irgendwo, dass eine Kopie des Werts angelegt wird, wenn man die Bedienelemente innerhalb der Case-Strukturen platziert. Außerhalb wird mit dem "originalen" Wert gearbeitet. Das steigert die Performance evtl. minimal (wird das SubVI in einer Schleife aufgerufen, könnte sich das auch bemerkbar machen, aber ich habe es nicht getestet).

Wichtig ist jedoch, dass du Bedienelemente nicht innerhalb einer Schleife platzierst, wenn du diese nicht in jedem Schleifendurchlauf neu einlesen möchtest. Das fortlaufende Einlesen kostet Zeit.
Das ist in deinem Beispiel oben zwar nicht der Fall, aber ich möchte das dennoch anmerken.
Edit: Deleted. /EOM
Referenz-URLs