SD.open generierter Text

Moin,

ich will eine Textfile in meinem Programm selbst generieren aus dem Datum und der Uhrzeit. Ich kann mit einem Voreingestellten Namen die .csv Datei generieren. Doch wenn ich das mit dem selbst erzeugten Namen mache, klappt das nicht. Hier einmal die Funktionen:

boolean initialsSD(){
  if(!SD.begin(53)){
    Serial.println(F("Initial SD Card failed!"));
    Serial.flush();
    return false;
  }else{
    Serial.println(F("Initial SD Card successful!"));
    Serial.flush();
    return true;
  }
}
boolean initalFile(){
  char endoffile[5]=".csv";
  strcpy(Filename,Timevar);
  strcat(Filename,endoffile);
  Serial.println(Filename);
  Serial.flush();
  CSVFile=SD.open(Filename, FILE_WRITE);

  if(CSVFile){
    CSVFile.print("Lfd. Nummer,");
    CSVFile.print("System Mode,");
    CSVFile.print("Cell ID,");
    CSVFile.print("RSSI,");
    CSVFile.print("RSRP,");
    CSVFile.print("RSRQ,");
    CSVFile.print("SNR,");
    CSVFile.print("Latitude,");
    CSVFile.print("Longitude,");
    CSVFile.print("Date,");
    CSVFile.print("Time,");
    CSVFile.print("Altitude,");
    CSVFile.print("Speed,");
    CSVFile.print("Course,");
    CSVFile.println("Timestamp;");
    CSVFile.close();
    Serial.println(F("inital file successful"));
    Serial.flush();
    return(true);
  }else{
    Serial.println(F("inital file failed"));
    Serial.flush();
    return(false);
  }
}

Wenn ich das ganze durchlaufen lasse also so:

if(initialsSD()){
    initalFile();
  }

Dann bekomme ich folgende Ausgabe:

10:38:48.123 -> 20220223-1038
10:38:48.123 -> Time set ok
10:38:48.167 -> Initial SD Card successful!
10:38:48.167 -> 20220223-1038.csv
10:38:48.214 -> inital file failed

Wenn ich aber den Filename vorher zu "test.csv" einstelle und die strcpy und strcat Funktionen bei initalFile() dann klappt das ganze mit folgender Ausgabe:

10:42:28.721 -> 20220223-1042
10:42:28.721 -> Time set ok
10:42:28.769 -> Initial SD Card successful!
10:42:28.769 -> test.csv
10:42:28.853 -> inital file successful

Ich habe zudem probiert "20220223-1038.csv" vor einzustellen, doch da klappt das ganze auch nicht. Ist möglicherweise der Dateiname nicht möglich?

Danke schon mal im Voraus

Ich habe es inzwischen selbst herausgefunden. FAT32 nutzt das 8.3 System. Kurz gesagt, max. 8 Zeichen für den Dateinamen.

Ich werde einfach einen Ordner für jeden Tag erstellen und dann hat jede Datei einen Zeit Namen.

Hallo,

Das hängt davon ab was Du auswerten willst, so bekommst Du dann doch nur eine Datenreihe in die Datei, oder hab ich was übersehen.

einen Ordner für jedes Jahr und der Dateinahme monat,tag,stunde,min
(02221035.csv) wäre auch noch eine Option. Das hängt davon ab was Du wie in der Tabelle dann zusammenfassen und auswerten willst. Ich nutze einen Dateinamen aus JahrMonatTag und hab dann die Daten zeilenweise für den Monat in der Tabelle. Damit habe ich dann alle Daten für jeden Monat in einer Tabelle.
Heinz

Ich lasse mir den Namen nur einmal generieren. Das wird ein Datenlogger mit dem ich die Netzwerkverbindung testen kann. Ich will dass mir das Gerät zu beginn den Pfad+Datei erzeugt und dann auch da drin bleibt. Den Logger kann ich dann z.B. im Auto oder der Bahn mit nehmen um ein paar Tests durchzuführen.

Dennoch macht deine Option auch viel Sinn und ist noch dazu übersichtlicher. Danke auf jeden Fall.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.