English version is here : Practical library series : Configuration File
mbedを使って様々なプログラムを設計実装する時、外部から与えられた設定に従って動作させたいことがあります。
例えば、Twitterにつぶやくアプリケーションを設計実装した場合を考えてみましょう。
Twitterのアカウント情報をプログラムに埋め込むとpublishする時に面倒ですし、セキュリティ上も好ましいとは言えません。
そこで、今回はmbedのローカルファイルシステムに設定ファイルを保存しておき、それらを簡単に読み取ることのできるクラスを実現してみました。
これならば、様々な情報をプログラムに直接埋め込むのではなく、外部に設置した設定ファイルから読み込んで利用することができます。


この設定ファイルライブラリには以下の特徴があります。
クラスは
ConfigFile
という単一のクラスで構成されています。
関連するプロジェクトはConfigFileとConfigFile_TestProgramの2つです。
ライブラリはConfigFileにあります。このライブラリは他のプログラムでそのまま使うことができるようにmbedのライブラリ及びテストプログラムは含んでいません。
テストプログラムを実行してみたい時にはConfigFile_TestProgramを使って下さい。
まずは設定ファイルを作成します。
# # Configuration file for mbed. # MyKey1=This is a value for key1. MyKey2=Value 2 Message1 = This is a test message no.1 Message2 = This is a test message no.2 Message3 = This is a test message no.3
以下の例はmbedのローカルファイルシステムに置かれたinput.cfgファイルを読み込む例です。
MyKeyというキーに対しての値を取得するコードです。
#include "mbed.h"
#include "ConfigFile.h"
LocalFileSystem local("local");
ConfigFile cfg;
int main(void) {
char *key = "MyKey";
char value[BUFSIZ];
/*
* Read a configuration file from a mbed.
*/
if (!cfg.read("/local/input.cfg")) {
error("Failure to read a configuration file.\n");
}
/*
* Get a configuration value.
*/
if (cfg.getValue(key, &value[0], sizeof(value))) {
printf("'%s'='%s'\n", key, value);
}
}
以下は値を設定してファイルに書き込む際の例です。
MyKeyに対してTestValueを設定して書き込みを行います。
#include "mbed.h"
#include "ConfigFile.h"
LocalFileSystem local("local");
ConfigFile cfg;
int main(void) {
/*
* Set a configuration value.
*/
if (!cfg.setValue("MyKey", "TestValue")) {
error("Failure to set a value.\n");
}
/*
* Write to a file.
*/
if (!cfg.read("/local/output.cfg")) {
error("Failure to write a configuration file.\n");
}
}
本文書ではmbedを使ったアプリケーションを構成する上で便利な設定ファイル読み込みクラスの解説をしました。
Please log in to post a comment.
ちょうどやりたいことだったので助かりました。
「キー」、「バリュー」を遂にして読み込むことができます。
は
「キー」、「バリュー」を対にして読み込むことができます。
でしょうか。