Arduino Forum

Forum 2005-2010 (read only) => Software => Interfacing => Topic started by: xsixteen on Jan 19, 2011, 08:40 pm

Title: GPS Logging not producing right format.
Post by: xsixteen on Jan 19, 2011, 08:40 pm
Hello,

I recently began a small project to both display the latitude and longitude on a LCD screen and log the GPS data.

The problem I am encountering is when I record the data to the SD card the data is not formatted correctly. Tools like GPS visualizer require that each GPS data sentence be on its own line.

My code is based on ladada gps shield GPS test parsing sketch.

Here is my code snippets.
Quote

void loop()

  uint32_t tmp;
int intpart;
  
  Serial.print("\n\rread: ");
readline();

//buffer =  mySerial.read();
  // check if $GPRMC (global positioning fixed data)
  //check to see if we have any message... then process.
  
 
 

   
  //This section is used for parsing and interpretation.
  
  if (strncmp(buffer, "$GPRMC",6) == 0) {
     


Quote

if(card.write_file(f, (uint8_t *) buffer,buffidx) != buffidx) {
         putstring_nl("can't write!");
  }
  
    
}


Quote

void readline(void) {
  char c;
  
  buffidx = 0; // start at begninning
  while (1) {
      c=mySerial.read();
      if (c == -1)
        continue;
      Serial.print(c);
      //if (c == '\n')
       // continue;
    //  buffer[buffidx+1] = 0 ;
      if ((buffidx == BUFFSIZ-1) || (c == '\r') || (c == '\n')) {
        buffer[buffidx]='\r';
        buffer[buffidx+1] = '\n';
        buffer[buffidx+2] = 0;
        return;
      }
      buffer[buffidx++]= c;
  }
}



What I am currently getting as output:
Quote
$GPRMC,02454240.7638,N,08312.6058,W,0.29,305.19,190111,,*14$GPRMC,024327.000,A,4240.7641,N,08312.6109,W,0.21,267.70,190111,,*1F$GPRMC,024328.000,A,4240.7628,N,08312.6135,W,0.26,254.60,190111,,*16$GPRMC,024329.000,A,4240.7618,N,08312.6154,W,0.27,249.66,190111,,*18$GPRMC,024330.000,A,4240.7620,N,08312.6153,W,0.10,285.42,190111,,*1E$GPRMC,024332.000,A,4240.7632,N,08312.6146,W,


What I should be getting:
Quote
$GPRMC,041918.000,A,4240.7654,N,08312.5918,W,0.65,104.70,180111,,*12
$GPRMC,041919.000,A,4240.7669,N,08312.5982,W,0.38,134.59,180111,,*1E
$GPRMC,041920.000,A,4240.7673,N,08312.6029,W,0.44,139.75,180111,,*1C

Any suggestions would be very helpful!
Title: Re: GPS Logging not producing right format.
Post by: PaulS on Jan 19, 2011, 08:48 pm
This code:
Code: [Select]
     if ((buffidx == BUFFSIZ-1) || (c == '\r') || (c == '\n')) {
strips the carriage return/line feed characters from the incoming data.

This code:
Code: [Select]
if(card.write_file(f, (uint8_t *) buffer,buffidx) != buffidx)
assumes that the carriage return/line feed characters are there.

Simple enough fix...
Title: Re: GPS Logging not producing right format.
Post by: xsixteen on Jan 19, 2011, 09:01 pm
I see what you mean! Thank you, I have been pouring over this for a while and missed that detail..