我是arduino的新手,并尝试使用arduino使用neo 6m模块提取gps坐标,但是循环一直运行到无穷大。您能帮我为什么它没有破裂吗?
void gpsEvent()
{
gpsString = "";
while (1)
{
while (gps.available() > 0) //Serial incoming data from GPS
{
char inChar = (char)gps.read();
gpsString += inChar;//store incoming data from GPS to temparary string str[]
i++;
// Serial.print(inChar);
if (i < 7)
{
if (gpsString[i-1] != test[i-1]) //check for right string
{
i = 0;
gpsString = "";
}
}
if (inChar == '\r')
{
if (i > 60)
{
gps_status = 1;
break;
}
else
{
i = 0;
}
}
}
if (gps_status)
break;
}
}
void get_gps()
{
gps_status = 0;
int x = 0;
while (gps_status == 0)
{
gpsEvent();
int str_lenth = i;
coordinate2dec();
i = 0;
x = 0;
str_lenth = 0;
}
}
我在void setup()循环中调用了get_gps();
来初始化系统,但是用于从数据中提取正确字符串的gpsEvent函数一直在运行,直到您可以无限寻求帮助为止。该代码的引用来自https://circuitdigest.com/microcontroller-projects/arduino-based-accident-alert-system-using-gps-gsm-accelerometer
但是我自己所做的更改很少,但gps模块的编程却没有。
答案 0 :(得分:0)
我认为错误之一是gpsString += inChar;
。
这不是Python。您正在将字符值添加到字符串指针。
您应该创建一个最大长度的缓冲区,插入一个字符并检查缓冲区溢出。
似乎还没有定义i
。在C语言中,在执行操作时使用全局变量是非常不好的做法。在函数中保留一个i
。再次检查字符串长度。
通常,您似乎使用的是一种您不太了解的语言来编写简单的程序(字符串操作是C语言的基础)。学习更好的C语言,或者寻找gps库的python实现(或只是链接)。