tinygps not getting date??? !!!SOLVED!!!

Hi all, iv modified a BT359 bluetooth gps. iv managed to cut it in half, work out the power and tx pins. and attached to a sd shield. Its all working fine, gives the correct lat and long, time, altitude and everything else that is should but the date only appears as 2000?

heres my code

#include <SoftwareSerial.h>
#include <TinyGPS.h>

#define RXPIN 6
#define TXPIN 1

//Set this value equal to the baud rate of your GPS
#define GPSBAUD 38400

// Create an instance of the TinyGPS object
TinyGPS gps;
// Initialize the SoftwareSerial library to the pins you defined above
SoftwareSerial mySerial = SoftwareSerial (RXPIN, TXPIN);

// This is where you declare prototypes for the functions that will be 
// using the TinyGPS library.
void getgps(TinyGPS &gps);

// In the setup function, you need to initialize two serial ports; the 
// standard hardware serial port (Serial()) to communicate with your 
// terminal program an another serial port (NewSoftSerial()) for your 
// GPS.
void setup()
{
  // This is the serial rate for your terminal program. It must be this 
  // fast because we need to print everything before a new sentence 
  // comes in. If you slow it down, the messages might not be valid and 
  // you will likely get checksum errors.
  Serial.begin(115200);
  //Sets baud rate of your GPS
  mySerial.begin(GPSBAUD);
  
}

// This is the main loop of the code. All it does is check for data on 
// the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, 
// then jumps to the getgps() function.
void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      int c = mySerial.read();    // load the data into a variable...
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }
  }
}

void getgps(TinyGPS &gps)
{
  float latitude, longitude;
  gps.f_get_position(&latitude, &longitude);
  Serial.print("Lat/Long: "); 
  Serial.print(latitude,5); 
  Serial.print(", "); 
  Serial.println(longitude,5);
  
  //date and time
  int year;
  byte month, day, hour, minute, second, hundredths;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);
  // Print data and time
  Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/"); 
  Serial.print(day, DEC); Serial.print("/"); Serial.print(year);
  Serial.print("  Time: "); Serial.print(hour, DEC); Serial.print(":"); 
  Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); 
  Serial.print("."); Serial.println(hundredths, DEC);
  
  Serial.print("No. of Sats: ");Serial.println(gps.satellites());  
  Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude());  
  Serial.print("Course (degrees): "); Serial.println(gps.f_course()); 
  Serial.print("Speed(mph): "); Serial.println(gps.f_speed_mph());
  Serial.println();
  Serial.print("http://maps.google.com/maps?q="); Serial.print(latitude,8); Serial.print(",+");  Serial.println(longitude,8);
  Serial.println();
}

this is whats printed in the serial window

Lat/Long: 51.36834, -2.13551
Date: 0/0/2000  Time: 20:54:36.0
No. of Sats: 5
Altitude (meters): 46.10
Course (degrees): 1000.00
Speed(mph): -1.00

http://maps.google.com/maps?q=51.36833953,+-2.13550996

anyone know what im doing wrong???

thanks in advance
Rob

First thing I'd do is print, rather than decode, the GPS data. Make sure that the incoming data contains a date. It may not.

Hi, thanks for the reply, not sure what you mean by using print instead of decode? thought that is what im doing already lol. where abouts is it decoding it as it doesnt stand out to me? sorry for being a noob but new to this arduino lark, more used to Obj C

cheers spriggsy

Do only this in the loop(). Watch the serial monitor. It should output the raw data from the GPS.

void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      Serial.write(mySerial.read());    // send the data to the serial monitor
  }
}

Hi, thanks for the reply, not sure what you mean by using print instead of decode?

      int c = mySerial.read();    // load the data into a variable...

Read one character from the GPS.

      if(gps.encode(c))      // if there is a new valid sentence...

Add this character to the end of the string, and see if the string is complete. If so, parse the string to extract the data.

Add a Serial.print() statement, after the read(), to see what came in (and will be parsed).

thanks for getting back so quick

version 1

void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      int c = mySerial.read();    // load the data into a variable...     
     
      Serial.print(c);    
     
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }
  }
}

