Perdiendo bytes de suma de comprobación en el GPS

0

Estoy perdiendo los últimos bytes en la suma de comprobación en mi unidad gps que se encuentra aquí enlace . Si comento todas las líneas, excepto la línea 2, todos los bytes se reciben correctamente. ¿Hay alguna manera de terminar de recibir los bytes de suma de comprobación?

if (mySerial.available()) {
//      Serial.print((char)mySerial.read());
  char c1 = (char)mySerial.read();
  if (c1 == '$') {
    char a = (char)mySerial.read();
    delay(10);
    char b = (char)mySerial.read();
    delay(10);
    char c = (char)mySerial.read();
    delay(10);
    char d = (char)mySerial.read();
    delay(10);
    char e = (char)mySerial.read();
    delay(10);
//        Serial.print(a);
//         Serial.print(b);
//          Serial.print(c);
//           Serial.print(d);
//            Serial.print(e);
    if((a=='G') && (b=='P') && (c=='G') && (d=='G') && (e=='A')) {
//          Serial.println("Match");
    Serial.print(c1);
    Serial.print(a);
     Serial.print(b);
      Serial.print(c);
       Serial.print(d);
        Serial.print(e);
      for(int i = 0; i <= 69; i++) {

          into[i] = (char)mySerial.read();
//              delay(100);

      }
      for(int j = 0; j <= 69; j++) {
         Serial.print(into[j]); 
      }
      Serial.println("-");
    }
  }

}

    
pregunta dran

1 respuesta

4

Entre otros problemas, las oraciones de GPS NMEA normalmente no tienen una longitud fija, por ejemplo, la oración que publicó en un comentario con la suma de comprobación que falta es:

$GPGGA,001837.000,4228.2583,N,09042.0065,W,1,9,0.96,245.2,M,-34.0,,M083,N,

Si estuvieran a la vista 10 satélites en lugar de 9, se convertiría en:

$GPGGA,001837.000,4228.2583,N,09042.0065,W,1,10,0.96,245.2,M,-34.0,,M083,N,

Y lo mismo se aplicará cuando tu altitud sea más alta. Este no parece hacerlo, pero algunos receptores de GPS también eliminan los ceros finales en los números decimales, por lo que cualquier tipo de código que dependa de una longitud fija no será confiable ni portátil. También está asumiendo que el primer carácter recibido es '$', que normalmente es el caso, pero significa que su código no se recuperará ni siquiera por un breve error de comunicación.

Los retrasos tampoco deberían ser necesarios y, en el momento de imprimir los resultados, es probable que se eliminen los caracteres entrantes. Puede ser mejor que eche un vistazo y encuentre algunos códigos / proyectos existentes que analizan las oraciones de GPS para comenzar y examine cómo funcionan.

    
respondido por el PeterJ

Lea otras preguntas en las etiquetas