Thanks to all, I have solved the problem, I just replace the function logfile.close() with logfile.flush()
I post the code if anyone likes to use it
#include <SD.h>
#include <SoftwareSerial.h>
SoftwareSerial gpsSerial(6, 5); // RX, TX (TX not used)
const int sentenceSize = 80;
char sentence[sentenceSize];
#define LOG_INTERVAL 100
const int chipSelect = 10;
File logfile;
long idd = 0;
long ids = 0;
long idm = 0;
long idh = 0;
void error(char *str)
{
Serial.print("error: ");
Serial.println(str);
while(1);
}
void setup()
{
Serial.begin(9600);
gpsSerial.begin(9600);
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card Failed or not present");
return;
}
Serial.println("card initialized.");
// create a new file
char filename[] = "LOGGER00.CSV";
for (uint8_t i = 0; i < 100; i++) {
filename[6] = i/10 + '0';
filename[7] = i%10 + '0';
if (! SD.exists(filename)) {
// only open a new file if it doesn't exist
logfile = SD.open(filename, FILE_WRITE);
break; // leave the loop!
}
}
if (! logfile) {
error("couldnt create file");
}
Serial.print("Logging to: ");
Serial.println(filename);
}
void loop()
{
static int i = 0;
if (gpsSerial.available())
{
char ch = gpsSerial.read();
if (ch != '\n' && i < sentenceSize)
{
sentence[i] = ch;
i++;
}
else
{
sentence[i] = '\0';
i = 0;
char field[20];
getField(field, 0);
if (strcmp(field, "$GPRMC") == 0)
{
Serial.print("Tiempo: ");
getField(field, 1);
Serial.print(field);
logfile.print(field);
logfile.print("\t");
Serial.print("Lat: ");
getField(field, 3); // number
Serial.print(field);
logfile.print(field);
logfile.print("\t");
getField(field, 4); // N/S
Serial.print(field);
logfile.print(field);
logfile.print("\t");
Serial.print("Long: ");
getField(field, 5); // number
Serial.print(field);
logfile.print(field);
logfile.print("\t");
getField(field, 6); // E/W
Serial.print(field);
logfile.print(field);
logfile.print("\t");
Serial.print("Velocidad: ");
getField(field, 7);
Serial.println(field) * 1.854;
logfile.println(field);
logfile.flush();
}
}
}
}
void getField(char* buffer, int index)
{
int sentencePos = 0;
int fieldPos = 0;
int commaCount = 0;
while (sentencePos < sentenceSize)
{
if (sentence[sentencePos] == ',')
{
commaCount ++;
sentencePos ++;
}
if (commaCount == index)
{
buffer[fieldPos] = sentence[sentencePos];
fieldPos ++;
}
sentencePos ++;
}
buffer[fieldPos] = '\0';
}
Now does anyone know how to configure the venus gps in 10hz with the gps viewer?