2024/04/24「多機能ファイラーAs/Rの魅力と活用法」を出版、KView32公開

Preferencesライブラリの使い方

ESP32

アプリケーションを作成する際には、設定値やパラメーターを保存して、起動時に読み込みたいケースが多くあります。C++Builderでは、inifile を扱う場合、TIniFile 、TMemIniFileを使用します。ESP32でそれと同様な機能を提供してくれるのが、Preferencesライブラリです。TIniFile 、TMemIniFileと同じような感覚で使用する事が出来ます。

Preferencesライブラリは、ESP32のnvs領域(不揮発性メモリ)にデータを保存するための便利なライブラリです。EEPROMライブラリよりも高速で効率的にデータを保存できるため、ESP32のアプリケーション開発で広く使用されています。

Preferencesライブラリの使い道

Preferencesライブラリの使い道としては、以下のようなものが挙げられます。

  • アプリケーションの設定値やパラメーターを保存する
  • ユーザーのログイン情報や設定を保存する
  • 履歴や統計情報を保存する
  • ゲームのハイスコアや記録を保存する
  • センサーのデータを保存する

具体的な例としては、以下のようなものがあります。

  • スマートスピーカーの音量や明るさの設定を保存する
  • スマートロックのパスワードを保存する
  • インターネット接続の設定を保存する
  • ゲームのプレイ時間やスコアを保存する
  • センサーで測定した温度や湿度を保存する

Preferencesライブラリの使い方

ESP32のPreferencesライブラリは、nvs(ESP32の不揮発性メモリ)にデータを保存するためのライブラリです。EEPROMライブラリの後継として開発されたもので、より高速で効率的にデータを保存することができます。

Preferencesライブラリの基本的な使い方は、以下のとおりです。

  1. Preferencesクラスのインスタンスを作成します。
  2. begin()関数でPreferencesオブジェクトを初期化します。
  3. put()関数でデータを保存します。
  4. get()関数でデータを読み取ります。
  5. end()関数でPreferencesオブジェクトを終了します。

Preferencesライブラリで保存できるデータの型は、以下のとおりです。

  • char
  • unsigned char
  • short
  • unsigned short
  • long
  • unsigned long
  • float
  • double

また、Preferencesライブラリでは、複数のPreferencesオブジェクトを同時に使用することができます。

メンバー関数

Preferencesライブラリのメンバー関数について説明します。

メンバー関数説明
Preferences::begin()NVS(Non-volatile storage)の利用を開始する。
Preferences::clear()NVS(Non-volatile storage)から、現在利用中のネームスペース内の全てのキー・バリューを削除する。
Preferences::end()NVS(Non-volatile storage)の利用を終了する。
Preferences::get()NVS(Non-volatile storage)から、現在利用中のネームスペース内の指定したキーに対応する値を取得する。
Preferences::put()NVS(Non-volatile storage)に、現在利用中のネームスペース内の指定したキーに対応するバリューを書き込む。
Preferences::remove()NVS(Non-volatile storage)から、現在利用中のネームスペース内の指定したキー・バリューを削除する。

コードのサンプル

ユーザーのログイン情報や設定を保存する場合

以下のサンプルコードでは、Preferencesオブジェクトを “my_preferences” という名前で初期化します。次に、”username” と “password” というキーで、それぞれ “John Doe” と “secret” というデータを保存します。最後に、保存したデータを読み取って出力します。

#include <Preferences.h>

void setup() {
  Preferences preferences;

  // Preferencesオブジェクトを初期化します
  preferences.begin("my_preferences");

  // データを保存します
  preferences.putString("username", "John Doe");
  preferences.putString("password", "secret");
  preferences.putInt("theme", 1);

  // データを読み取ります
  String username = preferences.getString("username");
  String password = preferences.getString("password");
  int theme = preferences.getInt("theme");

  // Preferencesオブジェクトを終了します
  preferences.end();
}

アプリケーションの設定値やパラメーターを保存する場合

以下のサンプルは、Preferencesオブジェクトを “my_preferences” という名前で初期化します。次に、”volume” と “is_on” というキーで、それぞれ 50 と true というデータを保存します。最後に、保存したデータを読み取って出力します。

#include <Preferences.h>

void setup() {
  Preferences preferences;

  // Preferencesオブジェクトを初期化します
  preferences.begin("my_preferences");

  // データを保存します
  preferences.putInt("volume", 50);
  preferences.putBoolean("is_on", true);

  // データを読み取ります
  int volume = preferences.getInt("volume");
  bool is_on = preferences.getBoolean("is_on");

  // Preferencesオブジェクトを終了します
  preferences.end();
}

参考URL

以下のHPも参照ください。

タイトルとURLをコピーしました