Search Notebooks
実用ライブラリシリーズ:設定ファイル

mbedを使ったアプリケーションを構成する上で便利な設定ファイル読み込みクラスの解説をします。

Config, file

Page owner: user Shinichiro Nakamura

Created 11 Sep 2010.
Last updated 18 Sep 2010

実用ライブラリシリーズ:設定ファイル

Page last updated 18 Sep 2010, by   user Shinichiro Nakamura   tag Config, file | 2 replies  

Languages

English version is here : Practical library series : Configuration File

概要

mbedを使って様々なプログラムを設計実装する時、外部から与えられた設定に従って動作させたいことがあります。

例えば、Twitterにつぶやくアプリケーションを設計実装した場合を考えてみましょう。

Twitterのアカウント情報をプログラムに埋め込むとpublishする時に面倒ですし、セキュリティ上も好ましいとは言えません。

そこで、今回はmbedのローカルファイルシステムに設定ファイルを保存しておき、それらを簡単に読み取ることのできるクラスを実現してみました。

これならば、様々な情報をプログラムに直接埋め込むのではなく、外部に設置した設定ファイルから読み込んで利用することができます。

基本コンセプト

特徴

この設定ファイルライブラリには以下の特徴があります。

ライブラリ

クラス構成

クラスは

ConfigFile

という単一のクラスで構成されています。

プロジェクト

関連するプロジェクトはConfigFileConfigFile_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を使ったアプリケーションを構成する上で便利な設定ファイル読み込みクラスの解説をしました。


2 comments

18 Sep 2010

ちょうどやりたいことだったので助かりました。

「キー」、「バリュー」を遂にして読み込むことができます。

「キー」、「バリュー」をにして読み込むことができます。

でしょうか。

18 Sep 2010

Shinichi Ohki様

御指摘ありがとうございます。

完璧にスペルミスでした。 ^^;

助かります。

Shinichiro Nakamura

Please log in to post a comment.