Bluetooth-Kommunikation Float als Byte-Werte senden

  • 7 Antworten
  • Neuester Beitrag
Diskutiere Bluetooth-Kommunikation Float als Byte-Werte senden im Android App Entwicklung im Bereich Betriebssysteme & Apps.
J

jdajul

Ambitioniertes Mitglied
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
 
Thyrion

Thyrion

Ehrenmitglied
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.
 
J

jdajul

Ambitioniertes Mitglied
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?
 
J

jdajul

Ambitioniertes Mitglied
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.
 
Thyrion

Thyrion

Ehrenmitglied
Du hast das b.putInt(a) vergessen, aber sonst verstehe ich das genauso.
 
J

jdajul

Ambitioniertes Mitglied
Oh ja genau! Das ist beim kopieren verloren gegangen... Nunja, dann habe ich das genauso gemacht, funktioniert aber leider noch nicht...
 
Thyrion

Thyrion

Ehrenmitglied
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 - Bluetooth-Kommunikation Float als Byte-Werte senden Antworten Datum
1