gives me this

367180717165444915448504849464848484453495050151494815255447844484850485646495051514487444944485444501515044154484654447744525646154447715044484844444436464949574436718071716544495215250481464648484844534950501514948152544478444848504856461535051155448744494448534452151177441544846544477445256465215077444448484444525748545148367180717165444952152504815446484848445349505015149481525444784448485048564615250511534487444944485444504650445248465344774452564652150774415048484449444244445350805550505136445248534444465036718071716544495248504818246484848445349505015149481524944784448485048561514950153534487444944485444501515044154484653447744525646154447744444848444444484953485042

version 2

void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      int c = mySerial.read();    // load the data into a variable...     
     
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        Serial.print(c);
        getgps(gps);         // then grab the data.
      }
  }
}

gives me this

13Lat/Long: 51.36850, -2.13534
Date: 0/0/2000  Time: 14:3:54.0
No. of Sats: 7
Altitude (meters): 36.00
Course (degrees): 1000.00
Speed(mph): -1.00

http://maps.google.com/maps?q=51.36849975,+-2.13533997

im guessing that the 13 at the very start is the value of c, and that this is the ammound of sentences?

on a side note, when i tried this example found on the playground

 /*

 Example code for connecting a Parallax GPS module to the Arduino

 Igor Gonz?lez Mart?n. 05-04-2007
 igor.gonzalez.martin@gmail.com

 English translation by djmatic 19-05-2007

 Listen for the $GPRMC string and extract the GPS location data from this.
 Display the result in the Arduino's serial monitor.

 */ 

 #include <string.h>
 #include <ctype.h>

 int ledPin = 13;                  // LED test pin
 int rxPin = 0;                    // RX PIN 
 int txPin = 1;                    // TX TX
 int byteGPS=-1;
 char linea[300] = "";
 char comandoGPR[7] = "$GPRMC";
 int cont=0;
 int bien=0;
 int conta=0;
 int indices[13];

 void setup() {
   pinMode(ledPin, OUTPUT);       // Initialize LED pin
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   Serial.begin(4800);
   for (int i=0;i<300;i++){       // Initialize a buffer for received data
     linea[i]=' ';
   }   
 }

 void loop() {
   digitalWrite(ledPin, HIGH);
   byteGPS=Serial.read();         // Read a byte of the serial port
   if (byteGPS == -1) {           // See if the port is empty yet
     delay(100); 
   } else {
     linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
     conta++;                      
     Serial.print(byteGPS, BYTE); 
     if (byteGPS==13){            // If the received byte is = to 13, end of transmission
       digitalWrite(ledPin, LOW); 
       cont=0;
       bien=0;
       for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
         if (linea[i]==comandoGPR[i-1]){
           bien++;
         }
       }
       if(bien==6){               // If yes, continue and process the data
         for (int i=0;i<300;i++){
           if (linea[i]==','){    // check for the position of the  "," separator
             indices[cont]=i;
             cont++;
           }
           if (linea[i]=='*'){    // ... and the "*"
             indices[12]=i;
             cont++;
           }
         }
         Serial.println("");      // ... and write to the serial port
         Serial.println("");
         Serial.println("---------------");
         for (int i=0;i<12;i++){
           switch(i){
             case 0 :Serial.print("Time in UTC (HhMmSs): ");break;
             case 1 :Serial.print("Status (A=OK,V=KO): ");break;
             case 2 :Serial.print("Latitude: ");break;
             case 3 :Serial.print("Direction (N/S): ");break;
             case 4 :Serial.print("Longitude: ");break;
             case 5 :Serial.print("Direction (E/W): ");break;
             case 6 :Serial.print("Velocity in knots: ");break;
             case 7 :Serial.print("Heading in degrees: ");break;
             case 8 :Serial.print("Date UTC (DdMmAa): ");break;
             case 9 :Serial.print("Magnetic degrees: ");break;
             case 10 :Serial.print("(E/W): ");break;
             case 11 :Serial.print("Mode: ");break;
             case 12 :Serial.print("Checksum: ");break;
           }
           for (int j=indices[i];j<(indices[i+1]-1);j++){
             Serial.print(linea[j+1]); 
           }
           Serial.println("");
         }
         Serial.println("---------------");
       }
       conta=0;                    // Reset the buffer
       for (int i=0;i<300;i++){    //  
         linea[i]=' ';             
       }                 
     }
   }
 }

