using System; using System.Threading; using System.Windows.Forms; namespace SHARP_CLAS_UI { public partial class Form_Table_Info : Form { #region Property #endregion #region Field Equipment _equip; Panel_Info Table_1_Info; Panel_Info Table_2_Info; Panel_Info_Names Table_1_Name; Panel_Info_Names Table_2_Name; OutputData table_1_vacuum_sol; OutputData table_1_blow_sol; InputData table_1_vacuum_on_sensor; Func Table_1_scrap_start; OutputData table_2_vacuum_sol; OutputData table_2_blow_sol; InputData table_2_vacuum_on_sensor; Func Table_2_scrap_start; bool table_1_vacuum_sol_value; bool table_1_blow_sol_value; bool table_1_vacuum_on_value; bool table_2_vacuum_sol_value; bool table_2_blow_sol_value; bool table_2_vacuum_on_value; bool update_check; delegate void UI_Update_Delegate(); Thread Data_Update_Th; Thread UI_Update_Th; #endregion #region Construct public Form_Table_Info(Equipment _equip, Panel_Info_Names Table_1_Name, Panel_Info_Names Table_2_Name) { InitializeComponent(); this._equip = _equip; this.Table_1_Name = Table_1_Name; this.Table_2_Name = Table_2_Name; lb_Table_1_Name.Text = Table_1_Name.ToString(); lb_Table_2_Name.Text = Table_2_Name.ToString(); Table_1_Info = Panel_Info_Manager.Instance.Get_Panel_Info(Table_1_Name); Table_2_Info = Panel_Info_Manager.Instance.Get_Panel_Info(Table_2_Name); Data_Update_Th = new Thread(Data_Update_Th_Set); UI_Update_Th = new Thread(UI_Update_Th_Set); Data_Update_Th.Start(); UI_Update_Th.Start(); } #endregion #region Function public void Init_Table_1_IO_Data(OutputData vacuum_sol, OutputData blow_sol, InputData vacuum_on_sensor) { this.table_1_vacuum_sol = vacuum_sol; this.table_1_blow_sol = blow_sol; this.table_1_vacuum_on_sensor = vacuum_on_sensor; } public void Init_Table_2_IO_Data(OutputData vacuum_sol, OutputData blow_sol, InputData vacuum_on_sensor) { this.table_2_vacuum_sol = vacuum_sol; this.table_2_blow_sol = blow_sol; this.table_2_vacuum_on_sensor = vacuum_on_sensor; } public void Init_Table_1_Scrap_Start(Func Scrap_Start) { this.Table_1_scrap_start = Scrap_Start; } public void Init_Table_2_Scrap_Start(Func Scrap_Start) { this.Table_2_scrap_start = Scrap_Start; } private void Data_Update_Th_Set() { while (!_equip.IsDisposed) { try { Thread.Sleep(10); DateTime dt = DateTime.Now; Table_1_Data_Update(); Table_2_Data_Update(); TimeSpan ts = (DateTime.Now - dt); } catch(Exception ) { } } } private void Table_1_Data_Update() { Table_1_Info = Panel_Info_Manager.Instance.Panel_Infos[Table_1_Name]; if (_equip.Board_Control.BoardMode == MMCE_Test.NMCSDKLib.EcMstMode.eMM_RUN) { table_1_vacuum_sol_value = _equip.Board_Control.IO_manager.Get_Output(table_1_vacuum_sol); table_1_blow_sol_value = _equip.Board_Control.IO_manager.Get_Output(table_1_blow_sol); table_1_vacuum_on_value = _equip.Board_Control.IO_manager.Get_Input(table_1_vacuum_on_sensor); } } private void Table_2_Data_Update() { Table_2_Info = Panel_Info_Manager.Instance.Panel_Infos[Table_2_Name]; if (_equip.Board_Control.BoardMode == MMCE_Test.NMCSDKLib.EcMstMode.eMM_RUN) { table_2_vacuum_sol_value = _equip.Board_Control.IO_manager.Get_Output(table_2_vacuum_sol); table_2_blow_sol_value = _equip.Board_Control.IO_manager.Get_Output(table_2_blow_sol); table_2_vacuum_on_value = _equip.Board_Control.IO_manager.Get_Input(table_2_vacuum_on_sensor); } } private void UI_Update_Th_Set() { while (!_equip.IsDisposed) { Thread.Sleep(100); if (!update_check) { update_check = true; UI_Update(); } } } private void UI_Update() { if (InvokeRequired) { BeginInvoke(new UI_Update_Delegate(UI_Update)); return; } else { try { Table_1_UI_Update(); Table_2_UI_Update(); } catch (Exception ex) { } finally { update_check = false; } } } private void Table_1_UI_Update() { if (Table_1_Info != null) { lb_Table_1_Exist.BackColor = !Table_1_Info.Blank ? System.Drawing.Color.Lime : System.Drawing.Color.Green; tb_Table_1_Tray_ID.Text = Table_1_Info.Tray_ID; tb_Table_1_Panel_ID.Text = Table_1_Info.Panel_ID; tb_Table_1_Tray_Num.Text = Table_1_Info.Tray_Num.ToString(); tb_Table_1_Panel_Num.Text = Table_1_Info.Panel_Num.ToString(); tb_Table_1_Row_Num.Text = Table_1_Info.Row_Num.ToString(); tb_Table_1_Column_Num.Text = Table_1_Info.Column_Num.ToString(); } lb_Table_1_Vacuum_Sol.BackColor = table_1_vacuum_sol_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; lb_Table_1_Blow_Sol.BackColor = table_1_blow_sol_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; lb_Table_1_Vacuum_On_Sensor.BackColor = table_1_vacuum_on_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; } private void Table_2_UI_Update() { if (Table_2_Info != null) { lb_Table_2_Exist.BackColor = !Table_2_Info.Blank ? System.Drawing.Color.Lime : System.Drawing.Color.Green; tb_Table_2_Tray_ID.Text = Table_2_Info.Tray_ID; tb_Table_2_Panel_ID.Text = Table_2_Info.Panel_ID; tb_Table_2_Tray_Num.Text = Table_2_Info.Tray_Num.ToString(); tb_Table_2_Panel_Num.Text = Table_2_Info.Panel_Num.ToString(); tb_Table_2_Row_Num.Text = Table_2_Info.Row_Num.ToString(); tb_Table_2_Column_Num.Text = Table_2_Info.Column_Num.ToString(); } lb_Table_2_Vacuum_Sol.BackColor = table_2_vacuum_sol_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; lb_Table_2_Blow_Sol.BackColor = table_2_blow_sol_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; lb_Table_2_Vacuum_On_Sensor.BackColor = table_2_vacuum_on_value ? System.Drawing.Color.Lime : System.Drawing.Color.Green; } #endregion #region Form Function private void Form_Table_Info_FormClosing(object sender, FormClosingEventArgs e) { if (!_equip.IsDisposed) { e.Cancel = true; this.Hide(); } } private void btn_Table_1_Scrap_Click(object sender, EventArgs e) { if(Table_1_scrap_start == null) { Interlock_Manager.Add_Interlock_Msg("Scrap Can't Start", "Scrap Function is not exist."); return; } else if (_equip.equip_mode == En_Equipment_Mode.Auto || _equip.Auto_Mode) { Interlock_Manager.Add_Interlock_Msg("Scrap Can't Start", "Equipment mode is Auto."); return; } else { Table_1_scrap_start(); } } private void btn_Table_2_Scrap_Click(object sender, EventArgs e) { if (Table_2_scrap_start == null) { Interlock_Manager.Add_Interlock_Msg("Scrap Can't Start", "Scrap Function is not exist."); return; } else if (_equip.equip_mode == En_Equipment_Mode.Auto || _equip.Auto_Mode) { Interlock_Manager.Add_Interlock_Msg("Scrap Can't Start", "Equipment mode is Auto."); return; } else { Table_2_scrap_start(); } } #endregion } }