Stap 2: Code
#includegpsSentenceInfoStruct info;
char buff [256];
statische unsigned char getComma (unsigned char num, const char * str)
{
unsigned char i, j = 0;
int len=strlen(str);
voor (ik = 0; ik < len; ik ++)
{
Als (str [i] == ",")
j ++;
if(j == NUM)
Return ik + 1;
}
keren 0;
}
statische dubbele getDoubleNumber (const char * s)
{
char buf [10];
unsigned char i;
dubbele rev;
Ik = getComma (1, s);
ik = ik - 1;
strncpy (buf, s, i);
BUF [i] = 0;
Rev=Atof(BUF);
retourneren van rev;
}
statische dubbele getIntNumber (const char * s)
{
char buf [10];
unsigned char i;
dubbele rev;
Ik = getComma (1, s);
ik = ik - 1;
strncpy (buf, s, i);
BUF [i] = 0;
Rev=atoi(BUF);
retourneren van rev;
}
VOID parseGPGGA (const char * GPGGAstr)
{
/ * Verwijzen naar http://www.gpsinformation.org/dale/nmea.htm#GGA
-De proeven van gegevens: $GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 545.4, 0.9 M, 46.9, M,, * 47
* Waar:
* GGA Global Positioning System Fix gegevens
* 123519 fix genomen op 12:35:19 UTC
* 4807.038, N Latitude 48 deg 07.038' N
* 01131.000, E breedtegraad 11 deg 31.000' E
* 1 fix kwaliteit: 0 = ongeldig
* 1 = GPS-fix (SPS)
* 2 = DGPS fix
* 3 = PPS fix
* 4 = Real Time Kinematic
* 5 = float RTK
* 6 = geschatte (dead reckoning) (2.3 functie)
* 7 = handmatige invoer mode
* 8 = Simulatie mode
* 08 aantal satellieten worden bijgehouden
* 0.9 horizontale verdunning van positie
* 545.4, M hoogte, meter boven zeeniveau
* 46.9, M hoogte van geoide (zeeniveau) boven WGS84
* ellipsoïde
* (leeg veld) tijd in seconden sinds laatste DGPS bijwerken
* (leeg veld) DGPS station id-nummer
* * 47 de controlesom gegevens, begint altijd met *
*/
dubbele breedte;
dubbele lengte;
int tmp, uur, minuut, seconde, num;
Als (GPGGAstr [0] == '$')
{
tmp = getComma (1, GPGGAstr);
uur = (GPGGAstr [tmp + 0] - '0') * 10 + (GPGGAstr [tmp + 1] - '0');
Minute = (GPGGAstr [tmp + 2] - '0') * 10 + (GPGGAstr [tmp + 3] - '0');
tweede = (GPGGAstr [tmp + 4] - '0') * 10 + (GPGGAstr [tmp + 5] - '0');
sprintf (buff, "UTC timer 2d-% 2d-% 2d", uur, minuut, seconde);
Serial.println(buff);
tmp = getComma (2, GPGGAstr);
breedte = getDoubleNumber (& GPGGAstr[tmp]);
tmp = getComma (4, GPGGAstr);
lengte = getDoubleNumber (& GPGGAstr[tmp]);
sprintf (buff, "latitude % 10 .4f, lengte = %10.4f =", breedtegraad, lengtegraad);
Serial.println(buff);
tmp = getComma (7, GPGGAstr);
num = getIntNumber (& GPGGAstr[tmp]);
sprintf (buff, "satellieten nummer = %d", num);
Serial.println(buff);
}
anders
{
Serial.println ("geen gegevens ophalen");
}
}
VOID Setup {}
Zet uw setup-code hier, om het eenmalig uit te voeren:
Serial.begin(115200);
LGPS.powerOn();
Serial.println ("LGPS Power on, and waiting...");
delay(3000);
terwijl (!. LSMS.ready) {}
delay(1000);
}
}
void loop {}
Zet uw belangrijkste code hier, om het herhaaldelijk uitvoeren:
Serial.println ("LGPS-loop");
LGPS.getData(&info);
LSMS.beginSMS ("Voer nr.");
LSMS.print ((char*) info. GPGGA);
parseGPGGA ((const char*) info. GPGGA);
delay(2000);
LSMS.endSMS();
}