TCP Socket, float Werte empfangen

  • 3 Antworten
  • Neuester Beitrag
Diskutiere TCP Socket, float Werte empfangen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

mitch_HD2

Fortgeschrittenes Mitglied
Hi zusammen,

Ich habe einen TemperaturSensor welcher an meinen Linux Server eine temperatur in float umgewandelt in 4 byte schickt.

diese 4 Byte wandel ich wieder zurück in einen float

Code:
union floatchar{
				unsigned char c[4];
				float f;
			} ;	
		union floatchar fc;
			
	fc.c[0] = got_RF24[2];
	fc.c[1] = got_RF24[3];
	fc.c[2] = got_RF24[4];
	fc.c[3] = got_RF24[5]; 

float tempSensor = fc.f;
das Funktioniert... ich bekomme einen float Wert mit meiner Temperatur...

diese 4 Bytes schicke ich nun über einen TCP Socket zum Andriod!!!

dort empfange ich aber nichts... senden tut der, da ich es bereits einfach mal ausprobiert habe indem ich in die bytes einfach beliebige Werte eingetragen habe.


Mein Android Code:
Code:
byte[] tempbyte1 = new byte[4];
					
                    tempbyte1[0] = bufRec[1];
					tempbyte1[1] = bufRec[2];
					tempbyte1[2] = bufRec[3];
					tempbyte1[3] = bufRec[4];

                    ByteBuffer ret;
                    float f = ByteBuffer.wrap(tempbyte1).order(ByteOrder.LITTLE_ENDIAN).getFloat();

					System.out.println(f+ "°C");
					Fragment3.temperatur = f+"°C";

					break;
Bekomme dort allerings immernur 0 angezeigt
 
Jaiel

Jaiel

Experte
Ich hab mir die API vom byteBuffer mal angeguckt du machst da ncihts verkehrt

dann müssen die 0en aus bufrec stammen...mit dem gegebenen Code kann man dir daher nicht helfen
 
M

mitch_HD2

Fortgeschrittenes Mitglied
Ich habe mir das ganze mal über wireshark angeschaut.. Der spuckt mir malformed packed aus... Was auch immer das heist.. Jedenfalls schicke ich zu den 4 bytes noch ein zusätzliches.. Und dieses wird mir richtig angezeigt
 
Jaiel

Jaiel

Experte
na dann liegt das problem auf einer anderen baustelle


ich denke es ist das was es heißt :) falsch verpackt...kaputt gegangen

Der ursprüngliche Beitrag von 17:54 Uhr wurde um 17:57 Uhr ergänzt:

BTW: wieso ordnest du die bytes um? dadurch kommt doich die falsche float value heraus oder?