【发布时间】:2020-07-02 10:43:38
【问题描述】:
我有 XBEE S2C。我有 2 个 Arduino MEGA。其中一部分是接收器,另一部分是发射器。我沟通并配置了 XBee。我测试了它没关系。但问题是我无法发送像 longtitude= 38,45682469 latitude= 85,24698534 这样的浮点值。当我尝试这样做时,我只收到纬度 = 85 longtitude = 38。如何更改代码以接收健康数据。
发射器
#include "SoftwareSerial.h"
#include <TinyGPS.h>
float lat,lon;
TinyGPS gps;
SoftwareSerial XBee(10, 11);
void setup(){
Serial.begin(9600);
XBee.begin(9600);
Serial.println("The GPS Received Signal:");
Serial3.begin(9600);
}
void loop(){
while(Serial3.available()){
if(gps.encode(Serial3.read()))
{
gps.f_get_position(&lat,&lon);
Serial.print("Position: ");
Serial.print("Latitude: ");
Serial.print(lat,8);
Serial.print(",");
Serial.print("Longitude: ");
Serial.println(lon,8);
}
}
XBee.write("l");
XBee.write(lat);
delay(100);
XBee.write("k");
XBee.write(lon);
delay(100);
}
【问题讨论】:
-
您可以有几个十进制数字,浮点数在 +-180.xxx 范围内。但不是你想要的那么多,也不是通过 GPS 获得的。或许你看看 github.com/mikalhart/TinyGPSPlus ,它使用了一种特殊的数据类型来表示 lat 和 lon
-
目前,您只能通过 XBee 传输一个字节。将
XBee.write(lat);更改为XBee.print(lat);在接收端,您需要解析传入的文本。