LabVIEWForum.de - Eingriff in Schleife

LabVIEWForum.de

Normale Version: Eingriff in Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bin neu hier im Forum und dies ist mein erstes ThemaSmile

Ich verzweifel an einer Schleife. Das Problem ist folgendes: Ich führe kontinuierlich eine WHILE-Schleife aus. In dieser While-Schleife wird ein Befehl gesendet um Videodaten einer Kamera zu lesen (siehe Bild). Das funktioniert auch alles einwandfrei. Ich bekomme die Signale auf einem Graphen angezeigt.

[attachment=32079]

Ich muss nun aber während die Schleife läuft da rankommen, sprich ich muss gewährleisten können das während die Bilder angezeigt werden der Benutzer noch auf dem Frontpanel 4 Knöpfe drücken kann!!
Über diese Knöpfe wird ein Event ausgelöst welches einen Motor hin und her bewegt. Ich weiss nun aber das dies nicht geht, während die Bilder per While schleife zur verfügung gestellt werden.
Muss ich auf jeden Fall (wenn der Benutzer einen Button für die Motorsteuerung drückt) die while schleife erst stoppen und dann das ausführen und dann die While-Schleife fortsetzen? Das wäre aber sehr unschön, weil das mitunter schon mal sehr lange dauern kann, bis der Motor-Befehl abgearbeitet ist. Danach könnte ich die Bilder wieder anzeigen. Aber das wäre eine nicht so zufriedenstellende Lösung.
Kann man nicht von "aussen" erstmal abfangen, wenn einer der 4 Knöpfe gedrückt wurde und dann sagen, das die While schleife weitermachen soll, aber das Motor-Event parallel dazu läuft (also Motor bewegt sich und trotzdem sehe ich die Kamerabilder)?
Für Tips wäre ich sehr dankbar. Mellow
Schau' Dir mal das Bsp. "Eventgesteuerte Producer-Consumer-Loop" an. Da hast Du 2 (oder mehrere) parallele Schleifen und kannst per Event-Struktur eingreifen, während die andere Schleife munter Dein Frontpanel aktualisiert.

Gruß Markus
Welches Bsp.-VI meinst du genau? "Queue Basics.vi" ?
Hallo,

Producer-Consumer mit Events gibts als Vorlage (siehe Screen) unter Datei»Neu.

Dazu ist auch zusagen, dass die Eventstruktur so klein wie möglich gehalten werden sollte, also Berechnung usw. eben in die untere Schleife packenSmile

Beste Grüße,
NWO
Oje, ehrlich gesagt erschlägt ein das ein bisschen, wenn man das noch nie gesehen hat das Prinzip. Ich würde jetzt also mal auf Basis meines konkreten Problems folgendes machen:
Mein "gepostetes Bild" pack ich in die untere Schleife und oben kann ich was reinpacken was passieren soll während die untere Schleife meine Videodaten anzeigt, richtig?
Also oben mach ich mir die 4 Events für die 4 knöpfe? Die greifen aber wiederum auf sehr viel "Mist" zurück, also auch noch Sub-Vis und so ... Das würde so gehen ja?
Also wenn Du es einfach möchtest, dann machs mal so:
Die Schleife um den RVD-Senden-Code entfernen, und den verbleibenden Code in den Timeout-Event-Case verschieben.
In den RVD-Ereigniscase kommt nur noch das rein:
[attachment=32097]
Es funktioniert so: Wenn der RVD-Knopf false ist, ist Timeout -1, d.h der Timeout-Case (und damit Dein Code) wird niemals ausgeführt. Bei true wird der Timeout laufend ausgeführt, es ist genau so, als wenn der Code in Deiner alten Schleife läuft. Man kann aber alle Knöpfe bedienen und Ereignisse werden verarbeitet. (Durchverbindungen für Shift-Register in den anderen Cases nicht vergessen!)
Vielen Dank Lucki,

das hat mehr sehr geholfen! Es funktioniert!
Referenz-URLs