Bluetooth-Module Datenübertragung

OP (Firma: HTL) #3381597
Lesenswert?

Hi,

ich versuche zurzeit Daten (brauche nur float) zwischen zwei Arduinos 
hin und her zu schicken.
Das ganze soll mit Hilfe von 2 Bluetooth-Modulen 
(https://www.sparkfun.com/products/10393) realisiert werden.
Die beiden Module verbinden sich bei anlegen einer Spannung bereits 
automatisch und es können auch Daten verschickt werden.

Das Problem ist, dass nur Werte zwischen 0-255 (1 Byte) gesendet werden 
und höherwertige einfach auf diesen Bereich zugeschnitten werden.
Bei Senden eines Strings wird jeder Buchstabe einzeln verschickt.

Kann mir jemand bitte einen Tipp geben, wie ich float-Werte von 
0.-1024.0 verschicken kann und das richtige Ergebnis am Empfänger-Modul 
ankommt?

Freundliche Grüße
Gertrud
Persönliche Seite #3381608
Lesenswert?

gertrud hiller schrieb:
> Das Problem ist, dass nur Werte zwischen 0-255 (1 Byte) gesendet werden
> und höherwertige einfach auf diesen Bereich zugeschnitten werden.
> Bei Senden eines Strings wird jeder Buchstabe einzeln verschickt.

Das ist kein Problem sondern Absicht. Serielle Kommunikation (auch wenn 
du da nen BT Modul zwischen hast) ist nun nun mal Zeichen Basiert.

Deinen Float must zu zerlegen als String senden und wieder 
zusammenbauen.
Schau die die "dtostre" und "dtostrf" Funktion an.
#3381662
Lesenswert?

Hallo, das geht ganz einfach, in dem man einen Pointer auf den anfang 
der Adresse der Floatzahl zeigen lässt. diese ist ja 4 Byte lang.

Das geht folgender Maßen:

float Zahl=32.5;
char *zahlPointer= (char*)&Zahl;
char floatgroese= sizeof(float);

for(i=0; i < sizeof(float); i++)
{
 sendepuffer[i]=*zahlPointer;
 zahlPointer++;
}

So schreibt man die 4  Bytes in einen Buffer


Um die 4 Bytes wieder auf der Empfangsseite zusammenzusetzen geht man 
ähnlich vor


float empfangsZahl;
char *zahlPointerempfangsZahl= (char*)&empfangsZahl;

for(i=0; i<sizeof(float);i++)
{
 *zahlPointerempfangsZahl=empfangspuffer[i];
zahlPointerempfangsZahl++;
}

so werden die 4 Bytes in die Variable empfangsZahl geschoben

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren