LabVIEWForum.de - Datenausgabe einer While-Schleife nach jedem Iterationsschritt??

LabVIEWForum.de

Normale Version: Datenausgabe einer While-Schleife nach jedem Iterationsschritt??
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich möchte folgende Anwendung programmieren.

Ich habe zwei Geräte und mittels Labview möchte bei beiden Geräten Daten auslesen - und ganz wichtig die Daten sollen kontinuierlich ausgelesen werden und der Datenauslesevorgang soll parallel zueinander laufen, also voneinander unabhägnig sein.
Ich habe mir also gedacht, ich lasse beide Geräte innerhalb jeweils einer eigenen While-Schleife auslesen.

Das Problem ist nun wie bekomme ich die Daten aus der jeweiligen While-Schleife raus um sie in einem weiteren Analyse-VI zu analysieren.... Der Datenauslesevorgang soll kontinuierlich laufen, heißt also die While-Schleifen kann ich nicht einfach anhalten um die Daten über einen Tunnel dann nach außerhalb auszugeben....
Ich brächte also so etwas wie eine While-Schleife, die nach jedem einzelnen Iterationsschritt den Wert an ihren Ausgängen nach ausßen hin abgibt, und nicht wie üblich erst nach beenden der While-Schleife.

Gibt es so etwas, oder hat vielleicht jemand eine andere Idee, wie ich mein Problem lösen könnte?

viele Grüße
Ich könnte es mal mit Notifiern versuchen !!!! Mal schauen ob das funktioniert!
Ich würde eher zu Queues raten. Mit einem Notifier bekommst du immer nur einen Wert, und es kann dir passieren, dass du einen Wert überschreibst.

Gruß, Jens
Vielen Dank für die Antwort.
Das wäre kein Problem, da ich immer nur den aktuellsten Wert brauche.

Das eine Gerät liefert die Werte wesentlich langsamer als das andere... somit warte ich bis vom langsamen Gerät die Daten vorhanden sind und sobald sie alle angekommen sind lese ich vom schnellen Gerät nur den aktuellsten Wert ein.
Hallo,

dann mach doch zwei Queues, die du auf ein Element beschränkst. In den zwei Erzeugerschleifen nimmst du Lossy-Enqueue, dann steht immer nur der Aktuelle Wert drin.
In der Verbraucherschleife setztz du bei der Langsameren ein Timeout, dass größer ist als das dt der Werte. Sobald in dieser Queue ein Wert ansteht wird im Programm fortgefahren. Als nächstes wird dann das Queue auslesen der schnellerern Schleife durchgeführt. Dann hast du die beiden aktuellen Werte und kannst diese Weiterverarbeiten.

Gruß Richard

[attachment=32515]
(25.02.2011 23:43 )Sternhagel schrieb: [ -> ]Vielen Dank für die Antwort.
Das wäre kein Problem, da ich immer nur den aktuellsten Wert brauche.

Das eine Gerät liefert die Werte wesentlich langsamer als das andere... somit warte ich bis vom langsamen Gerät die Daten vorhanden sind und sobald sie alle angekommen sind lese ich vom schnellen Gerät nur den aktuellsten Wert ein.
Wer sagt denn, dass man warten muss, bis ein Element in der Queue vorhanden ist? Einfach Timeout anders behandeln. Oder andersherum: aus einer Queue kann man auch alle vorhandenen Elemente auf einmal auslesen.

Gruß, Jens
Ok, ich versuch mal eure Vorschläge umzusetzten :-)
Vielen Dank erst mal !
Es funktioniert!! :-)
Danke nochmal. Und danke Richard! Dein VI hat mir sehr geholfen!

Peter
Referenz-URLs