Bluetooth-Kommunikation Float als Byte-Werte senden

J

jdajul

Ambitioniertes Mitglied
1
Hallo, ich möchte gern über Bluetooth Steuerbefehle an ein existierendes System schicken. Das funktioniert soweit auch. Ich möchte jetzt jedoch eine Float variable über bluetooth schicken. Dieser Float-Wert muss als Byte-Quadrupel formatiert werden. Dazu habe ich die folgende Methode genutzt:

public static byte[] convertFloatToByteArray(float value) {
return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putFloat(value).array();
}

Das Ergebnis dieser Methode wird dann über Bluetooth an den Mikroprozessor (Atmel atmega) geschickt, führt jedoch nicht den richtigen Befehl aus. Obwohl Befehle, welche direkt als Byte-Array vorliegen funktionieren. Kann es sein, dass in C eine andere Definition eines Float-Wertes vorliegt, sodass der Java-Float-Wert nicht der selbe ist, wie der im Atmega?
Wenn ja, wie?

Viele Grüße
jdajul
 
Da die Sprache C selbst hier keinen Standard vorgibt, ist das sehr gut möglich, neuere Systeme sollen sich aber an den IEEE 754-Standard halten.
C/C++ - Datentyp float


Evtl. wäre dir aber auch schon mit der Methode floatToIntBits() geholfen.
 
Ich habe mir das Ergebnis von floatToIntBits ausgeben lassen. Erwartet habe ich eine Folge von 0 und 1. Jedoch kommt eine normale Int-Variable raus. Wie kann ich das Ergebnis denn jetzt in ein 4-byte wandeln?
 
Hallo, sehe ich das also richtig, dass ich dann zuerst die Methode FloatToIntBits benutzen muss und die dann in Bytes wandeln muss? also so:
int a = Float.floatToIntBits(value);
ByteBuffer b = ByteBuffer.allocate(4);
byte[] result = b.array();

Vielen Dank schonmal.
 
Du hast das b.putInt(a) vergessen, aber sonst verstehe ich das genauso.
 
Oh ja genau! Das ist beim kopieren verloren gegangen... Nunja, dann habe ich das genauso gemacht, funktioniert aber leider noch nicht...
 
Geht es etwas genauer? Kommen die 4 Byte denn korrekt an? Wie wandelst du die 4 Byte wieder zurück in den float? BigEndian / LowEndian für beide Systeme korrekt?
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.421
590239
5
R
  • RalfKahl
Antworten
10
Aufrufe
301
RalfKahl
R
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
Zurück
Oben Unten