it finds the date, however this is not using tinygps. not sure if this helps or if im barking up the wrong tree??

thanks

Change this
Serial.print(c);
to this
Serial.write(c);

The numbers you are seeing on the raw output are the ascii values for the characters because you used print(). If the parameter data type is not char, then it displays the ascii value.

The write() function should not do that conversion.

I never stick a print() statement by itself. I always print something before or after (or both) the thing I am printing.

If you were to print the character from the GPS and a space, perhaps what is being printed would make more sense.

The data being returned by mySerial.read() is an int. That is because the read() method needs some way to indicate an error condition (nothing was available to read). Since you are calling the read() method only after verifying that there is data to read, you could make the type of c char, instead of int. Then, the Serial.print() function would not be converting the character value to a string. It would, instead, print the character.

cheers all, everyday is a school day,

$GPG§A,1š2334—000–µ122—095œ,N,00208.˜296–W,1,06,2—5,3›.3,M–48.š,M,,0000•74
$GPG©A1918,,254R14050,0.6.415,
$GPG§A,1š2335Ž000–512™.095—,N,˜0208—1298,W,1–06,2.5,3›.2,¦,48.4,M,–0000ª74
…$GP£S,19,8,,..4
P31,027,,51,46*G,2,523,11418,
P,1523,128,,00FG,30A25089,,80,4™7.5–M,48—4,M–,000˜*71†$GP£S,,9,1,,...
P319027,12,,5,3AG,,7,,,9524111CGV3248245240,0*M4.,10N03W9.322$GPG£A,1š2346®000–512™.094š,N,˜0208—1315–W,1–06,2.5,3›.5,¦,48.š,M,–0000*70
…$GPGS,19,8,,.54
P1405.50.50253,3$GPG£A,1š2347.000–512™.094™,N,˜0208—1318–W,1–06,2.5,3›.4,¦,48.š,M,–0000*7A
…$GPGS,19,1,,..4
P1405.20.80,23,7$GP£GA,14241œ.00˜,512™.09›4,N,0020œ.128›,W,˜,06,˜.5,š3.2–M,48—4,M–,000˜*70†$GP£S,,9,15,...
P110,.40.70203,8$GPG£A,1š241œ.000–5122.097˜,N,˜0208—1290œW,1–06,™.5,4™.0,¦,48.”,M,–0000’70
…$GP£SA19,8,,..4
R1105.10.00263,0$GP£GA,1š242˜.000¬512™.09›9,N,˜0208—129™,W,1–06,™.5,42.9,¦,48—4,M,–000˜*79
$GP£S,,9,15,...
P,19,17,,2,,5,,8GV,194,25,21,37$S3,12,05,001,,M40010N22W51,5*$GPG£Á,142421—000–5122—096œ,N,00208.1292–W,1,06,2—5,4™.9,M–48.š,M,,0000•79
…$GPG©A1918,,254
R1105.,0.2.465,
$GPG‡A,1š242™®000–512™.096·,N,˜0208—1293,W,1–06,™.5,4™.7,¦,48.4,M,–000˜*7A
…$GP£S,19,8,,...
P1205.70.30,40,
$GP£GA,˜42423.00˜,51™².09›6,N–°020œ.129š,W,˜,06,2®5,š2.6–M,48—4,M–,0000*7C†$GPGS,,0,15,...
P,40,26089,,30,

im now getting the above, i can see that they are indeed NMEA sentences however there is a lot of garbage in there which is why its proberly not getting the date???

not sure why this doesnt work yet the other more unpleasant code does?

Very brave! I like this. I'm an experimenter also.

i all, iv modified a BT359 bluetooth gps. iv managed to cut it in half, work out the power and tx pins. and attached to a sd shield. Its all working fine, gives the correct lat and long, time, altitude and everything else that is should but the date only appears as 2000?

