LabVIEWForum.de
Daten aus einer For-Schleife werden nicht korrekt übertragen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Daten aus einer For-Schleife werden nicht korrekt übertragen (/Thread-Daten-aus-einer-For-Schleife-werden-nicht-korrekt-uebertragen)

Seiten: 1 2


Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 13.01.2011 16:38

Hallo zusammen,

ich habe mir aus den LV-Beispielen den aktiven TCP-Communicator ein wenig modifiziert. Beim Empfang bestimmter Wörter soll er einen entsprechenden Case ausführen.
So lange ich aus diesen Cases nur einen Wert zurückgebe, ist das auch kein Problem (Der Wert wird dann per TCP/IP zurückgesendet).

Nun habe ich in einem Case aber eine For-Schleife, die einzelnen Array-Elemente ausgeben soll.

[attachment=31664]Lv10

Das Problem hierbei ist, dass die For-Schleife durchläuft aber nur der höchste Arraywert ausgegeben wird.

Wenn ich alles verlangsamt ablaufen lasse, sehe ich, wie im Frontpanel in dem Feld "Eingabe" die Werte angezeigt werden. Aber sie werden nicht abgeschickt, sondern erst, wenn die Schleife durchgelaufen ist und darüber liegende while-Schleife stoppt.

Hat jemand eine Idee, wie ich das ändern muss, damit jedes Array Element einzeln gesendet wird?

Ich hoffe, von der Struktur her ist das für euch keine allzu große Zumutung. Ich habe erst dieses Jahr mit LabVIEW angefangen und gehe im Moment eher nach Funktion und habe nicht so den Durchblick, wie ich etwas optimiert gestalten könnte.

Die entsprechende VI-Datei ist im Anhang. Zusätzlich noch eine Textdatei die beim Aufrufen benötigt wird.

Lv10[attachment=31666]
[attachment=31667]

Danke und Gruß

Sebastian


Daten aus einer For-Schleife werden nicht korrekt übertragen - Richard - 13.01.2011 19:36

Hallo Brik,

du hättest auch an dem schon angefangenen Thread weiterschreiben können.

Zu deiner Struktur kann mann sagen, dass sie sehr CPU-Auslastend ist.

Du liest ständig die gleichen Daten aus der Steuerdatei in die Bedienelemente. 100% - CPU-Auslastung wegen Ungebremster While-Schleife.

Du pollst Verbinden in einer ungebremsten Schleife - 100% CPU-Last

Du pollst nochmal Verbinden als Lokale Variable in einer ungebremsten Schleife. - 100% CPU-Last.

Lösungen:

Das verarbeiten der Textdatei musst du nur einmal machen. Die Werte kannst du in einem Cluster bündeln und an die Schleife anschließen.

Im Anhang ein stark vereinfachtes Beispiel:
Du musst deinen Restlichen code dazupflegen, und in der Case-Struktur der While-Schleife deinen Cases hinzufügen und entsprechen die Werte aus dem Cluster lesen. Bei dem Array empiehlt es sich, diese direkt in der For-Loop zu senden und nicht über den allgemein genutzten Senden-Case.

Gruß Richard

Lv10
[attachment=31673]


Daten aus einer For-Schleife werden nicht korrekt übertragen - schrotti - 13.01.2011 20:03

[code]Zensierte Textstellen, die viele manomanoman, huihiu, ugly code, leck mich am A...,


Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 14.01.2011 09:33

Guten Morgen,

vielen Dank an euch beide für eure Verbesserungen. Wie bereits gesagt, mir fehlt da noch der Durchblick um die Sache strukturiert anzugehen. Ich habe meistens so lange probiert, bis die gewünschte Funktion erreicht war.

@schrotti: Gibt es einen speziellen Grund, warum die ausgelesenen Werte jeweils in einen Array geschrieben werden?
Des Weiteren habe ich in deiner Datei das Problem, das jedes Mal, wenn ich in der "Daten senden" Registerkarte auf "Verbinden" klicke, das Programm pausiert, die Empfangsschleife im Blockdiagramm aufblinkt und ich es manuell wieder aktivieren muss. Weißt du, was dafür der Grund ist?

An Richards Vorschlag werde ich mich mal am Wochenende setzen und versuchen den nachzubauen.

Danke nochmals und viele Grüße

Sebastian


Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 14.01.2011 12:04

Mache ich etwas falsch oder ist es bewusst so eingestellt, dass die Editierfunktion nur für kurze Zeit nach Erstellen eines Beitrags verfügbar ist?

Auf jeden Fall habe ich herausgefunden, dass in dem Programm ein Haltepunkt war und das Programm deswegen pausierte. Das ist nun geregelt.

