Привет! Если Вам посчастливилось подержать в руках микроконтроллер ESP32 (мне посчастливилось больше и у меня в руках M5Stack) от китайской компании ESPRESSIF, то этот пост, возможно, будет полезен.
Бывает ситуация, когда необходимо сохранить какие-то параметры в энергонезависимой памяти (например: подсчитывать количество включений устройства за всё время или сохранять настройки Wi-Fi). Это можно сделать с лёгкостью с помощью библиотеки Preferences.
Объявим экземпляр класса Preferences, а там видно будет...
Первое, что мы должны сделать — это создать связку ключей путём вызова метода begin с парой аргументов (но можно только с одним первым): именем связки и флагом "только для чтения".
Чтобы сохранить строковое значение в памяти, нужно передать ключ и само значение в метод, имя которого состоит из двух частей: первой — put и второй — имени типа, например: String. Всё ясно и понятно. Правда, есть ещё "сырые" байты без обжарки, которым никто не хочет присвоить тип. В таком случае метод принимает ещё и третий аргумент с количеством этих байтов. С этой процедурой вроде всё.
После того, как значение было записано, можно его прочесть с помощью метода (имя которого аналогично предыдущему), где первая часть будет get. Данный метод возвращает значение для ключа соответственного типа. Помните про случай с байтами? Если Вы не знаете (или не помните) сколько байт лежит по ключу, то дёргайте метод getBytesLength с единственным аргументом — ключом, она всё посчитает и вернёт количество в size_t.
Если Вы хотите удалить определённый ключ из связки, то отдайте его единственным аргументом методу remove.
Хотите навести настоящий марафет и очистить ВСЮ связку? Вызывайте без всяких аргументов метод clear!
Когда Вы пожелаете завершить работу со связкой, то вызовите метод end без каких-либо аргументов.
В общем поддерживаются следующие типы: Char, UChar, Short, UShort, Int, UInt, Long, ULong, Long64, ULong64, Float, Double, Bool, String и Bytes.
Понимаю, что хочется чего-то кода, поэтому вот скетч. Скетч подсчитывает количество включений устройства и выводит его на дисплей:
#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() { }
Ссылочка на библиотеку прилагается.
Комментарии (4)
FGV
19.11.2019 23:43документацию читать нынче не модно? гляньте https://docs.espressif.com/projects/esp-idf/en/latest/index.html там все по полочкам разложено.
pyur
тоже недавно приехала ESP32. подзавис на этапе выбора IDE. в чём под неё писать и компилировать практичнее?
dsiberia9s Автор
привет! VScode или ATOM с Platformio.