main.c
struct GGA_Data Get_GGA_Data(const char *texto){
	struct GGA_Data data;
	float tiempo, latitud, longitud, dilusion_h, altitud;
	char ns, ew;
	int lock, sats;
	char *buffer = strchr(texto, '$');
	char coords[256];
	if(sscanf(buffer, "$GNGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f", &tiempo, &latitud, &ns, &longitud, &ew, &lock, &sats, &dilusion_h, &altitud) >= 1) {
		if(!lock){
			latitud = 0.0;
			longitud = 0.0;
		}else{
			if(ns == 'S') {latitud  *= -1.0;}
            if(ew == 'W') {longitud *= -1.0;}
            float degrees = trunc(latitud / 100.0f);
            float minutes = latitud - (degrees * 100.0f);
            latitud = degrees + minutes / 60.0f;
            degrees = trunc(longitud / 100.0f);
            minutes = longitud - (degrees * 100.0f);
            longitud = degrees + minutes / 60.0f;
		}
	}
	data.tiempo = tiempo;
	data.latitud = latitud;
	data.longitud = longitud;
	data.lock = lock;
	data.sats = sats;
	data.dilusion_h = dilusion_h;
	data.altitud = altitud;

	return data;
}
//Extrae latitud, longitud y tiempo de una cadena GGA
Extrae latitud, longitud y tiempo de una cadena GGA
Extrae latitud longitud y tiempo de una cadena GGA
struct GGA_Data Get_GGA_Data(const char *texto){
	struct GGA_Data data;
	float tiempo, latitud, longitud, dilusion_h, altitud;
	char ns, ew;
	int lock, sats;
	char *buffer = strchr(texto, '$');
	char coords[256];
	if(sscanf(buffer, "$GNGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f", &tiempo, &latitud, &ns, &longitud, &ew, &lock, &sats, &dilusion_h, &altitud) >= 1) {
		if(!lock){
			latitud = 0.0;
			longitud = 0.0;
		}else{
			if(ns == 'S') {latitud  *= -1.0;}
            if(ew == 'W') {longitud *= -1.0;}
            float degrees = trunc(latitud / 100.0f);
            float minutes = latitud - (degrees * 100.0f);
            latitud = degrees + minutes / 60.0f;
            degrees = trunc(longitud / 100.0f);
            minutes = longitud - (degrees * 100.0f);
            longitud = degrees + minutes / 60.0f;
		}
	}
	data.tiempo = tiempo;
	data.latitud = latitud;
	data.longitud = longitud;
	data.lock = lock;
	data.sats = sats;
	data.dilusion_h = dilusion_h;
	data.altitud = altitud;
	return data;
}
struct GGA_Data Get_GGA_Data ( const char * texto ) { struct GGA_Data data ; float tiempo , latitud , longitud , dilusion_h , altitud ; char ns , ew ; int lock , sats ; char * buffer = strchr ( texto , ' ' ) ; char coords [ 256 ] ; if ( sscanf ( buffer , " " , & tiempo , & latitud , & ns , & longitud , & ew , & lock , & sats , & dilusion_h , & altitud ) >= 1 ) { if ( ! lock ) { latitud = 0.0 ; longitud = 0.0 ; } else { if ( ns == ' ' ) { latitud *= -1.0 ; } if ( ew == ' ' ) { longitud *= -1.0 ; } float degrees = trunc ( latitud / 100.0f ) ; float minutes = latitud - ( degrees * 100.0f ) ; latitud = degrees + minutes / 60.0f ; degrees = trunc ( longitud / 100.0f ) ; minutes = longitud - ( degrees * 100.0f ) ; longitud = degrees + minutes / 60.0f ; } } data . tiempo = tiempo ; data . latitud = latitud ; data . longitud = longitud ; data . lock = lock ; data . sats = sats ; data . dilusion_h = dilusion_h ; data . altitud = altitud ; return data ; }
Extrae latitud, longitud y tiempo de una cadena GGA
Extrae latitud longitud y tiempo de una cadena GGA