Arduino UNO单片机解析农芯科技接收机发出的GPRMC格式报文的经度、纬度和前进速度的程序.
时间: 2023-06-27 22:05:09 浏览: 56
以下是解析GPRMC格式报文的Arduino代码:
```c++
#include <SoftwareSerial.h>
// 定义软串口接收器
SoftwareSerial gpsSerial(2, 3);
void setup() {
// 打开串口
Serial.begin(9600);
gpsSerial.begin(9600);
}
void loop() {
// 等待GPS模块发送数据
while (gpsSerial.available() > 0) {
// 读取GPS模块发送的数据
String gpsString = gpsSerial.readStringUntil('\n');
// 判断是否是GPRMC格式报文
if (gpsString.startsWith("$GPRMC")) {
// 将报文按逗号分隔成数组
String gpsArray[13];
int arrayIndex = 0;
int commaIndex = -1;
while (gpsString.indexOf(',', commaIndex + 1) != -1) {
int nextCommaIndex = gpsString.indexOf(',', commaIndex + 1);
gpsArray[arrayIndex] = gpsString.substring(commaIndex + 1, nextCommaIndex);
commaIndex = nextCommaIndex;
arrayIndex++;
}
gpsArray[arrayIndex] = gpsString.substring(commaIndex + 1);
// 获取经度、纬度和速度
float longitude = gpsArray[5].toFloat();
float latitude = gpsArray[3].toFloat();
float speed = gpsArray[7].toFloat();
// 输出经度、纬度和速度
Serial.print("Longitude: ");
Serial.println(longitude, 6);
Serial.print("Latitude: ");
Serial.println(latitude, 6);
Serial.print("Speed: ");
Serial.println(speed);
}
}
}
```
上述代码中,我们使用了SoftwareSerial库来创建一个软串口接收器,用于接收GPS模块发送的数据。在`setup()`函数中,我们分别打开串口和软串口,并设置波特率为9600。在`loop()`函数中,我们使用`gpsSerial.available()`函数来判断是否有数据发送过来。如果有数据发送过来,我们使用`gpsSerial.readStringUntil('\n')`函数来读取数据,并将其存储到一个字符串变量中。接着,我们使用`startsWith()`函数检查字符串是否以"$GPRMC"开头,来判断是否是GPRMC格式报文。如果是,我们使用`substring()`函数和逗号来将报文分隔成一个字符串数组,然后从中获取经度、纬度和速度。最后,我们使用`Serial.print()`和`Serial.println()`函数将这些值输出到串口监视器中。