When you cut it in half, are you certain that the tx line voltage levels internally are capable of driving a 5v TTL input? Does the GPS have a solid ground connection to the Arduino?

Do you have access to an o-scope to check the input voltage to the Arduino? It may be just marginal by the looks of the output above.

i wouldnt say im brave lol...

to be honest iv now tried so many things that i cant remember what i have and havnt done. i think that ill go with the playground example and not use tinygps, as at least that was working. just doesnt look as nice. thanks for all your help so far though, i really appreciate it

spriggsy

I think the next thing to do is to start debugging the library. When it decides that the sentence is complete, print it's idea of the complete sentence.

When it parses the data, print each token. It should not take long to determine what the problem is.

All the garbage in there, though, concerns me.

ok i get what your saying there, but i have a few questions?

surely the libary works as otherwise others would have run into this as well???

how is it managing to get the correct time, lat and long, ammount of sats and all the other things if its getting just garbage?

ive just changed the voltage pin to 3.3 thinking that it was maybe being over powered. it still works but still has the garbage. so was thinking maybe iv fried part of it by putting 5v through it in the first place, but again that doesnt make sense seeing as its still getting the other info.

im going to try and have a look at the libaray, it prob wont much sesnse as trying to decipher other peoples coding is never easy, but thanks for the help so far

spriggsy

surely the libary works as otherwise others would have run into this as well???

One would think so, yes. However not too many people have obtained a GPS in the same way you did.

how is it managing to get the correct time, lat and long, ammount of sats and all the other things if its getting just garbage?

You pass each character read to the library. Perhaps it is doing some sanity checking, ignoring non-printing characters. I really don't know. That is what you are about to learn.

im going to try and have a look at the libaray, it prob wont much sesnse as trying to decipher other peoples coding is never easy

Mikal Hart's stuff is pretty easy to understand.

after going through the libaries i found out that it was not recieving everything, it wasnt getting GPRMC, after finding this forum topic

http://arduino.cc/forum/index.php/topic,91038.0/wap2.html

i found its to do with the buffer size being set to 64 in SoftwareSerial.h. after updating it to 128 its now all fixed and working perfectly.

thanks to everyone thats helped in coming to this conclusion, i hope it helps others in the future.

Spriggsy

I know this post is old but is same with my problem...

Course (degrees): 1000.00
Speed(mph): -1.00

I change the value in SoftwareSerial.h file

#define _SS_MAX_RX_BUFF 128 // RX buffer size for TinyGPS

but same problem... speed is -1.00 in any units
Any ideea?!

I know this post is old but is same with my problem...

What is old is having to tell people to post their code AND serial output. Prove you have a problem!

If I use the sketch above:

/*
  Example 17.2 "My First GPS"
 http://tronixstuff.com/tutorials > Chapter 17
 
 Based on code by Aaron Weiss of SparkFun Electronics; 
 http://bit.ly/99YnI6
 also based on code and libaries by arduiniana.org. 
 LCD Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net)
 and modified 25 July 2009 by David A. Mellis
 
 Thank you :)
 
 We are using the Sparkfun GPS shield and EM-406 GPS receiver module
 Make sure the switch on the GPS shield is set to UART
 
 */
// necessary libraries

//#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <LiquidCrystal.h>

 
// initialize the LiquidCrystal library with the numbers of the interface pins
// LiquidCrystal lcd(12, 11, 5, 4, 2, 3); //original
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //at niq_ro
// indic modul de legare, vezi mai jos:
/*                                    -------------------
                                      |  LCD  | Arduino |
                                      -------------------
 LCD RS pin to digital pin 7          |  RS   |   D7    |
 LCD Enable pin to digital pin 6      |  E    |   D8    |
 LCD D4 pin to digital pin 5          |  D4   |   D9    |
 LCD D5 pin to digital pin 4          |  D5   |   D10   |
 LCD D6 pin to digital pin 3          |  D6   |   D11   |
 LCD D7 pin to digital pin 2          |  D7   |   D12   |
 LCD R/W pin to ground                |  R/W  |   GND   |
                                      -------------------
niq_ro adapted this sketch for see data on 2004 LCD
*/

