latitud, longitud extraída de datos de GPS en el compilador MPLAB XC8 [cerrado]

0

He interconectado el GPS S1315RL en PIC16LF1937 utilizando el compilador MPLABXC8 (MPLAB IDEv3.51).

Estoy intentando extraer la latitud, la longitud y el tiempo de la salida del GPS.

uint8_t * str="$ GPGGA, 123519,4807.038, N, 01131.000, E, 1,08,0.9,545.4, M, 46.9, M , * 47 \ n";

Tengo strtok () para eliminar el "," de la salida del GPS. Pero el compilador In c está funcionando bien. No puedo eliminar "," en el compilador MPLAB XC8.

Por lo tanto, si alguien sabe otros métodos, infórmeme.

    
pregunta user1811790

1 respuesta

0

Siempre puedes crear tu propia función strTok like y analizar la cadena manualmente:

uint8_t *findNextSeperator(uint8_t *startPoint) {
  while ((*startPoint != ',') && (*startPoint != '*') && (*startPoint != '\n'))
    startPoint++;
  return startPoint;
}

{
...
// dummy sample string...
uint8_t str[] = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47\n";

uint8_t *tmpPtr = str; // begin at the beginning

tmpPtr = findNextSeperator(tmpPtr); // the , before time
tmpPtr = findNextSeperator(tmpPtr+1); // the , before lat

uint8_t *latPtr = tmpPtr + 1; // the first character in the latitude string

tmpPtr = findNextSeperator(tmpPtr+1); // the , before N
*tmpPtr = 0; // null terminate the latitude string

uint8_t latDir = *(tmpPtr + 1); // store the direction of the latitude

tmpPtr = findNextSeperator(tmpPtr+1); // the , before lon
uint8_t *lonPtr = tmpPtr + 1; // the first character in the longitude

tmpPtr = findNextSeperator(tmpPtr+1); // the , before E
*tmpPtr = 0; // null terminate the longitude

uint8_t lonDir = *(tmpPtr + 1); // store the direction of the longitude
...
}
    
respondido por el Andrew

Lea otras preguntas en las etiquetas