You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
11 KiB
354 lines
11 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.IO.Ports;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace MacManagerForTemPatch
|
|
{
|
|
|
|
public partial class Form1 : Form
|
|
{
|
|
|
|
private bool flag_start;
|
|
private bool flag_end;
|
|
private byte[] mSerial_Buff;
|
|
private int mSerial_Buff_idx;
|
|
|
|
static private List<Data> macList;
|
|
private StringCollection savedMacList;
|
|
private StringCollection runTimeData;
|
|
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
runTimeData = new StringCollection();
|
|
comboBox_comport.DataSource = SerialPort.GetPortNames();
|
|
|
|
mSerial_Buff = new byte[4096];
|
|
mSerial_Buff_idx = 0;
|
|
|
|
macList = new List<Data>();
|
|
|
|
savedMacList = Properties.Settings.Default.savedmaclist;
|
|
|
|
label_lastmac.Text = "";
|
|
|
|
if (savedMacList != null)
|
|
{
|
|
if(savedMacList.Count > 0 )
|
|
{
|
|
for(int i = 0; i < savedMacList.Count; i++)
|
|
{
|
|
String temp = savedMacList[i];
|
|
String[] array = temp.Split(',');
|
|
|
|
Console.WriteLine("data : " + temp);
|
|
|
|
|
|
ListViewItem lvi = new ListViewItem((i+1).ToString());
|
|
lvi.SubItems.Add(array[0]);
|
|
lvi.SubItems.Add(array[1]);
|
|
lvi.SubItems.Add(array[2]);
|
|
|
|
|
|
|
|
Data data = new Data(array[0], array[1], array[2]);
|
|
|
|
|
|
updateList(data);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
private void button_save_csv_Click(object sender, EventArgs e)
|
|
{
|
|
string fileName;
|
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
|
saveFileDialog.Title = "저장 경로를 선택하세요";
|
|
saveFileDialog.OverwritePrompt = true;
|
|
saveFileDialog.Filter = "CSV 파일 (*.csv)|*.csv|모든 파일 (*.*)|*.*";
|
|
saveFileDialog.FileName = "[" + macList.Count.ToString() + "]TemPatchMacAddress_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".csv";
|
|
|
|
|
|
|
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
fileName = saveFileDialog.FileName;
|
|
|
|
ListViewToCSV(listView_maclist, fileName, false);
|
|
|
|
//public static void ListViewToCSV(ListView listView, string filePath, bool includeHidden)
|
|
}
|
|
}
|
|
|
|
private void button_open_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
if (!serialPort.IsOpen) //시리얼포트가 열려 있지 않으면
|
|
{
|
|
|
|
serialPort.PortName = comboBox_comport.Text;
|
|
serialPort.BaudRate = 115200;
|
|
serialPort.DataBits = 8;
|
|
serialPort.StopBits = StopBits.One;
|
|
serialPort.Parity = Parity.None;
|
|
serialPort.RtsEnable = false;
|
|
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
|
|
|
|
try
|
|
{
|
|
serialPort.Open();
|
|
//label_comport_status.Text = "Port Opened";
|
|
}
|
|
catch
|
|
{
|
|
//MessageBox.Show("사용중인 시리얼 포트 입니다.");
|
|
MessageBox.Show("Already used in serial port.");
|
|
}
|
|
|
|
}
|
|
else //시리얼포트가 열려 있으면
|
|
|
|
{
|
|
//label_comport_status.Text = "Port already Opened..";
|
|
serialPort.Close();
|
|
}
|
|
|
|
|
|
if (serialPort.IsOpen)
|
|
{
|
|
comboBox_comport.Enabled = false; //COM포트설정 콤보박스 비활성화
|
|
((Button)(sender)).Text = "CLOSE";
|
|
|
|
}
|
|
else
|
|
{
|
|
comboBox_comport.Enabled = true; //COM포트설정 콤보박스 비활성화
|
|
((Button)(sender)).Text = "OPEN";
|
|
}
|
|
}
|
|
|
|
|
|
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.Invoke(new EventHandler(SerialReceived));
|
|
}
|
|
catch
|
|
{
|
|
Console.WriteLine("error : " + e);
|
|
}
|
|
}
|
|
|
|
private void updateList(Data data)
|
|
{
|
|
|
|
macList.Add(data);
|
|
|
|
|
|
ListViewItem lvi = new ListViewItem((macList.Count).ToString());
|
|
//lvi.SubItems.Add();
|
|
lvi.SubItems.Add(data.MacAddr);
|
|
lvi.SubItems.Add(data.Write_Date);
|
|
lvi.SubItems.Add(data.Write_Time);
|
|
|
|
listView_maclist.Items.Add(lvi);
|
|
|
|
|
|
String tempbuf = data.MacAddr + ',' + data.Write_Date + ',' + data.Write_Time;
|
|
|
|
//savedMacList.Add(tempbuf);
|
|
|
|
runTimeData.Add(tempbuf);
|
|
Properties.Settings.Default.savedmaclist = runTimeData;
|
|
Properties.Settings.Default.Save();
|
|
|
|
|
|
listView_maclist.EnsureVisible(macList.Count - 1);
|
|
|
|
foreach (ListViewItem item in listView_maclist.Items)
|
|
{
|
|
item.BackColor = Color.Transparent;
|
|
}
|
|
listView_maclist.Items[macList.Count - 1].BackColor = Color.SkyBlue;
|
|
label_lastmac.Text = macList.Count.ToString() + "번 " + data.MacAddr;
|
|
}
|
|
|
|
|
|
|
|
private void SerialReceived(object s, EventArgs e) //여기에서 수신 데이타를 사용자의 용도에 따라 처리한다.
|
|
{
|
|
int i_recv_size = serialPort.BytesToRead;
|
|
int data_len = 0;
|
|
byte[] b_tmp_buf = new byte[i_recv_size];
|
|
string recv_str = "";
|
|
|
|
if (i_recv_size == 0)
|
|
return;
|
|
serialPort.Read(b_tmp_buf, 0, i_recv_size);
|
|
recv_str = Encoding.Default.GetString(b_tmp_buf);
|
|
|
|
|
|
Console.WriteLine(recv_str);
|
|
|
|
for (int i = 0; i < i_recv_size; i++)
|
|
{
|
|
if (b_tmp_buf[i] == '#')
|
|
{
|
|
flag_start = true;
|
|
continue;
|
|
}
|
|
|
|
if (flag_start == true)
|
|
{
|
|
mSerial_Buff[mSerial_Buff_idx++] = b_tmp_buf[i];
|
|
|
|
if (mSerial_Buff_idx > 1)
|
|
{
|
|
|
|
if (b_tmp_buf[i] == '$')
|
|
{
|
|
flag_end = true;
|
|
}
|
|
|
|
if (flag_end == true)
|
|
{
|
|
byte[] temp = new byte[mSerial_Buff_idx-1];
|
|
Array.Copy(mSerial_Buff, temp, mSerial_Buff_idx-1);
|
|
|
|
// For Debugging Console
|
|
string mac = Encoding.Default.GetString(temp);
|
|
|
|
Console.WriteLine("mac : " + mac);
|
|
|
|
String date = DateTime.Now.ToString("yyyy-MM-dd");
|
|
String time = DateTime.Now.ToString("HH:mm:ss");
|
|
|
|
Data data = new Data(mac, date, time);
|
|
|
|
mSerial_Buff_idx = 0;
|
|
|
|
flag_end = false;
|
|
flag_start = false;
|
|
|
|
updateList(data);
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public void ListViewToCSV(ListView listView, string filePath, bool includeHidden)
|
|
{
|
|
//make header string
|
|
StringBuilder result = new StringBuilder();
|
|
WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listView.Columns[i].Text);
|
|
|
|
//export data rows
|
|
foreach (ListViewItem listItem in listView.Items)
|
|
WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listItem.SubItems[i].Text);
|
|
|
|
File.WriteAllText(filePath, result.ToString());
|
|
|
|
|
|
if (MessageBox.Show("저장이 완료되었습니다. 목록을 삭제할까요? ", "데이터 삭제", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
macList.Clear();
|
|
listView.Clear();
|
|
|
|
Properties.Settings.Default.savedmaclist.Clear();
|
|
Properties.Settings.Default.Save();
|
|
|
|
label_lastmac.Text = "";
|
|
}
|
|
else
|
|
{
|
|
// MessageBox.Show("아니요 클릭");
|
|
}
|
|
|
|
}
|
|
|
|
private static void WriteCSVRow(StringBuilder result, int itemsCount, Func<int, bool> isColumnNeeded, Func<int, string> columnValue)
|
|
{
|
|
bool isFirstTime = true;
|
|
for (int i = 0; i < itemsCount; i++)
|
|
{
|
|
if (!isColumnNeeded(i))
|
|
continue;
|
|
|
|
if (!isFirstTime)
|
|
result.Append(",");
|
|
isFirstTime = false;
|
|
|
|
result.Append(String.Format("\"{0}\"", columnValue(i)));
|
|
|
|
|
|
}
|
|
result.AppendLine();
|
|
}
|
|
|
|
private void button_removeAll_Click(object sender, EventArgs e)
|
|
{
|
|
if(macList.Count > 0)
|
|
{
|
|
if (MessageBox.Show("목록을 삭제할까요? ", "데이터 삭제", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
macList.Clear();
|
|
listView_maclist.Items.Clear();
|
|
|
|
Properties.Settings.Default.savedmaclist.Clear();
|
|
Properties.Settings.Default.Save();
|
|
label_lastmac.Text = "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("삭제할 데이터가 없습니다.");
|
|
}
|
|
|
|
}
|
|
|
|
private void button_add_test_Click(object sender, EventArgs e)
|
|
{
|
|
var chars = "ABCDE0123456789";
|
|
var stringChars = new char[17];
|
|
var random = new Random();
|
|
|
|
for (int i = 0; i < stringChars.Length; i++)
|
|
{
|
|
if (i == 2 || i == 5 || i == 8 || i == 11 || i == 14)
|
|
stringChars[i] = ':';
|
|
else
|
|
stringChars[i] = chars[random.Next(chars.Length)];
|
|
}
|
|
var temp_mac = new String(stringChars);
|
|
|
|
|
|
String date = DateTime.Now.ToString("yyyy-MM-dd");
|
|
String time = DateTime.Now.ToString("HH:mm:ss");
|
|
|
|
Data data = new Data(temp_mac, date, time);
|
|
updateList(data);
|
|
|
|
}
|
|
}
|
|
}
|
|
|