// Create an instance of the TinyGPS object
TinyGPS gps;
//SoftwareSerial nss(4, 3); 

 
// This is where you declare prototypes for the functions that will be 
// using the TinyGPS library.
void getgps(TinyGPS &gps);
 
void setup()
{
  Serial.begin(4800);
  // set up the LCD's number of rows and columns: 
  lcd.begin(20, 4);
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print("* My First GPS *");
  lcd.setCursor(3,1);
  lcd.print("tronixstuff.com");
  lcd.setCursor(1,2);
  lcd.print("adapted by niq_ro");
  lcd.setCursor(2,3);
  lcd.print("www.tehnic.go.ro");

  
  delay(5000);
  lcd.clear();
  lcd.setCursor(2,1);
  lcd.print("Waiting for lock");
}
 
// The getgps function will get and print the values we want.
void getgps(TinyGPS &gps)
{
  // Define the variables that will be used
  float latitude, longitude;
  // Then call this function
  gps.f_get_position(&latitude, &longitude);
  // clear LCD
  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Lat:"); 
  lcd.print(latitude,5); 
  lcd.write(0b11011111); // degree symbol
  lcd.setCursor(0,1); 
  lcd.print("Lng:"); 
  lcd.print(longitude,5);
  lcd.write(0b11011111); // degree symbol
  // Same goes for date and time
  int year;
  byte month, day, hour, minute, second, hundredths;
  gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
  // Print data and time
  lcd.setCursor(0,2);
  int ora = 3 + hour;
  if (ora ==24) ora=0;
  if (ora ==25) ora=1;
  if (ora ==26) ora=2;
  
  if (ora<10)
  {
    lcd.print(" ");
    lcd.print(ora);
  } 
  else if (ora>=10)
  {
    lcd.print(ora);
  }
  lcd.print(":");
  if (minute<10)
  {
    lcd.print("0");
    lcd.print(minute, DEC);
  } 
  else if (minute>=10)
  {
    lcd.print(minute, DEC);
  }
  lcd.print(":");
  if (second<10)
  {
    lcd.print("0");
    lcd.print(second, DEC);
  } 
  else if (second>=10)
  {
    lcd.print(second, DEC);
  }

/*  
  lcd.print(" ");
  lcd.print(day, DEC);
  lcd.print("/");
  lcd.print(month, DEC);
  lcd.print("/");
  lcd.print(year, DEC);
  
*/  
  // numar sateliti receptionati
 lcd.setCursor(10,2); // put cursor at colon 15 and row 2
 lcd.print(gps.satellites());
 if (gps.satellites() == 1) lcd.print(" satelit ");
 else lcd.print(" sateliti");
 
  
//  lcd.setCursor(0,3);
//  lcd.print(gps.f_altitude());
//  lcd.print("m ");
// altitudine
  lcd.setCursor(15,0); // put cursor at colon 16 and row 0
  lcd.print("alt:");
  int cota = gps.f_altitude();
  lcd.setCursor(14,1); // put cursor at colon 15 and row 1
// cota=5;
//cota=15;
//cota=497;
//cota=2056;
 if (cota>1000) lcd.print(cota);
 else
 if (cota>100) {lcd.print(" "); lcd.print(cota);}
 else
 if (cota>10) {lcd.print("  "); lcd.print(cota);}
 if (cota<10) {lcd.print("   "); lcd.print(cota);}
 lcd.print("m");  

//  lcd.print(gps.f_speed_kmph());
//  lcd.print("km/h");
// viteza
 lcd.setCursor(10,3); // put cursor at colon x and row y
 double viteza = gps.f_speed_kmph(); 
// tests
// double viteza = 0;
// double viteza = 5;
// double viteza = 14;
// double viteza = 104;
 if (viteza<0) lcd.setCursor(9,3);
 if (viteza>100.0) lcd.print(viteza);
 else
 if (viteza>10.0) {lcd.print(" "); lcd.print(viteza);}
 else 
 if (viteza<10.0) {lcd.print("  "); lcd.print(viteza);}
// lcd.print(viteza);
// lcd.print(gps.speed.kmph());
 lcd.print("km/h");
  
  /* You can also have course, but I couldn't fit it on the LCD
   lcd.print("Course (degrees): "); lcd.println(gps.f_course()); 
   */
}
 
