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.
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...
Nimm doch statt einer Queue einen Melder für Signal_del.
Gruß SeBa
EDIT:
Beispiel:
snip09 [
attachment=25138]
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!
' 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.
Hallo SeBa,
ich schicke per Queue zuerst ein True u. nach 200ms wieder ein False damit die Daten wieder in den Graph gelangen.
' 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
Aha, ok dann kann ich das noch ergänzen.
Vielen Dank