LabVIEWForum.de
User Event nur einmal ausführbar - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: User Event nur einmal ausführbar (/Thread-User-Event-nur-einmal-ausfuehrbar)

Seiten: 1 2


User Event nur einmal ausführbar - GT123 - 19.01.2010 11:17

Hallo,

ich führe zum Zeitpunkt x ein User Event aus. Jedoch kann ich es nur einmal ausführen, ein zweites mal nicht mehr.
Wo ist hier der Haken?


User Event nur einmal ausführbar - dimitri84 - 19.01.2010 11:24

Benutzerereignis außerhalb der äußeren Schleife erzeugen -> in ein Schieberegister der äußeren Schleife schicken -> außerhalb der Schleife das Schließen nicht vergessen


Gruß dimitri


User Event nur einmal ausführbar - IchSelbst - 19.01.2010 11:25

' schrieb:ich führe zum Zeitpunkt x ein User Event aus. Jedoch kann ich es nur einmal ausführen, ein zweites mal nicht mehr. Wo ist hier der Haken?
Eine Event-Struktur und eine While-Schleife laufen parallel in einer äußeren While-Schleife.

Für alle Elemente innerhalb einer While-Schleife gilt: Wenn alle Elemente abgearbeitet worden sind, wird der nächste Schleifendurchlauf gemacht. Demzufolge müssen die Elemente, die bereits abgearbeitet worden sind, mit der nächsten Abarbeitung solange warten, bis alle anderen Elemente innerhalb dieser While-Schleife auch abgearbeitet sind.

Wenn die Event-Struktur also einmal abgearbeitet wurde, so muss sie solange warten, bis auch die parallele While-Schleife abgearbeitet worden ist. Erst dann kann die Event-Struktur erneut starten. Da die papallele While-Schleife aber nie endet, wird die Event-Struktur kein zweites Mal gestartet.


User Event nur einmal ausführbar - dimitri84 - 19.01.2010 11:32

' schrieb:Da die papallele While-Schleife aber nie endet, wird die Event-Struktur kein zweites Mal gestartet.

Wieso endet die nie? Das seh' ich nicht. Mellow


User Event nur einmal ausführbar - IchSelbst - 19.01.2010 11:40

' schrieb:Wieso endet die nie? Das seh' ich nicht. Mellow
Die Abbruchbedingung der (beiden) While-Schleife (roter Punkt unten rechts, Punkt ist rot => Abbruch bei True) ist mit False verdrahtet.

Und gleich noch zwei Hinweise:
Die Vorgehensweise bezüglich des Erstellens des Benutzerevents sollte auf jeden Fall so wie von dimitri84 vorgeschlagen gemacht werden. Möglicherweise gibt es sonst nämlich irgendwann Speicherüberlauf.
Außerdem kann die Verwendung der Variablen "Boolean" so wie gepostet zu RaceConditions führen !


User Event nur einmal ausführbar - dimitri84 - 19.01.2010 11:45

:wallOh man ... sry ich hab falsch geguckt.


User Event nur einmal ausführbar - GT123 - 19.01.2010 11:56

Wenn ich eine Schleife um die Event Struktur lege dann läuft es.
Kann ich es so belassen ich meine wegen Speicherüberlauf... Das Event wird nie abgebrochen, da wenn das main.vi
schliesst wir alles mit exit beendet.


User Event nur einmal ausführbar - IchSelbst - 19.01.2010 12:10

' schrieb:Wenn ich eine Schleife um die Event Struktur lege dann läuft es.
Und zwar deswegen: jede While-Schleife läuft für sich => Die Event-Struktur läuft ständig.

Zitat:Kann ich es so belassen ich meine wegen Speicherüberlauf.
Die drei Elemente in der äußeren While-Schleife (generieren Benutzerevent, die zwei kleinen While-Schleifen) werden, so ist der Algorithmus, genau einmal ausgeführt. Die kleinen While-Schleifen laufen zwar ewig, das spielt aber für die Betrachtung der großen While-Schleife keine Rolle. Das Generieren des Benutzerevents wird nur ein einziges Mal gemacht => Du kannst das so lassen.
Wenn man sich das jetzt so überlegt, kommt man zu dem Ergebnis, dass man die außere While-Schleife einfach weg lassen kann.

Zitat:schliesst wir alles mit exit beendet.
Das ist schlecht, funktioniert aber.


User Event nur einmal ausführbar - BsaiboT - 19.01.2010 12:15

Du solltest die große Whileschleife entfernen und nur die zwei kleinen, einzelnen stehen lassen. Dann wird nicht mehr ständig ein neues Event erzeugt und registriert, sondern nur einmal zu Programmstart. Allerdings solltest du dann bei der Erzeugerschleife (dort, wo du das Event setzt) mit Schieberegistern gearbeitet werden.

Generell solltest Du Dir vielleicht mal das Prinzip von Erzeuger und Verbraucher noch einmal anschauen (auch die Beispiele dazu in LV!), dann wird dir sicherlich einiges klar...

Edit: da war wieder einer schneller Big Grin Also lass wie wir alle sagen die Whileschleife aussen weg.


User Event nur einmal ausführbar - GT123 - 19.01.2010 12:57

Super, vielen Dank.
Ich habe es noch einmal upgedatet, für die Forumbesucher die es interessiert.

D.h., dass wenn ich mit Shift-Registern arbeite erstellt es keine neuen Registrierungen.
Ich dachte immer das nur das "Generate user event" dies macht...