void loop()
{
  byte a;
  if ( Serial.available() > 0 ) // if there is data coming into the serial line
  {
    a = Serial.read(); // get the byte of data
    if(gps.encode(a)) // if there is valid GPS data...
    {
      getgps(gps); // then grab the data and display it on the LCD
    }
  }
}
}

on my LCD speed is -1.00:

I try sketch from initial post:

#include <SoftwareSerial.h>
#include <TinyGPS.h>

#define RXPIN 4
#define TXPIN 3

//Set this value equal to the baud rate of your GPS
#define GPSBAUD 4800

// Create an instance of the TinyGPS object
TinyGPS gps;
// Initialize the SoftwareSerial library to the pins you defined above
SoftwareSerial mySerial = SoftwareSerial (RXPIN, TXPIN);

// This is where you declare prototypes for the functions that will be 
// using the TinyGPS library.
void getgps(TinyGPS &gps);

// In the setup function, you need to initialize two serial ports; the 
// standard hardware serial port (Serial()) to communicate with your 
// terminal program an another serial port (NewSoftSerial()) for your 
// GPS.
void setup()
{
  // This is the serial rate for your terminal program. It must be this 
  // fast because we need to print everything before a new sentence 
  // comes in. If you slow it down, the messages might not be valid and 
  // you will likely get checksum errors.
  Serial.begin(115200);
  //Sets baud rate of your GPS
  mySerial.begin(GPSBAUD);
  
}

// This is the main loop of the code. All it does is check for data on 
// the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, 
// then jumps to the getgps() function.
void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      int c = mySerial.read();    // load the data into a variable...
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }
  }
}

void getgps(TinyGPS &gps)
{
  float latitude, longitude;
  gps.f_get_position(&latitude, &longitude);
  Serial.print("Lat/Long: "); 
  Serial.print(latitude,5); 
  Serial.print(", "); 
  Serial.println(longitude,5);
  
  //date and time
  int year;
  byte month, day, hour, minute, second, hundredths;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);
  // Print data and time
  Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/"); 
  Serial.print(day, DEC); Serial.print("/"); Serial.print(year);
  Serial.print("  Time: "); Serial.print(hour, DEC); Serial.print(":"); 
  Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); 
  Serial.print("."); Serial.println(hundredths, DEC);
  
  Serial.print("No. of Sats: ");Serial.println(gps.satellites());  
  Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude());  
  Serial.print("Course (degrees): "); Serial.println(gps.f_course()); 
  Serial.print("Speed(mph): "); Serial.println(gps.f_speed_mph());
  Serial.println();
  Serial.print("http://maps.google.com/maps?q="); Serial.print(latitude,8); Serial.print(",+");  Serial.println(longitude,8);
  Serial.println();
}

but in serial monitor is same error:

I change in SerialSoftware.h lengh value for buffer, but nothing change...

//#define _SS_MAX_RX_BUFF 64 // RX buffer size
#define _SS_MAX_RX_BUFF 128 // RX buffer size

I try some sketches and finally I use a simple sketch for serial monitor, without a library and I see my olg GPS receiver send data in GPGCA and GPVTG format...

I look in TinyGPS library and it use GPCGA and GPRMS format...
=(

XD I solved the problem .. I used TinyGPS + + library and a sample there, where we used a custom item .... that example is found in the examples

before void setup()...

// for speed in kilometers per hour
TinyGPSCustom zdop(gps, "GPVTG", 7); // $GPVTG sentence, 7th element

in main loop()..

  // speed in km/h
  Serial.print(" ");
  Serial.print(zdop.value()); // is character string
  // change the character in integer number
  int vitesa1 = atoi (zdop.value());
  Serial.print("/");
  Serial.print(vitesa1);
  Serial.println();