Allerdings habe ich nun ein anderes Problem. schrotti hat aus meiner Datei ja den Dateiauswahldialog entfernt und durch einen festen Stringarray ersetzt.

Ich habe diesen nun wieder eingefügt. Nun funktioniert es aber nicht mehr, dass meine Daten parallel zwei mal ausgelesen werden.

[attachment=31688]

Einmal sollen die Daten in einem großen Textfeld angezeigt werden und zusätzlich werden sie in einen Stringarray geschrieben, von wo aus sie weiterverarbeitet werden.
Lasse ich das Programm ganz normal laufen, bleibt das Anzeigefeld leer. Benutze ich das Highlight-Werkzeug bleibt der Stringarray leer und die Daten erscheinen in dem Textfeld. Dafür bricht das Programm jedoch auf Grund des leeren Arrays ab.

Wie kriege ich das gelöst?

Lv10[attachment=31689]


Daten aus einer For-Schleife werden nicht korrekt übertragen - Richard - 14.01.2011 14:24

Hallo,

versuchs mal so -> [attachment=31695]

Gruß Richard


Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 18.01.2011 12:38

' schrieb:Hallo,

versuchs mal so -> [attachment=60854:ablauf.png]

Gruß Richard

Hat natürlich so geklappt, danke.

Nun stehe ich vor einem weiteren Problem. In meiner Datei oben reagiere ich ja auf bestimmte Wörter, die übers Ethernet kommen und gebe dann bestimmte Daten aus.

Nun sollen diese Daten vom Server aber wieder zurückgesendet und abgespeichert werden. Ich hatte es mir so vorgestellt, dass ich vom Server den Namen des Datums schicke und darauf folgend den Wert selber. Was muss ich nun machen, damit ich zwei Befehle in Kombination hintereinander auswerten kann?
Wenn ich mittels Case-Struktur auf den Namen reagiere, würde ich ja beim Wert dann wieder in einem anderen Case landen.

Danke und Gruß


Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 24.01.2011 12:18

Falls es wen interessiert, ich habe es nun so gelöst, dass ich die empfangenen Daten auf einen Unterstrich auswerte. Der Text vor dem Unterstrich ist das Wort auf das reagiert wird und hinter dem Unterstrich steht dann der Wert, dabei ist es egal, ob Unterstrich und Wert vorhanden sind oder nicht:

[attachment=31868]

Gruß


Daten aus einer For-Schleife werden nicht korrekt übertragen - Y-P - 24.01.2011 13:07

Nee, Du machst nichts falsch. ;)Dauerhaft Editieren können nur LVF-Team-Mitglieder und der Admin. Anniemacht_2 Hehe

Danke auch für die Rückmeldung. Top2

Gruß Markus

' schrieb:Mache ich etwas falsch oder ist es bewusst so eingestellt, dass die Editierfunktion nur für kurze Zeit nach Erstellen eines Beitrags verfügbar ist?



Daten aus einer For-Schleife werden nicht korrekt übertragen - brik - 24.01.2011 14:16

' schrieb:Allerdings habe ich nun ein anderes Problem. schrotti hat aus meiner Datei ja den Dateiauswahldialog entfernt und durch einen festen Stringarray ersetzt.

Ich habe diesen nun wieder eingefügt. Nun funktioniert es aber nicht mehr, dass meine Daten parallel zwei mal ausgelesen werden.

[attachment=60847:2011_01_14_120131.png]

Einmal sollen die Daten in einem großen Textfeld angezeigt werden und zusätzlich werden sie in einen Stringarray geschrieben, von wo aus sie weiterverarbeitet werden.
Lasse ich das Programm ganz normal laufen, bleibt das Anzeigefeld leer. Benutze ich das Highlight-Werkzeug bleibt der Stringarray leer und die Daten erscheinen in dem Textfeld. Dafür bricht das Programm jedoch auf Grund des leeren Arrays ab.

Wie kriege ich das gelöst?

Lv10[attachment=60848:014_Date...hrotti_2.vi]


' schrieb:Hallo,

versuchs mal so -> [attachment=60854:ablauf.png]

Gruß Richard


Ich möchte noch mal darauf hinweisen, dass beide Ausführungen bei mir die gleichen Probleme verursachen. Im Zweifelsfall bleibt die erste Anzeige leer.

Ich habe es nun in einer flachen Sequenzstruktur angeordnet und dem Öffnen der Datei eine Verzögerung von 3 Sekunden hinzugefügt. Ist die Verzögerungszeit geringer, bleibt die erste Anzeige weiterhin leer.

Liegt wohl an der Aufwändigkeit meines Programms oder an dem Leistungsdefizit des Rechners...

[attachment=31875]