アプリケーションを作成する際には、設定値やパラメーターを保存して、起動時に読み込みたいケースが多くあります。C++Builderでは、inifile を扱う場合、TIniFile 、TMemIniFileを使用します。ESP32でそれと同様な機能を提供してくれるのが、Preferencesライブラリです。TIniFile 、TMemIniFileと同じような感覚で使用する事が出来ます。
Preferencesライブラリは、ESP32のnvs領域(不揮発性メモリ)にデータを保存するための便利なライブラリです。EEPROMライブラリよりも高速で効率的にデータを保存できるため、ESP32のアプリケーション開発で広く使用されています。
Preferencesライブラリの使い道
Preferencesライブラリの使い道としては、以下のようなものが挙げられます。
- アプリケーションの設定値やパラメーターを保存する
- ユーザーのログイン情報や設定を保存する
- 履歴や統計情報を保存する
- ゲームのハイスコアや記録を保存する
- センサーのデータを保存する
具体的な例としては、以下のようなものがあります。
- スマートスピーカーの音量や明るさの設定を保存する
- スマートロックのパスワードを保存する
- インターネット接続の設定を保存する
- ゲームのプレイ時間やスコアを保存する
- センサーで測定した温度や湿度を保存する
Preferencesライブラリの使い方
ESP32のPreferencesライブラリは、nvs(ESP32の不揮発性メモリ)にデータを保存するためのライブラリです。EEPROMライブラリの後継として開発されたもので、より高速で効率的にデータを保存することができます。
Preferencesライブラリの基本的な使い方は、以下のとおりです。
- Preferencesクラスのインスタンスを作成します。
- begin()関数でPreferencesオブジェクトを初期化します。
- put()関数でデータを保存します。
- get()関数でデータを読み取ります。
- 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も参照ください。