メモリチップへのカンマ区切りのデータ書き込みについて

お世話になっております。

使用しているMCU:RX113

RSPIで接続された富士通製FRAM(MB85RS512T)へのデータ書き込みについて、ご教示お願いします。

※ バイト単位でのデータの読み書き、ステータスレジスタの読み込み等はできております。

● 実現したいこと。

カンマで区切られた幾つかのデータをテキストで読める形で書き込むこと。

上記の理由・目的:メモリに蓄積されたデータを外部に送信して、読めること。

● 考えてみたコード (抜粋)

unsigned char Memout[] = "";
unsigned char *Memdata[9];

        Memdata[0] = "20170428 11:12" ","; // 日付・時刻       14Byte
        Memdata[1] = " 12" ",";        // 冷凍機 作動電流値     3Byte
        Memdata[2] = "2.7" ",";        // 扉ヒーター 作動電流値   3Byte
        Memdata[3] = "0.8" ",";        // ドレンヒーター 作動電流値 3Byte
        Memdata[4] = "-17.3" ",";       // 庫内温度          5Byte
        Memdata[5] = "12345" ",";       // 電源ON連続時間     5Byte
        Memdata[6] = "11:12" ",";       // 温度異常時時刻      5Byte
        Memdata[7] = " 85.7" ",";        // 温度異常時の温度     5Byte
        Memdata[8] = "5" "\r\n";        // 扉開閉回数        1Byte

/*  データ送信関数への引渡し */

  data_send(Memdata); // メモリへの書き込みデータ送信

 

※ 上に書きましたコードの初期値は、記憶領域を計算するための覚え書き程度のものです。

● 確認したいこと

  0番目から8番目までのデータは、それぞれ決まった長さ(上記のコードのバイト数)で揃えたいが、この場合

   sprintf(Memdata[n], "%4d,", data );   //  <-  第2項の最後に、カンマが入っています。

 

   という記述で問題はおきないものかどうか。? ということです。

 

お手数をおかけして大変恐縮ですが、何卒よろしくおねがいします。

 

  • わわい様

    ありがとうございます。<m(__)m>

    > とかいろいろツッコミはあるとはおもいますが

    いや、十分に参考にさせていただきます。早速ノートにコピペさせていただきました。
    intだけではないのは確かですが、ノウハウとして生かしてまいります。
  • > 第2引数がかなり長くなるわけですが、ダブルクォーテーションの途中で改行する方法はあるものでしょうか。

    連続する文字列定数は連結されるので

    sprintf(Memdata, "%4d%2d%2d %2d:%2d\r\n", year, month, day, hour, minute);
    

    sprintf(
        Memdata,
        "%4d"
        "%2d"
        "%2d"
        " "
        "%2d"
        ":"
        "%2d"
        "\r\n",
        year,
        month,
        day,
        hour,
        minute
    );
    

    と書くこともできます。

  • fujita様
    なるほど! そうでしたか。φ(..)メモメモ
    頭ではわかっているつもりでも、実践で適用できなければなりませんね。
    ありがとうございました。