Paso 2: código
#includeinformación de gpsSentenceInfoStruct;
buff de Char [256];
getComma estático char sin signo (unsigned char num, const char * str)
{
unsigned char i, j = 0;
int len=strlen(str);
para (i = 0; i < len; i ++)
{
Si (str [i] == ',')
j ++;
if(j == NUM)
volver i + 1;
}
return 0;
}
estática getDoubleNumber doble (const char * s)
{
char buf [10];
unsigned char i;
rev doble;
i = getComma (1, s);
i = i - 1;
strncpy (buf, s, i);
buf [i] = 0;
Rev=atof(BUF);
volver rev;
}
estática getIntNumber doble (const char * s)
{
char buf [10];
unsigned char i;
rev doble;
i = getComma (1, s);
i = i - 1;
strncpy (buf, s, i);
buf [i] = 0;
Rev=atoi(BUF);
volver rev;
}
void parseGPGGA (const char * GPGGAstr)
{
/ * Se refieren a http://www.gpsinformation.org/dale/nmea.htm#GGA
* Datos de la muestra: $GPGGA, 123519, 4807.038, N, 01131.000, E, 545.4, 0.9, 1, 08 M, 46.9, M,, * 47
* Donde:
* Sistema de posicionamiento Global GGA fijar datos
* 123519 fix en 12:35:19 UTC
* 4807.038, N latitud 48 grados 07.038' N
* 01131.000, E longitud 11 grados 31,000' E
* 1 calidad fix: 0 = no válido
* 1 = fix GPS (SPS)
* 2 = corrección DGPS
* 3 = PPS fix
* 4 = cinemático en tiempo Real
* 5 = flotador RTK
* 6 = Estimado (dead reckoning) (artículo 2.3)
* 7 = modo de entrada manual
* 8 = Modo simulación
* 08 número de seguimiento de satélites
* 0,9 dilución horizontal de posición
* 545.4, M de altitud, metros, sobre el nivel medio del mar
* 46,9, M altura del geoid (nivel del mar malo) sobre WGS84
* Elipsoide
* (tiempo campo vacío) en segundos desde DGPS última actualización
* (número de identificación de la estación DGPS campo vacio)
* * 47 los datos de suma de comprobación, siempre empieza con *
*/
latitud doble;
longitud doble;
int tmp, hora, minuto, segundo, num;
Si (GPGGAstr [0] == '$')
{
tmp = getComma (1, GPGGAstr);
hora = (GPGGAstr [tmp + 0] - '0') * 10 + (GPGGAstr [tmp + 1] - '0');
minutos = (GPGGAstr [tmp + 2] - '0') * 10 + (GPGGAstr [tmp + 3] - '0');
en segundo lugar = (GPGGAstr [tmp + 4] - '0') * 10 + (GPGGAstr [tmp + 5] - '0');
sprintf (buff, "UTC temporizador % 2d-2d-% 2d", hora, minuto, segundo);
Serial.println(Buff);
tmp = getComma (2, GPGGAstr);
latitud = getDoubleNumber (& GPGGAstr[tmp]);
tmp = getComma (4, GPGGAstr);
longitud = getDoubleNumber (& GPGGAstr[tmp]);
sprintf (buff, "latitude = % .4f 10, longitud = %10.4f", latitud, longitud);
Serial.println(Buff);
tmp = getComma (7, GPGGAstr);
Num = getIntNumber (& GPGGAstr[tmp]);
sprintf (buff, "número de satélites = %d", num);
Serial.println(Buff);
}
otra cosa
{
Serial.println ("no obtener datos");
}
}
void setup() {}
Pon tu código de instalación, para ejecutar una vez:
Serial.Begin(115200);
LGPS.powerOn();
Serial.println ("LGPS encendido y esperando...");
Delay(3000);
mientras (!. LSMS.ready) {}
Delay(1000);
}
}
void loop() {}
Pon tu código principal, para ejecutar varias veces:
Serial.println ("LGPS bucle");
LGPS.getData(&info);
LSMS.beginSMS ("ingresar número");
LSMS.print ((char*) información. GPGGA);
parseGPGGA ((const char*) información. GPGGA);
Delay(2000);
LSMS.endSMS();
}