LabVIEWForum.de
Queue in Kombi mit Statemachine - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Queue in Kombi mit Statemachine (/Thread-Queue-in-Kombi-mit-Statemachine)

Seiten: 1 2


Queue in Kombi mit Statemachine - RMR - 10.02.2011 07:30

Hallo Forum,

ich hätte heute auch mal wieder eine Frage. Wie bindet ihr eine Queue in eine State Machine ein? Ich habe in der State natürlich auch Zustände in denen die Queue nicht ausgelesen wird und es kommt zum "Stau" der Daten. Wie kann ich das elegant lösen? In jeder STate auslesen nur damit sich nichts staut finde ich persönlich unschön.

Ein weiteter Punkt wäre die Kombi von Double und Boolen innerhalb der Queue. Funktionieren tut das, die Daten kommen im Foramt Variant an und ich könnte sie so wieder aufdröseln.
Auch hier die Frage ist das so sinnvoll?

Gibt es irgendeine "Standardlösung" für solche Fälle? Ich denke sowas kommst sicher häufig vor.

Danke & Grüße, Ralf


RE: Queue in Kombi mit Statemachine - jg - 10.02.2011 08:42

Wer sagt denn, dass du in der Statemachine in einem Zustand immer nur ein Queue-Element auslesen musst? Einfach im Auslesefall alle Elemente der Queue auslesen!

Gruß, Jens


RE: Queue in Kombi mit Statemachine - RMR - 10.02.2011 08:58

Hallo Jens,

ok verstehe ich, aber was mache ich, wenn ich in einem Standby-Zustand bin? Also längere Zeit keine Daten auslese. Sobald die Queue voll ist bleibt mir die Producer-Schleife stehen.
Nur Daten in die Queue schreiben wenn ich auch auslese? Könnte an ja über eine Case machen. Finde das aber irgendwie holprig.

Gruß, Ralf


RE: Queue in Kombi mit Statemachine - Lucki - 10.02.2011 09:31

(10.02.2011 08:58 )RMR schrieb:  aber was mache ich, wenn ich in einem Standby-Zustand bin? Also längere Zeit keine Daten auslese. Sobald die Queue voll ist bleibt mir die Producer-Schleife stehen.
Also falls Du die im Standby produzierten Daten nicht alle brauchst:
Es gibt seit LV2009 zwei verschiedene Funktionen zum Schreiben in die Queue: verlustfrei und verlustbehaftet. Bei Letzterer fliegt das älteste Element einfach raus aus der Queue, wenn sie voll ist. Das Einschreiben wird aber nicht blockiert.
Im anderen Fall, wenn Du alle Daten brauchst, mußt Du eben eine Fehlerbehandlung bei Timeout machen und eine Routine zu Speicherung und Leerung der Queue oder zu was weiß ich einrichten - wenn Du schon den Datenfluß nicht stoppen willst.
Oder anders gesagt: Was im Falle des Überlaufs geschehen soll, kannst nur Du wissen und das müßtest Du hier klar sagen. Wir können nur dabei helfen, wie es gemacht wird.


RE: Queue in Kombi mit Statemachine - RMR - 10.02.2011 10:30

Hi Lucki,

hat mir schon sehr viel geholfen. Das "verlustbehaftet" war mir neu und hilft mir wunderbar aus der Klemme.
Ups, Bedankpunkte gibt es ja gar nicht mehr..trotzdem: Vielen Dank.

Keep on rockin´, Ralf


RE: Queue in Kombi mit Statemachine - RMR - 10.02.2011 15:21

Ich bin nochmal da. Hat jemand eine Idee wie ich diese VARIANT Daten wieder aufgeschlüsselt bekomme? Mit dem VI "Variant nach Daten" funktioniert es leider nicht.

Danke & Gruß, RMR


RE: Queue in Kombi mit Statemachine - macmarvin - 10.02.2011 16:14

Mit Variant to Data funktioniert das schon, nur hast du das (hausgemachte) "Problem", daß du erst noch rausfinden musst ob das aktuelle Element nun ein DBL[] oder in Bool[] ist. Das würde z.B. mit den VariantType Funktionen in der vi.lib gehen. Für den konkreten Fall scheint mir eine stärker getypte Queue (also ohne Variant) sinnvoller. Mach dir z.B. ein typdefed Cluster mit den Paar Dbls und den Bools (jeweils mit Namen) und baue im Producer den Cluster zusammen, verschicke den und der Consumer erhält dann direkt den Cluster ohne große Datenumwandlung.
Hat auch den Vorteil, das du Datentypfehler schon zur Entwicklungszeit erkennst und nicht erst zur Laufzeit.


RE: Queue in Kombi mit Statemachine - RMR - 11.02.2011 07:25

Ok das werde ich versuchen. Der Varaiant Datentyp war, ist, mir eh nicht sympatisch.
Viele Dank für deine Hilfe.

Keep on rockin´, Ralf


RE: Queue in Kombi mit Statemachine - RMR - 25.02.2011 12:04

Hallo zusammen.

Nach Urlaub und ein paar anderen Kleinigkeiten ist nun auch diese Kuh vom Eis.
Danke für eure Hilfe.Prost

Falls es noch jemand brauche kann, die Lösung, wie ich es realisiert habe, als Screenshot.

Keep on rockin´, RMR


RE: Queue in Kombi mit Statemachine - Kiesch - 06.03.2011 16:32

Hätte dazu mal ne Anschlussfrage: Da ich in meinem Programm 2VIs miteinander kommunizieren lassen muss und globale Variablen vermeiden wollte habe ich die Kommunikation über eine Queue gelöst.
Gibt es dabei eine elegantere Methode Wertänderungen an der Queue als Event abzugreifen als einfach bei einem Signal aus der Queue (in einer parrallelen Schleife) signalisierend in eine Variable zu schreiben?
Sprich kann man direkt mittels der Queue ein Event auslösen (eleganter eben als über signalisierendes Schreiben in eine Variable).

Gruß Kiesch