LabVIEWForum.de - Case Ausführung - automatisch und einzeln

LabVIEWForum.de

Normale Version: Case Ausführung - automatisch und einzeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich versuche einen Automatischen Messablauf zu realisieren und habe dies mit Hilfe von Array soweit hinbekommen. Nun möchte ich die einzelnen Cases, wie beispielsweise Impedanzmessung in den jeweiligen Reitern einmalig ausführen. Wie kann ich das realisieren, ohne das dazugehörige VI nochmal in einem extra Case einzufügen und somit die ganzen Bedien- und Anzeigeelemente doppelt zu haben. (in dem angehängten VI ist die Impedanzmessung lediglich simuliert).

Ich hoffe, ich konnte mein Problem verständlich rüberbringen und bitte mich zu entschuldigen, falls ich etwas falsch gemacht habe, da dies mein erster Forumbeitrag ist.

Vielen Dank im Voraus!
Hallo ar,

herzlich willkommen im Forum!

Zitat:ich versuche einen Automatischen Messablauf zu realisieren und habe dies mit Hilfe von Array soweit hinbekommen.
Aha.
Meinst du dieses "Ablauf"-Array, welches gerade mal ein Element im UI anzeigt?

Zitat:Nun möchte ich die einzelnen Cases, wie beispielsweise Impedanzmessung in den jeweiligen Reitern einmalig ausführen. Wie kann ich das realisieren, ohne das dazugehörige VI nochmal in einem extra Case einzufügen und somit die ganzen Bedien- und Anzeigeelemente doppelt zu haben.
Bevor du das machst, solltest du das bestehende VI erstmal gründlich überarbeiten!
- Du brauchst nur einen einzige While-Loop! Diese 3 "kleinen" While-Loops (Zeitanzeige, Abfrage "Ablauf Reset", Anzeige "Messung läuft") gehören alle in die Steuer-Loop und zwar als weitere Events!!! Um Anzeigen halbwegs regelmäßig zu updaten könnte man den TimeOut-Event benutzen!
- Neben der Event-Struktur benötigst du keine weitere Wartezeit in der Schleife! Falls überhaupt, dann den TimeOut-Event nutzen!
- Wenn du alles in eine Schleife packst, brauchst du auch weniger lokale Variablen: nutze Draht und Schieberegister!
- Ein Event sollte immer schnell (in Millisekunden) abgearbeitet sein: dein Event "Dauermessung Start" verstößt eindeutig gegen diese Regel!
- Benutze bessere Labels für Controls/Indicators: Namen wie "Cluster" oder "Cluster 3" sind nicht selbsterklärend!
- Warum zwingst du dem Nutzer auf, mehrere Stopp-Buttons zu klicken, wenn er dein Programm beenden will? Verlangt das Word oder Chrome etwa auch von dir???
- Wieso nutzt du keine Autoindizierung für den "Ablauf" bei der Messschleife?

Bitte alles das erstmal umsetzen, bevor du über weitere Anpassungen nachdenkst!

Zu deiner Frage:
Du befüllst "Ablauf" mit genau dem Ablauf, den du "automatisch" abarbeiten lassen willst. Und dann startest du die "Dauermessung"-Schleife!
(Der Ablauf hat an sich überhaupt nichts mit den Reiter des Tab-Containers zu tun. Ein Tab-Container sortiert nur FP-Elemente in verschiedene Tabs…)
Hallo GerdW,

vielen Dank für deine ausführliche Antwort. Ich denke, du hast meine Frage nicht ganz richtig verstanden. Das Programm habe ich vorerst so erstellt, damit ich einige Vorgänge simulieren kann und um zu sehen, ob der Ablauf jedes mal neu angepasst werden kann.
Meine Frage bezieht sich lediglich darauf, ob es einen Weg gibt, eines der vorhandenen Cases unabhängig auszuführen, ohne das Case und somit eventuell auch die Bedien- und Anzeigeelemente kopieren zu müssen.
Hallo ar,

Zitat:Ich denke, du hast meine Frage nicht ganz richtig verstanden. Das Programm habe ich vorerst so erstellt, damit ich einige Vorgänge simulieren kann und um zu sehen, ob der Ablauf jedes mal neu angepasst werden kann.
Meine Frage bezieht sich lediglich darauf, ob es einen Weg gibt, eines der vorhandenen Cases unabhängig auszuführen, ohne das Case und somit eventuell auch die Bedien- und Anzeigeelemente kopieren zu müssen.
Ich denke, ich habe die Frage schon richtig verstanden…

Mit "Cases" meinst du wohl die Case-Struktur in diesem "Dauermessung"-Event:
Ich würde das komplette VI umstrukturieren und in Form eines QMH (QueuedMessageHandler) aufbauen.
Du brauchst zwei Schleifen: eine Producer-Loop für das UI-Handling und erstellen der Messages für die Queue. Und eine Consumer-Loop, die diese Messages/Befehle abarbeitet.
Die Consumer-Loop benötigt dann keine eigene Eventstruktur: die "Dauermessung Start" ist dann in der Producer-Loop und erzeugt eben eine größere Menge Messages, die als Dauermessung abgearbeitet werden. Und wenn du nur einen einzelnen Test/"Case" aufrufen willst, musst du auch nur eine Message in die Queue schicken… (Nebeneffekt: da jeder "Case" nur genau einmal im Code implementiert wird, brauchst du auch keine Kopien von irgendwelchen FP-Elementen!)

Wie schon mal gesagt: ich würde dir empfehlen, das VI gründlich zu überarbeiten!

Nachtrag zum VI: Das Schieberegister in deiner Dauermessung-Schleife ist erstens nicht initialisiert und zweitens unnötig…
Alles klar
Ich werde versuchen, deine Tipps umzusetzen.

Danke für die schnellen Antworten!
Referenz-URLs