LabVIEWForum.de - TCP IP Einführung

LabVIEWForum.de

Normale Version: TCP IP Einführung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Verwende mal das VI hier zur Erstellung und zum Warten des Listeners:
[attachment=45945]
Und vergiss nicht die Beispiele im NI Example Finder.

Gruß, Jens
So habe die beiden Funktionen durch deine oben gezeigt ersetzt. Nun Läuft das Server.vi munter weiter. Beim Starten des Client.vi gibt es jedoch einen Fehler (Anhang). Den konnte ich auch durch die Beispiele im ExmapleFinder nicht lösen.
Es werden zwei Mögliche Fehlerursachen genannt.
Aber da das Server.vi das TCPListen.vi nicht verlässt, werden keine Daten gesendet und es kann somit auch kein Puffer überlaufen. Die zweite Möglichkeit die die Fehlererklärung vorschlägt, wäre das der Server die Netzwerkverbindung verweigert hat. Aus welchen Gründen kann das passieren bzw. was ist hier der Fehler?
Bei TCP/IP trifft nur die 2. Erklärung zu.
Du hast aber schon zuerst das "Server"-VI gestartet und bei beiden VIs denselben Port verwendet?

Mglw. funkt deine Windows-Firewall dazwischen?!

Gruß, Jens
Okay Labview für die Firewall zugelassen und es klappt. Smile
Nun möchte ich keine Sinus-Daten übertragen sondern ein Array. Hier beispielhaft zum Test ein 100-Elemente langes Array mit 100 gefüllt. Um nach der Übertragung beide VIs gleichzeitig zu beenden ist der erste gesendete Wert die Länge des Array.
Leider tauchen zwei Probleme auf.
1. Die Daten werden nicht korrekt übertragen. Zunächst eine 100 dann zweimal eine Null und dann wieder eine 100 usw.
Warum kommen die Nullen dazwischen?
2. Die beiden VIs beenden nicht gleichzeitig. Das Client VI spukt deshalb eine Fehlermeldung aus.
Lad mal deine VIs hoch. Ich habe inzwischen keine Lust mehr, immer deine Versuche auf Grund von Screenshots nachzuprogrammieren.

Gruß, Jens
Kein Problem. Hier sind sie.
Elementares Debugging:
Wenn etwas nicht so funktioniert, wie man erwartet, dann sollte man sich die Rohdaten anschauen.

In deinem Fall bedeutet das, den TCP-Read-String genauer anzuschauen. Jeder 2. String ist nur 2 Byte lang und besteht nur aus <CR><LF>.

Jetzt überleg mal, woher das kommt?! Dazu solltest du dir anschauen, wieviele Bytes du pro Nachricht schreibst.
Erkennst du den Unterschied?

Übrigens, wenn du schon mit <CRLF> als Trennzeichen für eine TCP-Nachricht arbeitest, dann ist es sinnvoll, mit TCP-Read-VI eine große Anzahl an Bytes auf einmal auszulesen. Das VI stoppt automatisch das Lesen, wenn es das Trennzeichen erkennt.

Gruß, Jens
Alles klar. Die Anzahl der geschrieben und gelesenen Bytes habe ich nicht beachtet.
Seiten: 1 2
Referenz-URLs