using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Text;
|
using System.Windows.Forms;
|
|
namespace SHARP_CLAS_UI.Screen
|
{
|
public partial class Form_Log : Form
|
{
|
#region Enum
|
enum Logs
|
{
|
None,
|
Button,
|
Alarm,
|
Interlock,
|
}
|
#endregion
|
|
#region Field
|
Form_Frame _Parent;
|
|
Logs Current_Log;
|
#endregion
|
|
#region Construct
|
public Form_Log(Form_Frame _Parent)
|
{
|
InitializeComponent();
|
this._Parent = _Parent;
|
Current_Log = Logs.None;
|
}
|
#endregion
|
|
#region Form_Function
|
private void btn_Date_Log_Open_Click(object sender, EventArgs e)
|
{
|
string root_path = Get_Log_Path();
|
|
if(root_path == null)
|
{
|
MessageBox.Show("Please Check Log.");
|
return;
|
}
|
|
DateTime dt_start = dtp_Start_Date.Value;
|
DateTime dt_end = dtp_End_Date.Value;
|
|
if (dtp_Start_Date.Value.Year > dtp_End_Date.Value.Year ||
|
(dtp_Start_Date.Value.Year == dtp_End_Date.Value.Year && dtp_Start_Date.Value.DayOfYear > dtp_End_Date.Value.DayOfYear))
|
{
|
MessageBox.Show("Please Check Date.");
|
return;
|
}
|
|
|
lv_Log_Data.Items.Clear();
|
|
while(true)
|
{
|
try
|
{
|
string file_path = root_path + $"{dt_start.Year}\\{dt_start.Month:d2}\\{Current_Log}_{dt_start.Day:d2}.csv";
|
|
Log_Date_Set(file_path);
|
|
if (dt_start.Year == dt_end.Year && dt_start.Month == dt_end.Month && dt_start.Day == dt_end.Day)
|
break;
|
else
|
dt_start = dt_start.AddDays(1.0);
|
}
|
catch(Exception)
|
{
|
break;
|
}
|
}
|
}
|
|
private void btn_Time_Log_Open_Click(object sender, EventArgs e)
|
{
|
string root_path = Get_Log_Path();
|
|
if (root_path == null)
|
{
|
MessageBox.Show("Please Check Log.");
|
return;
|
}
|
|
if (dtp_Start_Time.Value.TimeOfDay > dtp_End_Time.Value.TimeOfDay)
|
{
|
MessageBox.Show("Please Check Time.");
|
return;
|
}
|
|
DateTime dt_start = dtp_Start_Date.Value;
|
lv_Log_Data.Items.Clear();
|
|
try
|
{
|
string file_path = root_path + $"{dt_start.Year}\\{dt_start.Month}\\{Current_Log}_{dt_start.Day}.csv";
|
|
Log_Time_Set(file_path, dtp_Start_Time.Value, dtp_End_Time.Value);
|
}
|
catch (Exception)
|
{
|
|
}
|
}
|
|
private void btn_Alarm_Log_Click(object sender, EventArgs e)
|
{
|
lv_Log_Data.Items.Clear();
|
lv_Log_Data.Columns.Clear();
|
|
lv_Log_Data.Columns.Add("Date", 150);
|
lv_Log_Data.Columns.Add("Code", 525);
|
lv_Log_Data.Columns.Add("Description", 900);
|
Current_Log = Logs.Alarm;
|
}
|
#endregion
|
|
#region Function
|
public void Set_Language()
|
{
|
try
|
{
|
lb_Select_data.Text = "■" + resLanguage.SELECT_DATE;
|
|
lb_Start.Text = resLanguage.Start;
|
lb_End.Text = resLanguage.END;
|
btn_Date_Log_Open.Text = resLanguage.SELECT;
|
|
lb_Start_1.Text = resLanguage.Start;
|
lb_End_1.Text = resLanguage.END;
|
btn_Time_Log_Open.Text = resLanguage.SELECT;
|
|
btn_Open_Folder.Text = resLanguage.OPEN_FOLDER;
|
btn_Save_File_CSV.Text = resLanguage.SAVE_TO_CSV;
|
|
rb_Button_Log.Text = resLanguage.BUTTON;
|
rb_Alarm_Log.Text = resLanguage.Alarm;
|
rb_Interlock_Log.Text = resLanguage.INTERLOCK;
|
}
|
catch(Exception ex)
|
{
|
|
}
|
}
|
|
private string Get_Log_Path()
|
{
|
string str = null;
|
|
switch(Current_Log)
|
{
|
case Logs.Button:
|
{
|
str = "D:\\Logger\\Button\\";
|
break;
|
}
|
case Logs.Alarm:
|
{
|
str = "D:\\Logger\\Alarm\\";
|
break;
|
}
|
case Logs.Interlock:
|
{
|
str = "D:\\Logger\\Interlock\\";
|
break;
|
}
|
}
|
|
return str;
|
}
|
|
private bool Log_Date_Set(string filepath)
|
{
|
List<string> list_st = new List<string>();
|
|
if (!File.Exists(filepath))
|
return false;
|
|
using (FileStream fs = new FileStream(filepath, FileMode.Open))
|
{
|
using (StreamReader sr = new StreamReader(fs))
|
{
|
while (true)
|
{
|
try
|
{
|
string str = sr.ReadLine();
|
if (str == string.Empty || str == null)
|
break;
|
|
string[] procstr = str.Split(',');
|
|
list_st.Add($"{procstr[0]}\t{procstr[1]}\t{procstr[2]}");
|
}
|
catch (Exception)
|
{
|
|
}
|
}
|
}
|
}
|
|
foreach (string str in list_st.ToArray())
|
{
|
ListViewItem lvi = new ListViewItem(str.Split('\t'));
|
lv_Log_Data.Items.Add(lvi);
|
}
|
|
return true;
|
}
|
|
private bool Log_Time_Set(string filepath, DateTime start_time, DateTime end_time)
|
{
|
List<string> list_st = new List<string>();
|
|
if (!File.Exists(filepath))
|
return false;
|
|
using (FileStream fs = new FileStream(filepath, FileMode.Open))
|
{
|
using (StreamReader sr = new StreamReader(fs))
|
{
|
while (true)
|
{
|
try
|
{
|
string str = sr.ReadLine();
|
if (str == string.Empty || str == null)
|
break;
|
|
string[] procstr = str.Split(',');
|
|
DateTime dt = DateTime.Parse(procstr[0]);
|
|
if(start_time.TimeOfDay.Ticks <= dt.TimeOfDay.Ticks && dt.TimeOfDay.Ticks <= end_time.TimeOfDay.Ticks)
|
{
|
list_st.Add($"{procstr[0]}\t{procstr[1]}\t{procstr[2]}");
|
}
|
}
|
catch (Exception)
|
{
|
|
}
|
}
|
}
|
}
|
|
foreach (string str in list_st.ToArray())
|
{
|
ListViewItem lvi = new ListViewItem(str.Split('\t'));
|
lv_Log_Data.Items.Add(lvi);
|
}
|
|
return true;
|
}
|
#endregion
|
private void btn_Open_Folder_Click(object sender, EventArgs e)
|
{
|
string root_path = Get_Log_Path();
|
|
if (root_path == null)
|
{
|
MessageBox.Show("Please Check Log.");
|
return;
|
}
|
|
if (Directory.Exists(root_path))
|
System.Diagnostics.Process.Start(root_path);
|
else
|
MessageBox.Show($"{root_path} is not exist.");
|
}
|
|
private void btn_Save_File_CSV_Click(object sender, EventArgs e)
|
{
|
if (lv_Log_Data.Items.Count == 0)
|
{
|
return;
|
}
|
|
SaveFileDialog dialog = new SaveFileDialog();
|
dialog.Title = "파일 저장하기";
|
dialog.Filter = "CSV 파일|*.csv|Text 파일|*.txt";
|
dialog.InitialDirectory = "D:\\";
|
dialog.FileName = $"{Current_Log.ToString()}";
|
if (dialog.ShowDialog() != DialogResult.OK)
|
return;
|
|
string selectPath = dialog.FileName;
|
|
using (StreamWriter outPutFile = new StreamWriter(selectPath, false, Encoding.Default))
|
{
|
string rows = "";
|
|
foreach (ColumnHeader header in lv_Log_Data.Columns)
|
{
|
rows += header.Text + ",";
|
}
|
|
rows = rows.Substring(0, rows.Length - 1);
|
outPutFile.WriteLine(rows, Encoding.Default);
|
|
foreach (ListViewItem lvi in lv_Log_Data.Items)
|
{
|
rows = "";
|
foreach (ListViewItem.ListViewSubItem str in lvi.SubItems)
|
rows += str.Text + ",";
|
rows = rows.Substring(0, rows.Length - 1);
|
outPutFile.WriteLine(rows, Encoding.Default);
|
}
|
}
|
}
|
private void rb_Log_CheckedChanged(object sender, EventArgs e)
|
{
|
RadioButton rb = (RadioButton)sender;
|
|
if (!rb.Checked) return;
|
|
if (rb == rb_Button_Log)
|
{
|
lv_Log_Data.Items.Clear();
|
lv_Log_Data.Columns.Clear();
|
|
lv_Log_Data.Columns.Add("Date", 150);
|
lv_Log_Data.Columns.Add("Button", 525);
|
lv_Log_Data.Columns.Add("Description", 900);
|
Current_Log = Logs.Button;
|
}
|
else if (rb == rb_Alarm_Log)
|
{
|
lv_Log_Data.Items.Clear();
|
lv_Log_Data.Columns.Clear();
|
|
lv_Log_Data.Columns.Add("Date", 150);
|
lv_Log_Data.Columns.Add("Code", 525);
|
lv_Log_Data.Columns.Add("Description", 900);
|
Current_Log = Logs.Alarm;
|
}
|
else if(rb == rb_Interlock_Log)
|
{
|
lv_Log_Data.Items.Clear();
|
lv_Log_Data.Columns.Clear();
|
|
lv_Log_Data.Columns.Add("Date", 150);
|
lv_Log_Data.Columns.Add("Code", 525);
|
lv_Log_Data.Columns.Add("Description", 900);
|
Current_Log = Logs.Interlock;
|
}
|
}
|
}
|
}
|