G3012_LPCマイコン通信タイムライン追加
2024年12月6日
18:16
G3012_pc_lpc_micon_uart_part_1
OneDriveの下記からプロジェクトフォルダをダウンロードしてご活用ください
マイコンからの受信に日時を追加する
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();
}