تحية! إذا كنت محظوظًا بما يكفي لإبقاء متحكم ESP32 بين يديك (كنت محظوظًا ولدي M5Stack بين يدي) من الشركة الصينية ESPRESSIF ، فقد يكون هذا المنشور مفيدًا.

هناك موقف عندما يكون من الضروري حفظ بعض المعلمات في ذاكرة غير متقلبة (على سبيل المثال: حساب عدد مرات تشغيل الجهاز طوال الوقت أو حفظ إعدادات Wi-Fi). يمكن القيام بذلك بسهولة باستخدام مكتبة التفضيلات .
نعلن عن مثيل لفئة التفضيلات ، وسنرى ...
أول شيء نحتاج إلى القيام به هو إنشاء سلسلة مفاتيح عن طريق استدعاء طريقة البداية مع زوج من الوسائط (ولكن فقط مع الأولى): اسم سلسلة المفاتيح وعلامة القراءة فقط.
لحفظ قيمة سلسلة في الذاكرة ، تحتاج إلى تمرير المفتاح والقيمة نفسها إلى طريقة يتكون اسمها من جزأين: الأول يوضع والثاني اسم كتابة ، على سبيل المثال: سلسلة . كل شيء واضح ومفهوم. صحيح ، لا تزال هناك بايت الخام بدون قلي أن لا أحد يريد تعيين نوع ل. في هذه الحالة ، تأخذ الطريقة أيضًا الوسيطة الثالثة مع عدد وحدات البايت هذه. مع هذا الإجراء ، يبدو أن كل شيء يكون.
بعد كتابة القيمة ، يمكنك قراءتها باستخدام الطريقة (يشبه اسمه الاسم السابق) ، حيث سيتم الحصول على الجزء الأول. تُرجع هذه الطريقة قيمة مفتاح النوع المقابل. تذكر حالة البايت؟ إذا كنت لا تعرف (أو لا تتذكر) عدد البايتات الموجودة على المفتاح ، فقم بسحب طريقة getBytesLength باستخدام وسيطة واحدة - المفتاح ، فسوف يقوم بحساب كل شيء وإرجاع المبلغ بالقيمة size_t .
إذا كنت تريد إزالة مفتاح معين من سلسلة المفاتيح ، فامنحه الوسيطة الوحيدة لطريقة الإزالة .
هل تريد إحضار مجموعة حقيقية وتطهير المجموعة بأكملها ؟ استدعاء طريقة واضحة دون أي حجج!
عندما تريد إنهاء العمل مع الحزمة ، اتصل بالطريقة 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() { }
مرجع إلى المكتبة مرفق .