Datei auf SD Karte durch eine Variable erzeugen?

Hallo,

ich würde gerne eine TXT Datei auf einer SD Karte erzeugen. Diese soll den Dateinamen haben, der mittels einer Variablen übergeben wird.

Jetzt habe ich es endlich geschafft, mein array so zu wandeln, dass die SD schreib Funktion mir keinen fehler mir bringt. Trotzdem wird keine Datei mit dem in dem Array charBuf gespeicherten Text "2.2.17.txt" erzeugt.

Habt ihr eine Idee warum das nicht funktioniert? Wie könnte die Lösung dazu aussehen?

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

String dateiname[]=""2.2.17.txt"";
char charBuf[14];

File root, myFile;

void setup()
{

Serial.begin(115200);

Serial.print("Initializing SD card...");

if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

dateiname[0].toCharArray(charBuf, 13);

Serial.println(dateiname[0]);
Serial.println(charBuf);

myFile = SD.open(charBuf, FILE_WRITE);
myFile = SD.open("test1234.txt", FILE_WRITE);
myFile.close();
}

Funktioniert denn der Dateiname, wenn du einen festen Namen angibst?

Stephan4575:
Habt ihr eine Idee warum das nicht funktioniert?

Vermute mal Fehler im Sketch.

Stephan4575:
Wie könnte die Lösung dazu aussehen?

So wie es bei denen aussieht, bei denen es funktioniert.

Soweit ich weiss, benötigen Dateinamen das 8.3 Format, dein Datum hat ein anderes Format (1.1.2.3).

Du könntest mal "170202.txt" versuchen (diese Datumsdarstellung sortiert auch besser).

Einfach mal die Dokus zu den Bibliotheken lesen: die SD-Lib's, die ich kenne, können alle nur das 8.3-Format.

Hallo,
ich vermute das liegt an dem Dateinamen mit mehreren "Punkten". Mal probieren mit der 8.3-Konvention
Viel Erfolg
MKc

Trotzdem wird keine Datei mit dem in dem Array charBuf gespeicherten Text "2.2.17.txt" erzeugt.

Habt ihr eine Idee warum das nicht funktioniert?
[/quote]

Im FAT-Dateisystem sind Dateinamen, die mehr als einen Punkt im Dateinamen enthalten, KEIN GÜLTIGER DATEINAME!

Ein Dateiname für FAT-Dateisysteme muss der 8.3 Namenskonvention entsprechen:
Bis zu 8 Zeichen(maximal) vor dem Punkt, dann ein Punkt, dann drei Zeichen als Dateiendung.

Ein im FAT-System gültiger Dateiname wäre:
"20170202.txt"

Die Namensbildung aus vierstelliges Jahr, zweistelliger Monat und zweistelliger Tag mit ".txt" als Dateiendung hat zudem den Vorteil:

  • alphabetische Sortierung und chronologische Sortierung nach Datum sind dann IDENTISCH!

[OT]

Gab es heute Echoknödel zum Frühstück?

[/OT]

Super, vielen dank. Das mit den Punkten war wohl doch der Fehler.

Danke für eure Hilfe

Schade, dass du auf meine Frage nicht antwortest!

Stephan4575:
Super, vielen dank. Das mit den Punkten war wohl doch der Fehler.

Danke für eure Hilfe

String dateiname[]="\"2.2.17.txt\"";

Das kann auch garnicht funktionieren.

Das kann auch garnicht funktionieren.

Und die Sache mit den Punkten ist da noch das wenigste. Ein Dateiname, der mit " anfängt, ist etwas exotisch.
Wofür du ein String-Array mit einem einzigen Element brauchst, verstehe ich nicht.

Schonmal sowas probiert:

char dateiname[13]="test_.txt";

dateiname[4] = '1'; 
Serial.println(dateiname);   //liefert:   test1.txt
File f = SD.open(dateiname, FILE_WRITE);

Ja, gute Frage. Hatte ich am ANfang auch gestellt, aber mit Antworten hats der Stephan nicht so...