07.02.2017, 13:02
Beitrag #1
|
Beam1
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Jan 2017
2015
2017
DE
Deutschland
|
zwei Schalter, eine Ausgabe je nach Schalterlabel
Hallo,
Ich habe zwei Schalter. Je nachdem welchen der Schalter ich betätige, soll mir ein bestimmter Wert ausgegeben werden.
Also klicke ich auf Schalter1 (und zwar jedesmal, d.h. egal ob der Schalter damit auf True oder False gesetzt wird), dann gib mir im Anzeigeelement1 den Wert 0 aus.
Klicke ich auf Schalter2, dann gib mir im Anzeigeelement1 den Wert 1 aus.
Habe es mit einer Case-Struktur probiert, aber damit kann ich nicht beide Schalter gleichzeitig damit verbinden.
Und eigentlich ist die Schalterstellung ja auch egal, denn eigentlich will ich ja erfahren, welcher der beiden Schalter gerade betätigt wurde (also eigentlich müßte ich das Label der Schalter auslesen, geht das?).
Wie macht man sowas in LabView?
|
|
|
07.02.2017, 13:06
Beitrag #2
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: zwei Schalter, eine Ausgabe je nach Schalterlabel
Hallo Beam,
nimm eine Event-Struktur und richte zwei Events (je eines pro Button) ein. Im Eventcase dann einfach den passenden Wert ausgeben…
(Wenn du nur Mausklicks auswerten willst, würde ich ein MouseDown empfehlen.)
|
|
|
07.02.2017, 14:42
Beitrag #3
|
Beam1
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Jan 2017
2015
2017
DE
Deutschland
|
RE: zwei Schalter, eine Ausgabe je nach Schalterlabel
Hallo,
Danke. Nachdem ich erstmal gelesen hatte, wie man wo die Drähte verbinden muß, hat es schon mal grundsätzlich funktioniert (obwohl ich diese Event-Struktur noch nicht durchschaue, z.B. was die Einträge an der linken Innenseite alle bedeuten und wofür die gut sind). Aber sehr interessant diese event-Struktur, man kann da ja einfach jedes Control auswählen und darauf individuell reagieren.
Problem dabei: Diese Event-Struktur hält doch die Ausführung des Programms solange an bis ein Button gedrückt wurde (zumindest geht es nicht weiter, wenn ich mir den Programmfluß mit der Glühbirne anzeigen lasse und in der Context-Hilfe steht auch sowas). Läßt sich das umgehen?
Ich lese ja auch kontinuierlich Werte aus einem Gerät aus und nur in variablen Abständen wird auf die Buttons geklickt (um was damit zu steuern), d.h. das Programm darf nicht solange stoppen, bis der Button gedrückt wurde, sondern muß kontinuierlich weiter laufen (habe dafür eine While-Schleife).
|
|
|
07.02.2017, 14:56
(Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2017 14:57 von GerdW.)
Beitrag #4
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: zwei Schalter, eine Ausgabe je nach Schalterlabel
Hallo Beam,
Zitat:Diese Event-Struktur hält doch die Ausführung des Programms solange an bis ein Button gedrückt wurde
Jein.
Eine Eventstruktur wartet auf das nächste Event - das kann auch ein TimeOut sein.
Das mit den Einsteigerkursen und meiner Signatur hast du doch schon einmal gehört, oder?
Und noch ein Tipp: LabVIEW bietet auch jede Menge Beispiel-VIs, die man inspizieren kann!
Zitat:das Programm darf nicht solange stoppen, bis der Button gedrückt wurde, sondern muß kontinuierlich weiter laufen (habe dafür eine While-Schleife).
Und da kommen wir zum Thema "Programm-Design"! Es gibt ja noch mehr als nur eine simple While-Loop, die ALLES enthält.
Und auch dafür bietet LabVIEW Beispiel-VIs/-Projekte! (Statemachine, Producer-Consumer, QMH, ActorFramework,…)
|
|
|
07.02.2017, 16:25
Beitrag #5
|
Beam1
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Jan 2017
2015
2017
DE
Deutschland
|
RE: zwei Schalter, eine Ausgabe je nach Schalterlabel
(07.02.2017 14:56 )GerdW schrieb: Jein.
Eine Eventstruktur wartet auf das nächste Event - das kann auch ein TimeOut sein.
Ok, jetzt bleibt es zumindest nicht mehr hängen und der Stop-Button der While-Schleife funktioniert wieder.
Zitat:Das mit den Einsteigerkursen und meiner Signatur hast du doch schon einmal gehört, oder?
Und noch ein Tipp: LabVIEW bietet auch jede Menge Beispiel-VIs, die man inspizieren kann!
Das mit der Nadel in tausend Heuhaufen hast du doch auch schon mal gehört, oder?
Zitat:Und da kommen wir zum Thema "Programm-Design"! Es gibt ja noch mehr als nur eine simple While-Loop, die ALLES enthält.
Nicht alles, aber den Mess-Teil incl. der Buttons, da während der kontinuierlichen Messung Ventile geöffnet und geschlossen werden müssen.
Mit klassischen Programmiersprachen hätte ich das genauso gemacht.
Zitat:Und auch dafür bietet LabVIEW Beispiel-VIs/-Projekte! (Statemachine, Producer-Consumer, QMH, ActorFramework,…)
Nadel in 10 000 Heuhaufen. ... mit hübschen bunten Mustern
Aber ich habe ja ein Beispielprogramm für diese Art der Anlage, allerdings mit anderer Hardware, d.h. ich kann das Programm nicht laufen lassen, ich kann mir nur die bunten Icons ansehen. Ist sehr komplex und ich verstehe noch sehr vieles nicht (hauptsächlich weil ich nicht weiß, was das alles für Icons sind und was sie machen), aber auch hier wurde der Messteil in einer großen alles umfassenden While-Schleife gepackt (außer Initialisierung der Geräte vor der Messung und Einstellung eines kontrollierten Endzustandes nach Ende der Messungen).
|
|
|
07.02.2017, 16:40
Beitrag #6
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: zwei Schalter, eine Ausgabe je nach Schalterlabel
Hallo Beam,
Zitat:Nadel in 10 000 Heuhaufen. ... mit hübschen bunten Mustern
Auch in anderen Programmiersprachen gibt es diese Programmierschemata, z.T. eben nur unter anderen Namen. Auch in C, Java, etc. kann man Statemachines (und komplizierteres) erstellen!
Zitat:Aber ich habe ja ein Beispielprogramm für diese Art der Anlage, allerdings mit anderer Hardware, d.h. ich kann das Programm nicht laufen lassen, ich kann mir nur die bunten Icons ansehen.
Wenn du die VI vorliegen hast, kannst du mit der Maus über die BD-Elemente fahren und die Kontexthilfe lesen. Das liefert deutlich mehr Informationen als nur auf "bunte Icons" zu schauen!
Zitat:aber auch hier wurde der Messteil in einer großen alles umfassenden While-Schleife gepackt (außer Initialisierung der Geräte vor der Messung und Einstellung eines kontrollierten Endzustandes nach Ende der Messungen).
D.h. weil dein Vorgänger alles nach Art einer festen Sequenz programmiert hat, muss das gut sein und darf nie mehr anders/besser gelöst werden!?
|
|
|
| |