2016-10-04 2 views
0

Ich versuche, die Position meines Roboters über das Wireless-Modul mit Arduino mithilfe der Software Serial Library zu senden. Ich habe festgestellt, dass es nur 1 Byte zur Zeit senden kann. Ich kann nicht mehr als 255 senden und ich muss Floats bis 40000 senden. Wie kann ich das machen? HierSenden von 3 Float-Variablen mit serieller Software auf Arduino

ist ein Beispiel für meine Sender:

#include <SoftwareSerial.h> 
SoftwareSerial mySerial(10, 11); // RX, TX 

void setup() 
{ 
// Open serial communications and wait for port to open: 
Serial.begin(9600); 
mySerial.begin(9600); 
} 

void loop() // run over and over  
{  
    float i=40000; 
mySerial.write(i); 
    //Serial.println(i);}  
} 

mein reciever

#include <SoftwareSerial.h> 
SoftwareSerial mySerial(10,11); // RX, TX 
int i=0; 
void setup() 
{ 
// Open serial communications and wait for port to open: 
Serial.begin(9600); 
mySerial.begin(9600);  
} 

void loop() { 
if(mySerial.available()){ 
    i=mySerial.read(); 
Serial.println(i);  
} 
} 

Antwort

0

Sie haben Serial.println(floatVal); zu verwenden, um es mit jedem weißen Raum Separator im Klartext zu senden und es von Serial.parseFloat() Verfahren erhalten .

Die write Methode zum Senden von Rohdaten gut (einzelnes Zeichen, c-string oder ein Puffer)

Wenn Sie wirklich schwimmt in seiner binären Form möchten senden, haben Sie es als Puffer weitergeben müssen: Serial.write((uint8_t*)&floatVal, sizeof(intVal));. Und auf der Empfängerseite muss man auch den ganzen Float lesen. Die read() Methode liest nur ein Zeichen.