11.02.2010, 16:28
Beitrag #1
|
|
|
11.02.2010, 17:22
Beitrag #2
|
IchSelbst
LVF-Guru
Beiträge: 3.700
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
' schrieb:Frontpanel 2 Buttons
Auf beiden Frontpanels liegt ein event.
Ein Event liegt nicht auf einem Frontpanel. Mit einem Bedienelement am Frontpanel kann man einen Event auslösen. Genauso, wie mit dem Property "Wert(signalisierend)".
Zitat:Ich möchte nun, dass ich mit dem einen event das andere ausführen kann.
Vom Vorgehen, innerhalb des einen Events einen anderen ausführen zu sollen, solange der eine noch nicht abgearbeitet ist, rate ich dringend ab. Ein solches Vorgehen wirft prinzipielle Probleme auf.
Ich sag jetzt einfach mal so:
Eine Event-Struktur ist nicht in der Lage, zweimal, also parallel, ausgeführt zu werden. Parallel? :wald:Parallel hieße ein zweiter Datenfluß. Da die Eventstruktur aber nur einmal dasteht, kann sie auch nur einmal ausgeführt werden.
Zitat:Wie kann man es machen, dass das zweite event direkt ausgeführt wird, wenn es gerufen wird?
Mach eine Queue:
Mach eine parallele While-Schleife, die den Code des zweiten Events enthält und der nur ausgeführt wird, wenn in der Queue ein entsprechender Befehl steht. Im ersten und im zweiten Event verschickt du eine Meldung per Queue an diese parallele While-Schleife. Eine parallele While-Schleife, gesteuert durch eine Queue, kann als "Event-Sequenz" interpretiert werden.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
11.02.2010, 18:53
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2010 19:02 von Lucki.)
Beitrag #3
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
' schrieb:Ich möchte nun, dass ich mit dem einen event das andere ausführen kann.
Leider wird das zweite event erst ausgeführt, wenn das erste zu Ende ist.
Bei Drücken von Taste 1 sollen also Code 1 + 2 parallel ausgeführt werden, bei Drücken von Taste 2 nur Code 2. Das ist ein legitimer Wunsch, aber so wie Du es versuchst hast geht es nicht.
Wie Ichselbst schon sagte, ist eine einzelne Ereignisstruktur - mit mehreren Ereigniscases - nicht in der Lage, zwei Ereignsisse parallel auszuführen. Andererseits wird oft der Wunsch bestehen, daß jedes anstehendes Ereignis möglichst sofort ausgeführt wird. Damit das tatsächlich der Fall ist, gibt es diese einfache Regel: In die Ereigniscases darf nichts reinkommen, was Zeit beansprucht. Damit ist gewährleistet, daß die Ereignisstruktur kurz nach einem Ereignis schon wieder in Wartestellung für ein neues Ereignis ist.
Der Code, der Zeit beansprucht, muß also ausgelagert werden, am besten in eine parallele unabhängige Schleife. Das Ereignis selbst sendet nur eine Mitteilung an diese Schleife, daß sie 1 Mal abgearbeitet werden soll.
Beispiel:
2eventsWa.vi (Größe: 11,91 KB / Downloads: 524)
Und übrigens: Das ist sowieso ein guter Programmierstil: Ein Schleife für das Hauptprogramm und parallel dazu eine weitere Schleife nur für die Ereignisbehandlung.
|
|
|
15.02.2010, 09:10
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2010 09:24 von fsg4u.)
Beitrag #4
|
fsg4u
LVF-Gelegenheitsschreiber
Beiträge: 97
Registriert seit: May 2008
8.6
2008
de
23552
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
Danke für Eure Anregungen. Könntet ihr mein Beispiel einmal mit Queues realisieren? Das wär klasse.
Danke FSG
|
|
|
15.02.2010, 10:21
Beitrag #5
|
IchSelbst
LVF-Guru
Beiträge: 3.700
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
' schrieb:Danke für Eure Anregungen. Könntet ihr mein Beispiel einmal mit Queues realisieren? Das wär klasse.
Ich würde sagen, wir mach das andersherum: Du baust dir zur Übung die Queue selbst ein, hilfst dir dabei selbst mit der Onlinehilfe und den Onlinemustern, und stellst dann das VI hier ein - falls etwas nicht so geht wie gedacht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
15.02.2010, 12:06
Beitrag #6
|
fsg4u
LVF-Gelegenheitsschreiber
Beiträge: 97
Registriert seit: May 2008
8.6
2008
de
23552
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
Habs jetzt über die Occurences gelöst. das klappt ganz gut.
danke fsg
|
|
|
15.02.2010, 18:30
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2010 18:31 von Lucki.)
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
' schrieb:Habs jetzt über die Occurences gelöst. das klappt ganz gut.
Ja, ich hatte es im Beispiel ja auch so gemacht. Aber vielleicht sollte man erwähnen, daß NI von der Verwendung von Occurences abrät. Man soll statt dessen Melder verwenden. Ich vermute, daß der Grund der ist, daß in der Version LabVIEW 2020 :mellow:die Occurences abgeschafft werden sollen.
|
|
|
15.02.2010, 18:44
Beitrag #8
|
|
|
16.02.2010, 10:08
Beitrag #9
|
fsg4u
LVF-Gelegenheitsschreiber
Beiträge: 97
Registriert seit: May 2008
8.6
2008
de
23552
Deutschland
|
anderes Event ausführen, obwohl Hauptevent noch nicht fertig ist
moin. Danke für die Hinweise. Bin dann selber auch auf die Notfications gekommen. Da kann ich direkt noch ne Nachricht mitschicken.
Das find ich am besten.
Danke für Eure Tipps. Nun läuft alles so, wie ich es gern hätte!!
|
|
|
| |