création fichier txt gps

Bonjour, je suis occupé de créer un traceur gps qui stock les données (temps date long lat vitesse) sur une carte sd mais je ne sais pas comment créer ce fichier.
A la fin je voudrais savoir lire le fichier avec une application pour pouvoir afficher les points sur une carte.

Je sais déjà récupérer les donnés et les stocker mais je ne sais pas à quoi doit ressembler les lignes du fichier et si la vitesse doit être dans un fichier à part ou pas.

Merci d'avance. Wolfvic

Salut,

Je te conseil d'utiliser un fichier de type csv, ces fichiers sont lisibles par Excel (ou équivalent) et te permettra de travailler dessus plus facilement.

Pour creer un fichier sur une carte SD il faut utiliser la fonction SD.open();

Petit exemple :

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  if (SD.exists("example.csv")) {
    SD.remove("example.csv");
    myFile = SD.open("example.csv", FILE_WRITE);
    myFile.close();
  } else {
    myFile = SD.open("example.csv", FILE_WRITE);
    myFile.close();
  }
}

void loop() {
  // nothing happens after setup finishes.
}

void writeline(int Data[]) {
  myFile = SD.open("example.csv", FILE_WRITE);
  for (int i=0; i <= sizeof(Data) - 1; i++) {
    myFile.print(String(Data[i]));
    myFile.print(";");
  }
  myFile.println("");
  myFile.close();
}

Il est à noté que je ne vérifie pas si la carte SD est présente...

Un fichier csv est un fichier composé de la manière suivante :

texte;texte;texte;texte
texte;texte
texte;texte;texte

Les points virgules sépares les colonne tandis un retour à la ligne créer une nouvelle ligne.

La forme du fichier dépend du créateur...

Ce que je ferais :
position;vitesse
position;vitesse
...
etc etc

Bonjour,

Je développe moi-même une telle application avec en plus un affichage sur écran OLED 128 x 64.

Le type de fichier le plus approprié pour pouvoir être visualisé avec des logiciel de visualisation de carte est le format *.gpx. C'est un format de type *.xml avec les balises qui vont bien. C'est assez lourding à digérer au début.

Vous trouverez ci-après des morceaux de code que j'ai écrit pour enregistrer un parcours.

On ouvre le fichier :

Nota : le format de la date est par exemple : 2016-06-18T14:51:39Z (notez les caractères T et Z)

File F = SD.open(nomTrace + ".gpx", FILE_WRITE); // Ouverture du fichier en écriture

void introGPX(File F, String date) {

  F.println(F("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><gpx xmlns=\"http://www.topografix.com/GPX/1/1\" creator=\"GPS ChP\" version=\"1.1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\"><metadata><time>"));
  F.print(date);
  F.print(F("</time></metadata><trk><name>"));
  F.print(F("Tracé"));
  F.println(F("</name><trkseg>"));
}

puis, à chaque fois qu'une donnée est disponible (ou qu'on a envie de l'enregistrer) :

void trkGPX(File F, float lat, float lon, float alt, String date) {
  F.print(F("<trkpt lat=\""));
  F.print(String(lat, 6));
  F.print(F("\" lon=\""));
  F.print(String(lon, 6));
  F.print(F("\"><ele>"));
  F.print(String(alt, 1));
  F.print(F("</ele><time>"));
  F.print(date);
  F.println(F("</time></trkpt>"));
}

lorsqu'on veut finir l'enregistrement :

void finGPX(File F) {
  F.println(F("</trkseg></trk></gpx>"));
  F.close();
}

Nota : j'ai regardé plusieurs type de fichier *.gpx, je n'y ai jamais touvé la vitesse. Elle doit être recalculée par les applications qui les utilisent.

Cordialement.

Pierre

Bonjour,

Des infos sur le format GPX.