Almacenamiento de configuraciones en la memoria de la Unidad Base

Hola Si tiene la suerte de tener el microcontrolador ESP32 en sus manos (tuve más suerte y tengo M5Stack en mis manos) de la compañía china ESPRESSIF , entonces esta publicación puede ser útil.



Existe una situación en la que es necesario guardar algunos parámetros en la memoria no volátil (por ejemplo: cuente la cantidad de veces que el dispositivo está encendido todo el tiempo o guarde la configuración de Wi-Fi). Esto se puede hacer con facilidad usando la biblioteca de Preferencias .


Declaramos una instancia de la clase Preferencias , y allí veremos ...


Lo primero que debemos hacer es crear un llavero llamando al método de inicio con un par de argumentos (pero solo con el primero): el nombre del llavero y la bandera de solo lectura.


Para guardar un valor de cadena en la memoria, debe pasar la clave y el valor en sí a un método cuyo nombre consta de dos partes: la primera se coloca y la segunda es un nombre de tipo, por ejemplo: Cadena . Todo es claro y entendible. Es cierto, todavía hay bytes sin procesar sin freír a quien nadie quiere asignar un tipo. En este caso, el método también toma el tercer argumento con el número de estos bytes. Con este procedimiento todo parece ser.


Después de escribir el valor, puede leerlo utilizando el método (cuyo nombre es similar al anterior), donde se obtendrá la primera parte. Este método devuelve el valor para la clave del tipo correspondiente. ¿Recuerdas el caso del byte? Si no sabe (o no recuerda) cuántos bytes hay en la clave, extraiga el método getBytesLength con un solo argumento: la clave, calculará todo y devolverá la cantidad en size_t .


Si desea eliminar una clave específica del llavero, dele el único argumento para el método de eliminación .


¿Quieres traer un verdadero marafet y despejar a todo el grupo ? ¡Llama al método clear sin ningún argumento!


Cuando desee terminar de trabajar con el paquete, llame al método final sin ningún argumento.


En general, se admiten los siguientes tipos: Char , UChar , Short , UShort , Int , UInt , Long , ULong , Long64 , ULong64 , Float , Double , Bool , String y Bytes .


Entiendo lo que quiero algo código, así que aquí está el boceto. Un boceto cuenta el número de vueltas en el dispositivo y lo muestra en la pantalla:


#include <M5Stack.h> #include <Preferences.h> Preferences preferences; const char* key = "OnOff"; uint32_t count; void setup() { m5.begin(); preferences.begin("MyKeyChain"); count = preferences.getUInt(key); preferences.putUInt(key, count + 1); M5.Lcd.setTextSize(3); M5.Lcd.setTextColor(TFT_WHITE); M5.Lcd.println("Hello, Habr!"); M5.Lcd.setTextSize(2); M5.Lcd.println("M5Stack Turned On:"); M5.Lcd.setTextSize(3); M5.Lcd.setTextColor(TFT_RED); M5.Lcd.println(count); M5.Lcd.setTextColor(TFT_WHITE); M5.Lcd.setTextSize(2); M5.Lcd.println("times"); } void loop() { } 

Se adjunta una referencia a la biblioteca.

Source: https://habr.com/ru/post/476492/


All Articles