G3012_LPCマイコン通信タイムライン追加

2024126

18:16

G3012_pc_lpc_micon_uart_part_1

 

OneDriveの下記からプロジェクトフォルダをダウンロードしてご活用ください

 LPC_uart_プロジェクトファイル

 

マイコンからの受信に日時を追加する

 

 

 

 

 

 

 

public static string Time_line = "";

 

 

// タイムライン コンボボックス

comboBox3.Items.Add("なし");

comboBox3.Items.Add("時間");

comboBox3.Items.Add("日付");

comboBox2.SelectedIndex = 0;

Time_line = comboBox3.Text;

 

 

 

 

// タイムラインコンボボックスの選択

Time_line = comboBox3.Text;

 

 

 

string time_line_msg;

DateTime dt = DateTime.Now;

 

 

// タイムラインの処理を追加

time_line_msg = "";

switch (Time_line)

{

case "時間":

time_line_msg = dt.ToString("HH:mm:ss  ");

break;

case "日付":

time_line_msg = dt.ToString("yyyy/MM/dd HH:mm:ss  ");

break;

}

 

listBox1.Items.Add(time_line_msg + msg_cst);    // 連続受信は成功した

 

実行結果はこのようになります

 

 

2024.12.08 SAN (03:14) goma0099 -9500866-

タイムラインに所要秒数の計算を追加します

 

public static int Old_month = 0;

public static int Old_sec = 0;

 

int dev_sec = 0;

int now_sec;

 

 

// 差分の秒数計算はここで処理する必要がある

if(0< time_line_msg.Length)

{

// 月が初期値なら、現在月を代入

if(Old_month == 0) Old_month = dt.Month;

now_sec = (dt.Day * 24 * 3600) + (dt.Hour * 3600) + (dt.Minute * 60) + dt.Second;

if (Old_sec == 0) Old_sec = now_sec;

 

// 月は変化していない        月変化があったら計算はしない

if (Old_month == dt.Month)

{

dev_sec = now_sec - Old_sec;        // 差分計算

}

else

{

// 月変化なら計算しなくてよい

dev_sec = 0;

Old_month = dt.Month;                        // 月更新

}

Old_sec = now_sec;                                        // 秒更新

 

time_line_msg += " (" + dev_sec.ToString() + ") ";

 

}

 

 

2024.12.08 SAN (03:33) goma0099 -9500866-

タイムラインのタイプ選択をテキスト保存します

 

 

public static string Prm_txt_path = "000_LPC_uart_prm.txt";

 

 

// パラメータ保存

void com_prm_txt_wrt()

{

string txt_buf;

Encoding enc = Encoding.GetEncoding("UTF-8");

using (StreamWriter wrt = new StreamWriter(Prm_txt_path, false, enc))

{

// タイムラインのタイプを保存します

txt_buf = Time_line;

wrt.WriteLine(txt_buf);

}

 

}

 

 

// パラメータの読み込み

void com_prm_txt_red()

{

if (File.Exists(Prm_txt_path) == false) return;

 

// 2024.12.08 SAN (04:12) goma0099 -9500866-

// なぜか、UTF-8 を指定すると、プログラムが起動しないトラブル発生

// StreamWriter(Prm_txt_path, false, enc) 書き込みパラメータ

// false 指定することで回避出来た

 

Encoding enc = Encoding.GetEncoding("UTF-8");

using (StreamReader red = new StreamReader(Prm_txt_path, enc))

{

Time_line = red.ReadLine();

}

 

}

 

 

int i;

 

 

com_prm_txt_red();        // 前回のタイムライン読み込

// ここはもっとスマートな処理があると思いますが調査を省略します

i = 0;

switch(Time_line)

{

case "時刻": i = 1; break;

case "日付": i = 2; break;

}

comboBox3.SelectedIndex = i;

 

 

// テキストファイルに保存します

com_prm_txt_wrt();

 

 

 

2024.12.15 SAN (07:28) goma0099 -5084537-

写真撮影のために、受信履歴を左に位置変更します

 

 

 

 

通信速度もパラメータとして保存し前回を再現します

 

com_prm_txt_red();  // 前回のタイムライン読み込

// ここはもっとスマートな処理があると思いますが調査を省略します

 

// 通信速度

comboBox2.Items.Add("115200");

comboBox2.Items.Add("57600");

comboBox2.Items.Add("38400");

comboBox2.Items.Add("28800");

comboBox2.Items.Add("19200");

comboBox2.Items.Add("14400");

comboBox2.Items.Add("9600");

comboBox2.Items.Add("7200");

comboBox2.Items.Add("4800");

comboBox2.Items.Add("2400");

comboBox2.SelectedIndex = 0;

UART_speed = comboBox2.Text;

 

for (i = 0; i < comboBox2.MaxLength; i++)

{

comboBox3.SelectedIndex = i;

if (comboBox3.Text == UART_speed) break;

}

 

 

// パラメータ保存

void com_prm_txt_wrt()

{

string txt_buf;

Encoding enc = Encoding.GetEncoding("UTF-8");

using (StreamWriter wrt = new StreamWriter(Prm_txt_path, false, enc))

{

// タイムラインのタイプを保存します

txt_buf = Time_line; wrt.WriteLine(txt_buf);        // タイムライン

txt_buf = UART_speed; wrt.WriteLine(txt_buf);        // 通信速度

}

 

}

 

// パラメータの読み込み

void com_prm_txt_red()

{

if (File.Exists(Prm_txt_path) == false) return;

 

// 2024.12.08 SAN (04:12) goma0099 -9500866-

// なぜか、UTF-8 を指定すると、プログラムが起動しないトラブル発生

// StreamWriter(Prm_txt_path, false, enc) 書き込みパラメータ

// false 指定することで回避出来た

 

 

Encoding enc = Encoding.GetEncoding("UTF-8");

using (StreamReader red = new StreamReader(Prm_txt_path, enc))

{

Time_line = red.ReadLine();                // タイムライン

UART_speed = red.ReadLine();        // 通信速度

}

 

}

 

// 通信速度が変更された

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

{

UART_close();           // ポートクローズ

 

UART_speed = comboBox2.Text;

 

// パラメータファイルに保存します

com_prm_txt_wrt();

 

}