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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.