using System.Windows.Forms; using SHARP_CLAS_UI.Screen; using System.Drawing; using Navigation; using log4net.Appender; using log4net.Layout; using log4net.Repository.Hierarchy; using log4net; using System; using System.Text; using DIT.SharedMemory; using System.Threading; using System.Globalization; namespace SHARP_CLAS_UI { public partial class Form_Frame : Form { #region Enum #endregion #region Logger /// /// Exception Log /// private ILog ExceptionLog = LogManager.GetLogger("SHARP_CLAS_UI_Exception"); /// /// Button Log /// private ILog Button_Log = LogManager.GetLogger("Button"); /// /// Interlock Log /// private ILog Interlock_Log = LogManager.GetLogger("Interlock"); /// /// Position Parameter Log /// private ILog Position_Parameter_Log = LogManager.GetLogger("Position_Parameter"); /// /// Mode Parameter Log /// private ILog Mode_Parameter_Log = LogManager.GetLogger("Mode_Parameter"); /// /// Setting Parameter Log /// private ILog Setting_Parameter_Log = LogManager.GetLogger("Setting_Parameter"); /// /// Exception Log Write /// /// Method name of exception that occurred /// exception public void WriteExceptionLog(string Screenname, string Methodname, Exception ex) { if (ExceptionLog != null) ExceptionLog.Debug($"{Screenname}\t{Methodname}\t{ex.Message}"); } /// /// Button Log Write /// /// public void WriteButtonLog(string str) { Button_Log.Debug(str); } /// /// Interlock Log Write /// /// Method name of exception that occurred /// exception public void Write_Interlock_Log(string message) { if (Interlock_Log != null) Interlock_Log.Debug($"{message}"); } /// /// Interlock Log Write /// /// Method name of exception that occurred /// exception public void Write_Position_Parameter_Log(string message) { if (Position_Parameter_Log != null) Position_Parameter_Log.Debug($"{message}"); } public void Write_Mode_Parameter_Log(string message) { if (Mode_Parameter_Log != null) Mode_Parameter_Log.Debug($"{message}"); } public void Write_Setting_Parameter_Log(string message) { if (Setting_Parameter_Log != null) Setting_Parameter_Log.Debug($"{message}"); } /// /// Create excepton logger /// private void Create_exception_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "SHARP_CLAS_UI_ExceptionRollingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\SHARP_CLAS_Exception\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\'Exception'_MM_dd'.log'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff} %m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("SHARP_CLAS_UI_Exception"); ILog log = LogManager.GetLogger("SHARP_CLAS_UI_Exception"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); ExceptionLog = LogManager.GetLogger("SHARP_CLAS_UI_Exception"); } /// /// Create button logger /// private void Create_button_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "SHARP_CLAS_UI_ButtonRollingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Button\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\'Button'_dd'.csv'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff},%m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("Button"); ILog log = LogManager.GetLogger("Button"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); Button_Log = LogManager.GetLogger("Button"); } /// /// Create excepton logger /// private void Create_Interlock_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "Interlock_RoolingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Interlock\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\'Interlock'_dd'.csv'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff},%m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("Interlock"); ILog log = LogManager.GetLogger("Interlock"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); Interlock_Log = LogManager.GetLogger("Interlock"); } /// /// Create excepton logger /// private void Create_Position_Parameter_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "Position_Parameter_RoolingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Position_Parameter\{DateTime.Now.Year}\{DateTime.Now.Month}\Position_Parameter.csv"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\'Position_Parameter'_dd'.csv'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff},%m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("Position_Parameter"); ILog log = LogManager.GetLogger("Position_Parameter"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); Position_Parameter_Log = LogManager.GetLogger("Position_Parameter"); } private void Create_Mode_Parameter_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "Mode_Parameter_RoolingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Mode_Parameter\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\'Mode_Parameter'_dd'.csv'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff},%m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("Mode_Parameter"); ILog log = LogManager.GetLogger("Mode_Parameter"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); Mode_Parameter_Log = LogManager.GetLogger("Mode_Parameter"); } private void Create_Setting_Parameter_logger() { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender rollingAppender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "Setting_Parameter_RoolingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Setting_Parameter\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\'Setting_Parameter'_dd'.csv'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "100MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff},%m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger("Setting_Parameter"); ILog log = LogManager.GetLogger("Setting_Parameter"); Logger l = (Logger)log.Logger; l.Level = log4net.Core.Level.Debug; l.AddAppender(rollingAppender); Setting_Parameter_Log = LogManager.GetLogger("Setting_Parameter"); } #endregion #region Property private delegate void UI_Update_Delegate(); Thread UI_Update_Th; private Navigator navi; public SharedMemory sm; public Form_Main Screen_Main; public Form_Recipe Screen_Recipe; public Form_Recipe_Main Screen_Recipe_Main; public Form_Recipe_Type Screen_Recipe_Type; public Form_Parameter Screen_Parameter; public Form_Parameter_Position Screen_Parameter_Position; public Form_Parameter_System Screen_Parameter_System; public Form_Parameter_Alarm_Setting Screen_Parameter_Alarm_Setting; public Form_Maintenance Screen_Maintenance; public Form_Maintenance_Initialize Screen_Maintenance_Initialize; public Form_Maintenance_IO Screen_Maintenance_IO; public Form_Maintenance_Analog Screen_Maintenance_Analog; public Form_Maintenance_Laser Screen_Maintenance_Laser; public Form_Maintenance_Control Screen_Maintenance_Control; public Form_Maintenance_User_Info Screen_Maintenance_User_Info; public Form_Log Screen_Log; public Form_Alarm_List Screen_Alarm_List; public Equipment _equip; public Form_Vision_Test Screen_Vision_Test; public Form_Sequence_Viewer Screen_Sequence_Viewer; public Form_Scanner_View Screen_Scanner_View; public Form_Login Screen_Login; public Interlock_View interlock_view; bool language = true; bool update_check; bool isDispose = false; #endregion #region Construct public Form_Frame() { InitializeComponent(); sm = new SharedMemory("SHARP_CLAS", 10000, true); sm.Open(); interlock_view = new Interlock_View(this); _equip = new Equipment(); UI_Update_Th = new Thread(UI_Update_Th_Set); UI_Update_Th.Start(); } #endregion #region Form event private void Form_Frame_Load(object sender, EventArgs e) { Create_exception_logger(); Create_button_logger(); Create_Interlock_logger(); Create_Position_Parameter_logger(); Create_Mode_Parameter_logger(); Create_Setting_Parameter_logger(); Init_Screen(); Init_Frame_Button(); this.Location = new Point(0, 0); } private void Form_Frame_FormClosing(object sender, FormClosingEventArgs e) { if (_equip.cim_mode == En_Cim_Mode.Online) { _equip.Set_Cim_Mode(En_Cim_Mode.Offline); } isDispose = true; Dispose_Child_Form(); _equip.Dispose(); sm.Close(); this.Dispose(); } private void btn_AlarmView_Click(object sender, EventArgs e) { Screen_Alarm_List.Show(); Screen_Alarm_List.WindowState = FormWindowState.Normal; Screen_Alarm_List.TopMost = true; Screen_Alarm_List.TopMost = false; } private void lb_Language_Click(object sender, EventArgs e) { if (language) { lb_Language.Image = Properties.Resources.Japan; resLanguage.Culture = new CultureInfo("ja-JP"); language = false; } else { lb_Language.Image = Properties.Resources.English; resLanguage.Culture = new CultureInfo(""); language = true; } Set_Language(); Screen_Main.Set_Language(); Screen_Recipe_Main.Set_Language(); Screen_Recipe_Type.Set_Language(); Screen_Parameter_Position.Set_Language(); Screen_Parameter_System.Set_Language(); Screen_Parameter_Alarm_Setting.Set_Language(); Screen_Maintenance_Initialize.Set_Language(); Screen_Maintenance_Control.Set_Language(); Screen_Maintenance_User_Info.Set_Language(); Screen_Log.Set_Language(); Screen_Login.Set_Language(); } private void btn_LampView_Click(object sender, EventArgs e) { bool value = _equip.sm.Get_Bit(Output_Memory_Address.Equipment_Internal_Light); _equip.Board_Control.IO_manager.Set_Output(OutputData.Equipment_Internal_Light, !value); } #endregion #region Function public void Set_Language() { try { lb_Login_Info.Text = resLanguage.Login_Info; lb_Name.Text = resLanguage.Name; lb_Level.Text = resLanguage.Level; btn_Log_Out.Text = resLanguage.Log_Out; lb_Dust_Collector.Text = resLanguage.Dust_Collector; lb_Recipe_Name.Text = resLanguage.Recipe_Name; lb_Motor_Board_Status.Text = resLanguage.Motor_Board_Status; lb_Align.Text = resLanguage.Align_PC; lb_AOI.Text = resLanguage.AOI_PC; btn_AlarmView.Text = resLanguage.Alarm; lb_Lamp_Red.Text = resLanguage.Red; lb_Lamp_Yellow.Text = resLanguage.Yellow; lb_Lamp_Green.Text = resLanguage.Green; lb_Lamp_Blue.Text = resLanguage.Blue; } catch(Exception ex) { } } private void UI_Update_Th_Set() { while (!this.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 { if (_equip.equip_mode == En_Equipment_Mode.Auto) { if(Screen_Recipe_Main.Enabled) { Screen_Recipe_Main.Enabled = false; } if (Screen_Recipe_Type.Enabled) { Screen_Recipe_Type.Enabled = false; } if (Screen_Parameter_Position.Enabled) { Screen_Parameter_Position.Enabled = false; } if (Screen_Parameter_System.Enabled) { Screen_Parameter_System.Enabled = false; } if (Screen_Parameter_Alarm_Setting.Enabled) { Screen_Parameter_Alarm_Setting.Enabled = false; } } else if (_equip.equip_mode != En_Equipment_Mode.Auto) { if (!Screen_Recipe_Main.Enabled) { Screen_Recipe_Main.Enabled = true; } if (!Screen_Recipe_Type.Enabled) { Screen_Recipe_Type.Enabled = true; } if (!Screen_Parameter_Position.Enabled) { Screen_Parameter_Position.Enabled = true; } if (!Screen_Parameter_System.Enabled) { Screen_Parameter_System.Enabled = true; } if (!Screen_Parameter_Alarm_Setting.Enabled) { Screen_Parameter_Alarm_Setting.Enabled = true; } } Screen_Maintenance_User_Info.SetUIData(_equip.panel_count_info.CleaningCount); if (Alarm_Manager.Instance.Occured_Alarm.Count > 0) { Alarm_Occurred alarm = Alarm_Manager.Instance.Occured_Alarm.Dequeue(); if (Screen_Alarm_List.Add_Alarm(alarm)) { if(alarm.Heavy) _equip.Set_Equipment_Status_Code(En_Equipment_Status_Code.T2); _equip.Board_Control.IO_manager.Set_Output(OutputData.Buzzer_1_Relay, true); Screen_Alarm_List.Show(); } else { Alarm_Manager.Instance.Occured_Alarm.Enqueue(alarm); } } if (Interlock_Manager.Interlock_Msgs.Count > 0) { if (interlock_view.Visible == false) { _equip.Board_Control.IO_manager.Set_Output(OutputData.Buzzer_1_Relay, true); Interlock_Msg msg = Interlock_Manager.Interlock_Msgs.Dequeue(); Write_Interlock_Log($"{msg.Interlock_Message},{msg.Interlock_Discription}"); interlock_view.Interlock_Message = msg.Interlock_Message; interlock_view.Interlock_Discription = msg.Interlock_Discription; interlock_view.Show(); Interlock_Manager.Interlock_Msgs.Clear(); _equip.Set_Equipment_Mode(En_Equipment_Mode.Pause); } } if(Alarm_Manager.Instance.Alarm_Status == En_Alarm_Status.HEAVY) { btn_AlarmView.BackColor = Color.Red; } else if (Alarm_Manager.Instance.Alarm_Status == En_Alarm_Status.LIGHT) { btn_AlarmView.BackColor = Color.Yellow; } else { btn_AlarmView.BackColor = Color.White; } lb_Cim_Mode.BackColor = _equip.cim_mode == En_Cim_Mode.Online ? Color.Lime : Color.Green; lb_Cim_Mode.Text = _equip.cim_mode == En_Cim_Mode.Online ? resLanguage.CIM_On_Line : lb_Cim_Mode.Text = resLanguage.CIM_Off_Line; lb_Align.BackColor = _equip.Align_vision.isConnected ? Color.Lime : Color.Green; lb_AOI.BackColor = _equip.Aoi_vision.isConnected ? Color.Lime : Color.Green; lb_User_Name.Text = _equip.User.Name; lb_User_Level.Text = _equip.User.Level.ToString(); btn_LampView.BackColor = sm.Get_Bit(Output_Memory_Address.Equipment_Internal_Light) ? Color.Yellow : Color.Olive; lb_Lamp_Red.BackColor = sm.Get_Bit(Output_Memory_Address.Tower_Lamp_R) ? Color.Red : Color.DarkRed; lb_Lamp_Yellow.BackColor = sm.Get_Bit(Output_Memory_Address.Tower_Lamp_Y) ? Color.Yellow : Color.Olive; lb_Lamp_Green.BackColor = sm.Get_Bit(Output_Memory_Address.Tower_Lamp_G) ? Color.Lime : Color.Green; lb_Lamp_Blue.BackColor = sm.Get_Bit(Output_Memory_Address.Tower_Lamp_B) ? Color.Blue : Color.SlateGray; DateTime dt = DateTime.Now; lb_Date.Text = dt.ToString("yyyy/MM/dd"); lb_Time.Text = dt.ToString("HH:mm:ss.ff"); tb_Dust_Collect.Text = _equip.Setting.Dust_Collector.ToString(); tb_Dust_Collect.BackColor = sm.Get_Bit(Output_Memory_Address.Dust_Collector_On) ? Color.Lime : Color.Red; tb_Motor_Board_Status.Text = $"{_equip.Board_Control.BoardMode}"; tb_Motor_Board_Status.BackColor = _equip.Board_Control.BoardMode == MMCE_Test.NMCSDKLib.EcMstMode.eMM_RUN ? Color.Lime : Color.Red; if (_equip.Cur_Main_Recipe != null) tb_Main_Recipe_Name.Text = _equip.Cur_Main_Recipe.Name; else tb_Main_Recipe_Name.Text = "Not Selected"; } catch(Exception ) { } finally { update_check = false; } } } /// /// initialize Screen /// private void Init_Screen() { Screen_Main = new Form_Main(this); Screen_Recipe_Main = new Form_Recipe_Main(this); Screen_Recipe_Type = new Form_Recipe_Type(this); Screen_Recipe = new Form_Recipe(this); Screen_Parameter_Position = new Form_Parameter_Position(this); Screen_Parameter_System = new Form_Parameter_System(this); Screen_Parameter_Alarm_Setting = new Form_Parameter_Alarm_Setting(this); Screen_Parameter = new Form_Parameter(this); Screen_Maintenance_Initialize = new Form_Maintenance_Initialize(this); Screen_Maintenance_IO = new Form_Maintenance_IO(this); Screen_Maintenance_Analog = new Form_Maintenance_Analog(this); Screen_Maintenance_Laser = new Form_Maintenance_Laser(this); Screen_Maintenance_Control = new Form_Maintenance_Control(this); Screen_Maintenance_User_Info = new Form_Maintenance_User_Info(this); Screen_Maintenance = new Form_Maintenance(this); Screen_Log = new Form_Log(this); Screen_Alarm_List = new Form_Alarm_List(this); Screen_Vision_Test = new Form_Vision_Test(this); Screen_Sequence_Viewer = new Form_Sequence_Viewer(this); Screen_Scanner_View = new Form_Scanner_View(this); Screen_Login = new Form_Login(this); Screen_Login.Show(); } /// /// initialize Frame Button /// private void Init_Frame_Button() { navi = new Navigator(this, pnl_Bottom, pnl_Main, Navigator.Menu_Sort.LEFT, Navigator.Navigation_Location.TOP); navi.Set_Menu_Color(Color.LightSkyBlue, Color.LightSkyBlue); navi.Set_Menu_Size(100, 120); navi.Set_Menu_Font(15, Color.White, FontStyle.Bold, ContentAlignment.BottomCenter); navi.Set_Navigation_Color(Color.White); navi.Create_Menu("Main", Screen_Main, Navigator.User_Level.OPERATOR, btn_Menu_Click); navi.Create_Menu("Recipe", Screen_Recipe, Navigator.User_Level.OPERATOR, btn_Menu_Click); navi.Create_Menu("Parameter", Screen_Parameter, Navigator.User_Level.OPERATOR, btn_Menu_Click); navi.Create_Menu("Maintenance", Screen_Maintenance, Navigator.User_Level.OPERATOR, btn_Menu_Click); navi.Create_Menu("Log", Screen_Log, Navigator.User_Level.OPERATOR, btn_Menu_Click); navi.Create_EXIT(btn_EXT_Click); navi.Set_Margin(20); } private void btn_Menu_Click(object sender, EventArgs e) { Button data = (Button)sender; WriteButtonLog($"{this.Name},{data.Name}"); } private void btn_EXT_Click(object sender, EventArgs e) { Button data = (Button)sender; if(data.DialogResult == DialogResult.OK) WriteButtonLog($"{this.Name},{data.Name}"); } public void Set_User_Level(En_User_Level user_level) { Navigator.User_Level level; if (user_level == En_User_Level.Operator) { level = Navigator.User_Level.OPERATOR; } else if(user_level == En_User_Level.Engeener) { level = Navigator.User_Level.ENGINEER; } else if(user_level == En_User_Level.Master) { level = Navigator.User_Level.MASTER; } else { level = Navigator.User_Level.OPERATOR; } navi.Set_User_Level(level); Screen_Parameter.Set_User_Level(level); Screen_Maintenance.Set_User_Level(level); Screen_Recipe.Set_User_Level(level); Screen_Recipe_Main.Set_User_Level(level); Screen_Recipe_Type.Set_User_Level(level); Screen_Parameter_Position.Set_User_Level(level); Screen_Parameter_System.Set_User_Level(level); Screen_Maintenance_User_Info.Set_User_Level(level); Screen_Maintenance_Control.Set_User_Level(level); } public void Dispose_Child_Form() { Screen_Main.Dispose(); Screen_Recipe.Dispose(); Screen_Recipe_Main.Dispose(); Screen_Recipe_Type.Dispose(); Screen_Parameter.Dispose(); Screen_Parameter_Position.Dispose(); Screen_Parameter_System.Dispose(); Screen_Parameter_Alarm_Setting.Dispose(); Screen_Maintenance.Dispose(); Screen_Maintenance_Initialize.Dispose(); Screen_Maintenance_IO.Dispose(); Screen_Maintenance_Analog.Dispose(); Screen_Maintenance_Laser.Dispose(); Screen_Maintenance_Control.Dispose(); Screen_Maintenance_User_Info.Dispose(); Screen_Log.Dispose(); Screen_Alarm_List.Dispose(); Screen_Vision_Test.Dispose(); Screen_Sequence_Viewer.Dispose(); Screen_Scanner_View.Dispose(); Screen_Login.Dispose(); interlock_view.Dispose(); } #endregion private void btn_Log_Out_Click(object sender, EventArgs e) { _equip.User.Reset(); Set_User_Level(En_User_Level.Operator); Screen_Login.Show(); } private void lb_Cim_Mode_Click(object sender, EventArgs e) { if(_equip.cim_mode == En_Cim_Mode.Online) { _equip.Set_Cim_Mode(En_Cim_Mode.Offline); } else { _equip.Set_Cim_Mode(En_Cim_Mode.Online); } } } }