LabVIEWForum.de
Graph leeren mittels Queue - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Graph leeren mittels Queue (/Thread-Graph-leeren-mittels-Queue)



Graph leeren mittels Queue - GT123 - 15.03.2010 07:14

Hallo,

ich stehe hier gerade vor einem Problem bei dem ich nicht weiter weiss.
Ich habe einen Graph der über Queue mit Daten gefüttert wird. Es soll nun möglich sein, dass der User diesen Graph leeren kann.
Die Schwierigkeit liegt darin, dass ich in die Daten-Queue-Schleife eingreifen muss... (siehe Bild)
Wenn ich es so lösen wie auf dem Bild, also ich schicke der "Signal del" Queue ein True, dann wird oben ein leeres Array in das Shift Register gegeben.
Lasse ich es so laufen dann geht gar nichts, eben weil 2 Queues in einer Schleife auf Daten warten...

Wie kann ich so etwas lösen?
Ich wäre sehr dankbar um einen Lösungsvorschlag.


Graph leeren mittels Queue - GerdW - 15.03.2010 08:43

Hallo GT123,

an beide Queues einen TimeOut-Wert anschließen und testen, ob wirklich Daten angekommen sind.
So kann man sicherstellen, dass die Schleife in regelmäßigen Abständen iteriert...


Graph leeren mittels Queue - SeBa - 15.03.2010 09:28

Nimm doch statt einer Queue einen Melder für Signal_del.

Gruß SeBa

EDIT:
Beispiel:
snip09 [attachment=25138]


Graph leeren mittels Queue - GT123 - 15.03.2010 10:07

Hallo,

danke schon einmal für die Ratschläge.

Ich habe es mit dem Timeout versucht u. es funktioniert auf anhieb (siehe Bild).
Mit den Meldern wird es vermute ich ein bischen aufwendiger, da das True/False Case nach dem löschen zwingend wieder auf False gesetzt werden muss.
Ansonsten können keine neuen Daten in den Graph gelangen. Mit den Queue`s funktionierts.

Super vielen Dank!


Graph leeren mittels Queue - SeBa - 15.03.2010 10:19

' schrieb:Mit den Meldern wird es vermute ich ein bischen aufwendiger, da das True/False Case nach dem löschen zwingend wieder auf False gesetzt werden muss.

Im Beispiel sind beide Schlater auf Latch beim Drücken eingestellt. Und es ist nur ein (lauffähiges) Beispiel zum Umgang mit Meldern.

Aus deinem VI/Post geht ja nicht hervor, wie die Information zum Rücksetzen des Graphen generiert wird.

Ist es ein Butten der gedrückt wird:
Melder in True/False Case mit "Latch beim Drücken" Schalter. Case Status wird per Melder verschickt. True = Graph löschen, False = Nix tun.

Wird der Graph per Code gelöscht, könntest du z.B. erst ein True senden zum Löschen und kurz danach ein False hinterher schicken um den Melder zurückzusetzen.

-> An deiner geposteten Schleife ändert sich nix bis auf das Queue/Melder VI.


Gruß SeBa


PS:
Wenn's der Timeout für dich tut... okiedokie.


Graph leeren mittels Queue - GT123 - 15.03.2010 10:32

Hallo SeBa,

ich schicke per Queue zuerst ein True u. nach 200ms wieder ein False damit die Daten wieder in den Graph gelangen.


Graph leeren mittels Queue - SeBa - 15.03.2010 10:46

' schrieb:Hallo SeBa,

ich schicke per Queue zuerst ein True u. nach 200ms wieder ein False damit die Daten wieder in den Graph gelangen.


Das False kannst du dir auch sparen. Wenn das True-Element aus der Queue gelesen wurde ist es weg.

Erkennt die Queue einen Timeout ist das ausgegebene Element sowieso False.

-> das False ist nach dem Auslesen also auch weg. False bleibt es nur, da die Queue halt den Timeout erkennt.


Gruß SeBa


Graph leeren mittels Queue - GT123 - 15.03.2010 10:53

Aha, ok dann kann ich das noch ergänzen.
Vielen Dank