Ich mache ein Smart-Home-System mit NodeMCU, und ich muss Daten aus dem Modul speichern und abrufen. Ich habe folgende Funktion benutzt.Variablen nach einem Neustart auf NodeMCU persistent machen
function save_settings(name,value)
file.remove(name)
file.open(name,"w+")
file.writeline(value)
file.close()
end
Es funktioniert, aber es ist langsam und die NodeMCU stürzt ab, wenn ich die obige Funktion schnell auslösen ... Manchmal ein FS-Format erfordert, um es wieder zu verwenden.
Meine Frage ist also: Gibt es eine andere Möglichkeit, Variablen zwischen Neustarts persistent zu machen?
Bei jedem Schreibvorgang muss wahrscheinlich ein Flash-Block gelöscht und neu geschrieben werden, was von Natur aus langsam ist. Ich habe keine Ahnung, warum es abstürzen würde, aber es könnte den Schreibpuffer überfüllen oder versuchen, eine Seite zu löschen/zu schreiben, während die gleiche Operation bereits stattfindet. In jedem Fall kann die Lösung darin bestehen, die Daten in einem Array irgendwo zwischenzuspeichern und weniger oft zu schreiben. Wenn das nicht gut genug ist, müssen Sie möglicherweise auf eine SPI EEPROM oder SD-Karte schreiben :( – user1816847
@ user1816847 Ithx für die Antwort, aber das ist keine Option mehr, weil ich bereits eine Cuatom-Platine für das Projekt gemacht und es derzeit ohne die Speicherfunktion verwendet ... Alles, was ich jetzt tun kann, ist ein Heimgerät, das eine sichere Ladefunktion nur durch Software implementiert. –
Ich würde empfehlen, 'file.remove (name)' zu entfernen, da es in diesem Fall redundant mit 'file.open' ist aufgrund des 'w +' Modus Dies kann auch die Arbeit der FS zu tun haben, da es keine Änderung an der Dateitabelle gibt –