![]() |
Event Structure wird zweimal ausgeführt - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Event Structure wird zweimal ausgeführt (/Thread-Event-Structure-wird-zweimal-ausgefuehrt) |
Event Structure wird zweimal ausgeführt - Lebowski - 03.02.2007 22:46 Hallo, ich habe eine event structure die beim Drücken eines Buttons (Value changed) ausgeführt werden soll. Dieser Event führt zuerst eine For-Schleife aus, in der dann ein Kommando über die GPIB-Schnittstelle gesendet wird. Drückt man den Button, wird dieses auch ordnungsgemäß ausgeführt. Nur wird der Button (Latched by pressed) während der Ausführung als gedrückt angezeigt. Ist die Aktion dann beendet, so "wird" der Button wieder losgelassen und die Schleife wird erneut ausgeführt. Wahrscheinlich liegt das daran, das sich der Wert wieder geändert hat. Ich habe aber auch ein Event, bei dem ein Kommando ohne For-Schleife gesandt wird, mit den gleichen Einstellungen, dort passiert dieses nicht. Gibt es irgend eine andere Option (anstatt Value changed) oder eine andere Lösung für dieses Problem? Leider bin ich nicht im Institut, so das ich die Datei nicht posten kann, geht erst Mittwoch wieder. Grüße und Danke im vorraus. Event Structure wird zweimal ausgeführt - Lucki - 03.02.2007 23:55 Der Knopf springt bei Latch von selbst wieder heraus, wenn er abgefragt wird. Damit er das wird, sollte sich der Anschluß im Ereignisscase befinden. Bei Dir ist das wohl nicht der Fall. Die viel bessere Einstellung ist auch "Latch wenn released". Denn bei Deiner Einstellung springt er, (vorausgesetzt er befindet sich im Case), in derselben Mikrosekunde wieder heraus, in der Du ihn gedrückt hast, so daß, obwohl die Aktion ausgeführt wird, der Eindruck entsteht, er läßt sich überhaupt nicht drücken. Event Structure wird zweimal ausgeführt - Mr.T - 04.02.2007 01:01 Hallo! Weiterhin möchte ich anmerken, dass es evtl. Sinn machen tutet, im EVENT abzufragen, in welche "Richtung" der Button seinen Wert ändert! Also direkt AlterWert mit NeuerWert nach Laune Vergleichen und in einem CASE dann das Notwendige ausführen. Eine Wertänderung ist schliesslich auch da, wenn der Button losgelassen wird... [attachment=5013] Gruß Event Structure wird zweimal ausgeführt - Lucki - 04.02.2007 09:55 ' schrieb:Weiterhin möchte ich anmerken, dass es evtl. Sinn machen tutet, im EVENT abzufragen, in welche "Richtung" der Button seinen Wert ändert!Im Prinzip hast Du da natürlich recht. Aber so wie ich es vorgeschlagen habe - Latch when released und Knopf innerhalb des Ereigenis-Case - ist es wirklich unnötig, und das ist der am häufigsten vorkommende Fall. Der Knopf wird gedrückt - da findet noch keine Wertänderung statt. Erst wenn er losgelassen wird. geht die Wertänderung von false nach true. Der Knopf wird wird mit dem Auslesen im Ereignis-Case wieder zurück auf false gesetzt (das ist aber kein neues Bedienereignis). Man kann als Bediener am Knopf herumtricksen wie man will, es findet niemals eine Ereignis true-false statt und folglich muß der Fall auch nicht behandelt werden. Der Spaß ist aber zu Ende, wenn man vom Schalter ein lokale Variable braucht. Dann läßt sich der Schaltmodus Latch nicht mehr verwenden, und dann hast Du recht. Aber: auch wenn man das nicht macht, bleibt die mögliche Katastrophe in vielen Fällen aus. Beispiel: Stop-Button mit lokalen Variablen. Man wird ihn, wenn er nicht als Latch programmiert war, programmgesteuert mit eine Lokalen Variablen wieder zurücksetzen Fall 1: Der Knopf wird bei Initialisierung des Programms mit lokaler Variablen zurückgesetzt. Optisch unschön daran ist, daß der Knopf nach dem Beenden das Programm erst mal gedrückt bleibt. Es kann aber nicht vorkommen, daß im Ereignais-Case Stop ein true-false Case vorkommt, denn dar Knopf wird ja nur ein einziges Mal gedrückt. Fall 2: Der Kopf wird bei Beendigung das Programms mit lokalere Variablen rückgesetzt. Hier ist - zumindest solange das Programm noch in Entwicklung ist - eine Komplikation denkbar. Man drückt den Stop-Knopf, das Programm wird aber wegen interner Fehler nicht beendet. Man stoppt daraufhin das Programm mit roher Gewalt. Das Kopf wird dann nicht rückgesetzt, und der nächste Programmstart beginnt mit gedrücktem Knopf. Das nächste Bedienereignis beim Betätigen das Stop-Knopfes ist dann der true-false Übergang. Wenn man die beiden Fälle nicht unterschieden hat, dann stoppt das Programm auch dann. Aber was ist schlimm daran, wenn jedes Herumfummeln am Stop-Knopf den Abbruch bewirkt? Wozu sonst ist der Knopf denn da? |