お世話になっております。
使用している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項の最後に、カンマが入っています。
という記述で問題はおきないものかどうか。? ということです。
お手数をおかけして大変恐縮ですが、何卒よろしくおねがいします。
> 第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 );
と書くこともできます。