Hallochen.
Ich mal wieder mit nem Punkt, an dem ich nicht so richtig weiter komme:
Der Monstertruck hat eine SD-Karte.
Auf der gibts ein Verzeichnis/routen und darin später eine unbekannte Anzahl Dateien:
-route1.txt
-route2.txt
und so weiter.
Normale Textdateien, die jede eine GPS-Route enthalten...
Da ich Länge und Breite sowieso als Long`s brauche, ist es simpel, die Datei sieht momentan innen so aus:
Routenname
1,5076654,1374625
2,5076645,137468// und so weiter
ein Wegpunkt pro Zeile, die erste Zahl ist eine fortlaufende Nummer (dmit ich später weiss, an welchem Wegpunkt grad gearbeitet wird, so bin ich in der Anzahl flexibel, die zweite Zahl ist Länge, die dritte Breite.
Das einlesen klappt auch, und zwar mache ich das so:
#include <SD.h>
const int chipSelect = 53;
void setup()
{
Serial.begin(9600);
if (!SD.begin(53)) {
Serial.println("Laden misslungen!");
return;
}
Serial.println("Lade Route...");
File myFile = SD.open("routen/route1.gps");
if (myFile)
{
Serial.println("route1.gps");
while (myFile.available()) {
int wp = myFile.parseInt();
long lat = myFile.parseInt();
long lon = myFile.parseInt();
Serial.print("Wegpunkt: ");
Serial.print(wp);
Serial.print(" Breite: ");
Serial.print(lat);
Serial.print(" Laenge: ");
Serial.println(lon);
}// close the file:
myFile.close();
}
else
{
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop()
In der Konsole sieht das dann so aus:
Lade Route...
route1.gps
Wegpunkt: 1 Breite: 5076654 Laenge: 1374625
Wegpunkt: 2 Breite: 5076645 Laenge: 137468
Wegpunkt: 3 Breite: 507663 Laenge: 1374674
Wegpunkt: 4 Breite: 507664 Laenge: 1374615
Wegpunkt: 0 Breite: 0 Laenge: 0
Nun hab ich da zwei Problemchen:
-erstens: die letzte Zeile: Wegpunkt 0 steht gar nich in der Datei-woher kommt die und wie kann ich das unterdrücken?
Zweitens: da ich später mehr als eine Route auf der Karte ablegen will, muss ich auch den "Header" (oben: Routenname) mal einlesen und als Klartext ausgeben können, um die richtige Route wählen zu können. Routenname soll aus maximal 16 Zeichen bestehen, damit er später aufs Display passt...
Wie mach ich das?