13.01.2011, 16:38
Beitrag #1
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
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.
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.
012_Datei_auslesen_und_senden_Schleife.vi (Größe: 77,88 KB / Downloads: 225)
002.txt (Größe: 448 Bytes / Downloads: 284)
Danke und Gruß
Sebastian
|
|
|
13.01.2011, 19:36
Beitrag #2
|
Richard
LVF-Gelegenheitsschreiber
Beiträge: 70
Registriert seit: Jun 2009
8.6,9.0,9.1,10.0,11.0
2008
DE_EN
80797
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
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
|
|
|
13.01.2011, 20:03
Beitrag #3
|
|
|
14.01.2011, 09:33
(Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 09:37 von brik.)
Beitrag #4
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
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
|
|
|
14.01.2011, 12:04
(Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 12:33 von brik.)
Beitrag #5
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
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.
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?
014_Datei_auslesen_und_senden_schrotti_2.vi (Größe: 70,21 KB / Downloads: 212)
|
|
|
14.01.2011, 14:24
Beitrag #6
|
Richard
LVF-Gelegenheitsschreiber
Beiträge: 70
Registriert seit: Jun 2009
8.6,9.0,9.1,10.0,11.0
2008
DE_EN
80797
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
Hallo,
versuchs mal so ->
Gruß Richard
|
|
|
18.01.2011, 12:38
Beitrag #7
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
' 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ß
|
|
|
24.01.2011, 12:18
Beitrag #8
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
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:
Gruß
|
|
|
24.01.2011, 13:07
Beitrag #9
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
Nee, Du machst nichts falsch. ;)Dauerhaft Editieren können nur LVF-Team-Mitglieder und der Admin.
Danke auch für die Rückmeldung.
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?
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
24.01.2011, 14:16
(Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2011 14:18 von brik.)
|
brik
LVF-Grünschnabel
Beiträge: 26
Registriert seit: Jan 2011
10.0
2011
de
46539
Deutschland
|
Daten aus einer For-Schleife werden nicht korrekt übertragen
' 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?
[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...
|
|
|
| |