Hallo,
ich versuche einen Präprozessorbefehl zu nutzen, der aber nicht so läuft wie ich mir das vorgestellt habe.
Hintergrund: Es geht um einen Datenlogger auf SD-Karte, alles unter der Arduino-IDE 1.8.12 unter Linux Mint 19.3.
Ich möchte über einen #define Befehl am Anfang einen Dateinamen definieren, den ich später mehrfach im Code nutze. Hier soll dem Makro DATEINAME der Wert logdatei.csv zugeordnet werden.
Wenn ich im folgenden Code laufen lasse, dann wird auf der SD-Karte aber nicht die logdatei.csv erzeugt, sondern eine Datei mit dem Namen DATEINAME:
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#define DATEINAME logdatei.csv
File myFile;
const int chipSelect = 2;
void setup() { // ###################################
Serial.begin(115200);
Serial.println("");
Serial.print(F("Initializing SD card..."));
if (!SD.begin(chipSelect)) {
Serial.println(F("Card failed, or not present"));
return;
}
Serial.println(F("card initialized."));
if (SD.exists("DATEINAME")) {
Serial.println("DATEINAME war vorhanden.");
} else {
Serial.print("DATEINAME war nicht vorhanden, ");
myFile = SD.open("DATEINAME", FILE_WRITE);
myFile.close();
if (SD.exists("DATEINAME")) {
Serial.println("wurde dann aber erstellt.");
} else {
Serial.println("konnte auch NICHT erstellt werden!");
}
}
}
void loop() {
}
Mir erschien die #define Anweisung eigentlich eindeutig, und weiß hier wirklich nicht weiter.
Dann werden Wörter in Anführungszeichen nicht durch den Makro ersetzt ???
Ich dachte, die Makros werden gerade durchgängig ersetzt, "ohne Betrachtung der äußeren Umstände".
Ich will eigentlich die Anführungszeichen gerade nicht im Makro drinnen haben, da ich bei den Strings für die Ausgabe dann wieder anfangen müssste die Strings zu splitten etc.