2016-10-04 62 views
0

我试图通过使用软件串行库的Arduino通过无线模块发送我的机器人的位置。我发现它只能发送1个字节。我不能发送超过255号,我需要发送浮动到40000.我该怎么做?在Arduino上用串行软件发送3个浮点变量

这里是我的发射机的例子:

#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);}  
} 

我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);  
} 
} 

回答

0

你必须使用Serial.println(floatVal);以纯文本发送任何空格分隔,并通过Serial.parseFloat()方法接收它。

write是一个好方法发送的原始数据(单个字符,C-字符串或一些缓冲区)

如果你真的想在它的二进制形式发送花车,你必须把它作为一个缓冲:Serial.write((uint8_t*)&floatVal, sizeof(intVal));。而在接收端,你也必须读整个浮标。 read()方法只读取一个字符。