Enregistrement des paramètres dans la mémoire de l'unité de base

Salut Si vous avez la chance de tenir le microcontrôleur ESP32 entre vos mains (j'ai eu plus de chance et que j'ai M5Stack entre les mains) de la société chinoise ESPRESSIF , alors ce message peut être utile.



Il y a une situation où il est nécessaire de sauvegarder certains paramètres dans la mémoire non volatile (par exemple: compter le nombre de fois que l'appareil est allumé pendant tout le temps ou enregistrer les paramètres Wi-Fi). Cela peut être fait facilement en utilisant la bibliothèque des préférences .


Nous déclarons une instance de la classe Preferences , et là nous verrons ...


La première chose que nous devons faire est de créer un trousseau en appelant la méthode begin avec une paire d'arguments (mais uniquement avec le premier): le nom du trousseau et le drapeau en lecture seule.


Pour enregistrer une valeur de chaîne en mémoire, vous devez passer la clé et la valeur elle-même à une méthode dont le nom se compose de deux parties: la première est placée et la seconde est un nom de type, par exemple: String . Tout est clair et compréhensible. Certes, il y a encore des octets bruts sans frire auquel personne ne veut assigner un type. Dans ce cas, la méthode prend également le troisième argument avec le nombre de ces octets. Avec cette procédure, tout semble être.


Une fois la valeur écrite, vous pouvez la lire en utilisant la méthode (dont le nom est similaire au précédent), où la première partie sera récupérée . Cette méthode renvoie la valeur de la clé du type correspondant. Rappelez-vous le cas d'octets? Si vous ne savez pas (ou ne vous souvenez pas) du nombre d'octets sur la clé, tirez la méthode getBytesLength avec un seul argument - la clé, elle calculera tout et renverra le montant en taille_t .


Si vous souhaitez supprimer une clé spécifique du trousseau, donnez-lui le seul argument à la méthode remove .


Voulez-vous apporter un vrai marafet et effacer tout le tas ? Appelez la méthode clear sans aucun argument!


Lorsque vous souhaitez terminer l'utilisation du bundle, appelez la méthode end sans aucun argument.


En général, les types suivants sont pris en charge: Char , UChar , Short , UShort , Int , UInt , Long , ULong , Long64 , ULong64 , Float , Double , Bool , String et Bytes .


Je comprends ce que je veux quelque chose code, voici donc l'esquisse. Un croquis compte le nombre de tours sur l'appareil et l'affiche à l'écran:


#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() { } 

Une référence à la bibliothèque est jointe .

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


All Articles