void clickEvent() {
Serial.println("Alarm Reset");
datei = SD.open("logfile.txt", FILE_WRITE);
if (datei) {
datei.println("Alarm Reset");
datei.close();
digitalWrite(sysalarm, LOW);
} else {
Serial.println("logfile.txt kann nicht geöffnet werden"); // scheint hier hinzukommen ?
}
// readlogfile();
}
Und bekomme dann:
SD Karte initialisiert.
logfile inhalt lesen nur für test:
Hab diesen text im logfile geschrieben zum testen ob etwas in der logfile drin ist
Programm lauft
Pumpe An
Hochwasser Alarm
Alarm Reset
logfile.txt kann nicht geöffnet werden
Oke es funktioniert habe 2e mal einen "Hochwasser" alarm gemacht und die werden jetzt auch in der logfile.txt geschrieben.
SD Karte initialisiert.
logfile inhalt lesen nur für test:
Programm lauft
Pumpe An
Hochwasser Alarm
Alarm Reset
SD Karte initialisiert.
logfile inhalt lesen nur für test:
Alarm Reset
Programm lauft
Pumpe An
Hochwasser Alarm
Alarm Reset
SD Karte initialisiert.
logfile inhalt lesen nur für test:
Alarm Reset
Alarm Reset
Programm lauft
Aber wen ich direkt "readlogfile" void stehen lasse dann bekomme ich gleig "Kann logfile.txt nicht öffnen" und keine Eintragung in logfile.
Was kann dass jetzt wieder sein.
void clickEvent() {
Serial.println("Alarm Reset");
datei = SD.open("logfile.txt", FILE_WRITE);
if (datei) {
datei.println("Alarm Reset");
datei.close();
digitalWrite(sysalarm, LOW);
} else {
Serial.println("logfile.txt kann nicht geöffnet werden"); // scheint hier hinzukommen ?
}
readlogfile();
}
void readlogfile ()//lesen von logfile
{
datei = SD.open("logfile.txt");
if (datei) {
Serial.println("logfile inhalt lesen nur für test:");
while (datei.available()) {
Serial.write(datei.read());
}
datei.close();
} else {
Serial.println("Kann logfile.txt nicht öffnen");
}}
heisst eigentlich, dass die Funktion readlogfile nicht funktioniert. Bzw dort nicht aufgerufen werden kann.
Oder dass etwas ganz woanders krumm ist.
Dass man eine Datei zum Schreiben aufmacht, schreibt, schliesst, die gleiche Datei wieder zum Lesen öffnet und dann das Geschriebene dort wiederfindet, sollte eigentlich (auch ohne delay) funktionieren.
(Gibt genug demos, die das machen.)
Ich frag mich, wann und wie clickEvent() aufgerufen wird ?
Ist evtl. grade der RAM / Stack am Ende ?
Mit deinen vielen Serial.print ohne F() hast du noch viel Puffer...
Aus anderen Implementierungen (ganz andere Baustelle) kenne ich ein Verhalten, daß eine Datei erst mit dem Zerstören des Datei-Objekts geschlossen wird. Ob das hier (C++) bei Verlassen des Unterprogramms funktioniert, kann ich nicht sagen.
Was sagen denn die Beispiele zur Bibliothek, arbeiten die mit lokalen oder globalen Datei-Objekten?
Mit dass lesen dein Beitrag ist mir klar geworden dass ich die meiste serials.print nicht brauche es ist für mich wichtig in meine testfase auch die "readlogfile" brauch ich nur in die testfase.
Ich frag mich, wann und wie clickEvent() aufgerufen wird ?
Ich hab einen Multibutton gebaut (geklaut) womit ich 4 verschiedene Events aufrufen kann.
Mann kann es sich selbst auch schwieriger machen dann nötig ist.
Mein google "multibutton arduino" zeigt was von adafruit als erstes, was aber den verdächtigen "Event" Begriff nicht verwendet. Also hab ich immer noch keine Ahnung "wann und wie clickEvent() aufgerufen wird"
michael_x:
Mein google "multibutton arduino" zeigt was von adafruit als erstes, was aber den verdächtigen "Event" Begriff nicht verwendet. Also hab ich immer noch keine Ahnung "wann und wie clickEvent() aufgerufen wird"
Das ist halt das Problem, wenn man nur Sketch-Fragmente bekommt.
Ungefähr 80% von die Serial.prints werden raus geholt.
Diesen Sketch ist auch noch nicht fertig es wird noch:
Einen Wlan eingebaut die ESP8266
Einen Datei muss bei neu Start von SD-karte mit neue Einstellungen eingelesen werden (timers)
Und ein teil soll über eine Webseite bedienbar sein.
Ist für mich noch eine menge Arbeit aber ich habe auch einen menge zeit.
Also sei mir nicht böse wenn es nicht immer nach der regeln ist was ich gemacht (geklaut) habe.