# Messwerte über TCP senden



## notizblock (18. Aug 2006)

Hallo,

ich muss zur zeit folgende Aufgabe bewältigen: Ein System nimmt Messdaten auf und ermittelt daraus einen Füllstand (0-100%). Diese Daten sollen nun via WLAN an einen anderen PC geschickt werden. über diesen PC wird der Füllstand in analoger Form ausgegeben (0-5V).

ich habe jetzt ein paar fragen zur bertragung.

Bei der Analyse-maschine verwende ich java unter linux und auf der Empfangseinheit mit der Hardware verwende ich c unter windows. 

Folgende Lösung habe ich bereits implementiert, leider ist diese nicht so gut geeignet.

ich speichere den Füllstand als short ab. und sende danach jeweils das Highbyte und das Lowbyte.

auf der Empfangseinheit empfange ich mit folgendem Stück code;


```
unsigned short int buf = 0;
unsigned short int val = 0;
recv(connSock,&buf,sizeof(unsigned short int),0):
val=buf;
recv(connSock,&buf,sizeof(unsigned short int),0):
val = val + 256*buf;
```

val enthält nun den korrekten Wert der ausgegeben werden kann.

Das Problem dabei ist folgendes. Von zeit zu zeit treten empfangsfehler aus und ich würde gerne diese übertragung absichern. oder gleich auf ein einfacheres Übertragungsmodell umsteigen (das wär mir am liebsten). Leider habe ich keinen Ansatz, wie ich das Effizienter lösen kann (1x empfangen). Meine idee wäre ByteBuffer unter java. dann daraus ein byte array machen und das ganze array senden. 

aber da ich ein c-beginner bin, habe ich keine plan, wie ich auf der gegenseite wieder vernünftige Werte bekomme!

Könnt ihr mir bitte helfen?
Habt ihr bessere Ideen?
Danke!

mfg
flo


----------



## dieta (18. Aug 2006)

Versuch's vielleicht mal, indem du eine ganz normale Java-Netzwerkverbindung mit Sockets aufbaust. Für Java ist es bein den Sockets ja egal, ob es sich um ein Lan- oder WLan-Netzwerk handelt.
Mehr dazu auch Hier


----------



## notizblock (18. Aug 2006)

wlan ist nicht das problem.

es geht über das "Protokoll", sozusagen

mfg
flo


----------



## Guest (26. Aug 2006)

Hallo Flo!

Was meinst du denn mit "von Zeit zu Zeit treten Fehler auf"?
Wenn du TCP/IP als Übertragungsprotokoll benutzt, dürften die Fehler eigentlich nicht in dem Maße auftreten, dass es dir als Problem auffällt. TCP überprüft ja so weit ich weiß die Konsistenz der übertragenen Daten. Fehler sollten dort also sehr, sehr selten bis gar nicht auftreten. Oder benutzt du UDP? Das knallt die Daten nämlich nur raus, und kümmert sich nicht darum, ob die auch richtig ankommen.

Ich habe vor einiger Zeit auch mal mein Java Programm mit einem C-Programm kommunizieren lassen, und habe da immer alles Byte für Byte verschickt. Wenn die Übertragungssequenz fertig war habe ich immer ein CR (Carriage Return) geschickt, so dass die Gegenseite bescheit wusste, dass jetzt Schluss ist. Keine Ahnung, ob das so eine "gängige" Methode ist, aber bei mir hat es wunderbar funktioniert und es hat NIEMALS einen Übertragungsfehler gegeben.

Vielleicht noch mal ein Tip am Rande: Les dir doch deinen Beitrag vor dem Abschicken noch mal durch, so dass die gröbsten Fehler raus sind. Dann lässt sich alles viel besser lesen.  :wink: 

Gruß
Maik


----------

