概述
GPS输出分多种类型
- 该代码块对应GNGGA信息的获取、分离和提取。
#include <SoftwareSerial.h>
SoftwareSerial ss(4, 3);
// RX,TX
// 变量声明
String gngga = "";
// 读取到的GNGGA信息
String info[15];
// 用字符数组存储
int commaPosition = -1;
//函数声明
String getTime(); // 获取北京时间
String getLat(); // 获取纬度dd.mmssss
String getLng(); // 获取经度dd.mmssss
String getStatus(); // 获取当前定位状态,0=未定位,1 = 非差分定位,2=差分定位
void setup() {
Serial.begin(9600);
ss.begin(9600);
}
void loop() {
gngga = "";
while (ss.available() > 0) {
gngga += char(ss.read());
delay(10);
// 延时,不延时的话就会跳出while循环
}
if (gngga.length() > 0) {
//Serial.println(gngga);
//在这里进行数据的解析
for (int i = 0; i < 15; i++) {
commaPosition = gngga.indexOf(',');
if (commaPosition != -1)
{
//Serial.println(gngga.substring(0, commaPosition));
info[i] = gngga.substring(0, commaPosition);
gngga = gngga.substring(commaPosition + 1, gngga.length());
}
else {
if (gngga.length() > 0) {
// 最后一个会执行这个
info[i] = gngga.substring(0, commaPosition);
//Serial.println(gngga);
}
}
}
Serial.println("time: " + getTime());
Serial.println("lat: " + getLat());
Serial.println("lng: " + getLng());
Serial.println("status: " + getStatus());
}
}
String getTime(){
return info[1];
}
String getLat(){
return info[2];
}
String getLng(){
return info[4];
}
String getStatus(){
return info[6];
}
- 该代码块对应GPS信息的直接输出,不做处理
#include <SoftwareSerial.h>
// The serial connection to the GPS module
SoftwareSerial ss(4, 3);
// RX,TX
void setup(){
Serial.begin(9600);
ss.begin(9600);
}
void loop(){
if (ss.available() > 0){
// get the byte data from the GPS
byte gpsData = ss.read();
//read是剪切,所以不加延迟。加延迟反而会影响数据读取
Serial.write(gpsData);
}
}
- 该代码块直接使用tinygps库对GPS信息直接分离获取经纬度
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
TinyGPSPlus gps;
SoftwareSerial ss(4, 3);
float latitude;
float longitude;
void setup()
{
Serial.begin(9600); //set the baud rate of serial port to 9600;
ss.begin(9600); //set the GPS baud rate to 9600;
}
void loop()
{
while (ss.available() > 0)
{
gps.encode(ss.read()); //The encode() method encodes the string in the encoding format specified by encoding.
if (gps.location.isUpdated())
{
latitude = gps.location.lat(); //gps.location.lat() can export latitude
longitude = gps.location.lng();//gps.location.lng() can export latitude
Serial.print("Latitude=");
Serial.print(latitude, 6);
//Stable after the fifth position
Serial.print(" Longitude=");
Serial.println(longitude, 6);
delay(500);
}
}
}
注意:GPS模块记得在空旷处使用,避免输出中无位置信息。
最后
以上就是细腻宝贝为你收集整理的GPS模块——基于Arduino的全部内容,希望文章能够帮你解决GPS模块——基于Arduino所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复