using SA_LTT; using SA_LTT_UI.Screen; using SA_LTT_UI.Viewer; using System; using System.Drawing; using System.Windows.Forms; namespace SA_LTT_UI { delegate void UIUpdateDelegate(); delegate void AlarmOccurred(SA_LTT.Alarm.Alarm occurredAlarm); delegate void AlarmCleared(); public partial class MainFrame : Form { public Equipment equipment; public ScreenMain screenMain; public ScreenRecipe screenRecipe; public ScreenParameter screenParameter; public ScreenAlarmSetting screenAlarmSetting; public ScreenLog screenLog; public ScreenMaintenance screenMaintenance; public ScreenIO screenIO; public ScreenSetting screenSetting; public ScreenMotionMaintenance screenMotionMaintenance; public ScreenLaser screenLaser; public EquipmentInfoViewer equipmentInfoViewer; public AlarmViewer alarmViewer; public LogInViewer loginViewer; public MaintenanceViewer maintenanceViewer; public ScannerViewer scannerViewer; public AttenuatorViewer attenuatorViewer; public RobotViewer robotViewer; public WaferInfoViewer waferInfoViewer; public PreAlignViwer preAignViewer; public PiLaserViewer piLaserViewer; public ChamberViewer chamberViewer; public EnergyMeterViewer powermeterViewer; public ChillerViewer chillerViewer; public EnergyDropCheckViewer energyDropCheckViewer; public AttenuatorCalViewer attenuatorCalViewer; public SequenceViewer sequenceViewer; public VisionViewer visionViewer; public bool m_bSimulationMode = false; /// /// 우측 상단 닫기 버튼 비활성화. /// protected override CreateParams CreateParams { get { CreateParams MyCp = base.CreateParams; MyCp.ClassStyle = MyCp.ClassStyle | 0x200; MyCp.ExStyle |= 0x02000000; return MyCp; } } public MainFrame() { InitializeComponent(); equipment = new Equipment(); InitializeScreen(); equipment.UserChanged += Equipment_UserChanged; equipment.alarmManager.Occurred += AlarmManager_Occurred; equipment.alarmManager.Cleared += AlarmManager_Cleared; CheckOccurredAlarmList(); timer.Tick += Timer_Tick; timer.Start(); } private void CheckOccurredAlarmList() { foreach(SA_LTT.Alarm.Alarm occurredAlarm in equipment.alarmManager.OccurredAlarms) { ListViewItem listViewItem = new ListViewItem(occurredAlarm.Code.ToString()); listViewItem.SubItems.Add(occurredAlarm.Description); listViewItem.SubItems.Add(occurredAlarm.Level.ToString()); lv_OccurredAlarmList.Items.Add(listViewItem); } } private void AlarmManager_Cleared() { lv_OccurredAlarmList.Items.Clear(); } private void AlarmManager_Occurred(SA_LTT.Alarm.Alarm occurredAlarm) { if (InvokeRequired) { BeginInvoke(new AlarmOccurred(AlarmManager_Occurred), occurredAlarm); return; } else { ListViewItem listViewItem = new ListViewItem(occurredAlarm.Code.ToString()); listViewItem.SubItems.Add(occurredAlarm.Description); listViewItem.SubItems.Add(occurredAlarm.Level.ToString()); lv_OccurredAlarmList.Items.Add(listViewItem); //알람 발생시 창 띄움. alarmViewer.Show(); alarmViewer.WindowState = FormWindowState.Normal; alarmViewer.TopMost = true; alarmViewer.TopMost = false; } } private void Equipment_UserChanged(SA_LTT.UserInfo.User changedUser) { lb_UserId.Text = changedUser.Name; lb_UserLevel.Text = changedUser.Level.ToString(); rb_Main.Checked = true; } private void Timer_Tick(object sender, EventArgs e) { DateTime currentTime = DateTime.Now; lb_Date.Text = currentTime.ToString("yyyy-MM-dd"); lb_Time.Text = currentTime.ToString("HH:mm:ss"); UpdateTowerLamp(); UpdateAlarmViwer(); lb_EquipmentMode.Text = equipment.EquipmentMode.ToString(); lb_EquipmentStatus.Text = equipment.EquipmentStatus.ToString(); lb_ProcessStatus.Text = equipment.ProcessStatus.ToString(); lb_EquipmentMode.BackColor = equipment.EquipmentMode == EquipmentMode.Teach ? Color.Red : Color.LightGray; lb_EquipmentStatus.BackColor = equipment.EquipmentStatus == EquipmentStatus.Fault ? Color.Red : Color.White; lb_EnergyDropCheckTime.BackColor = equipment.IsEnergyDropCheckTime() ? Color.Lime : Color.Green; lb_AttenuatorCalTime.BackColor = equipment.IsAttenuatorCalTime() ? Color.Lime : Color.Green; } private void InitializeScreen() { pnl_Main.Controls.Clear(); screenMain = new ScreenMain(this); screenRecipe = new ScreenRecipe(this); screenParameter = new ScreenParameter(this); screenAlarmSetting = new ScreenAlarmSetting(this); screenLog = new ScreenLog(this); screenSetting = new ScreenSetting(this); screenIO = new ScreenIO(this); screenMotionMaintenance = new ScreenMotionMaintenance(this); screenMaintenance = new ScreenMaintenance(this); screenLaser = new ScreenLaser(this); equipmentInfoViewer = new EquipmentInfoViewer(this); alarmViewer = new AlarmViewer(this); scannerViewer = new ScannerViewer(this); attenuatorViewer = new AttenuatorViewer(this); loginViewer = new LogInViewer(this); robotViewer = new RobotViewer(this); preAignViewer = new PreAlignViwer(this); maintenanceViewer = new MaintenanceViewer(); waferInfoViewer = new WaferInfoViewer(this); piLaserViewer = new PiLaserViewer(this); chamberViewer = new ChamberViewer(this); powermeterViewer = new EnergyMeterViewer(this); chillerViewer = new ChillerViewer(this); energyDropCheckViewer = new EnergyDropCheckViewer(this); attenuatorCalViewer = new AttenuatorCalViewer(this); sequenceViewer = new SequenceViewer(this); visionViewer = new VisionViewer(this); pnl_Main.Controls.Add(screenMain); //loginViewer.Show(); } private void btn_AlarmViewer_Click(object sender, EventArgs e) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); alarmViewer.Show(); alarmViewer.WindowState = FormWindowState.Normal; alarmViewer.TopMost = true; alarmViewer.TopMost = false; } private void MainFrame_FormClosing(object sender, FormClosingEventArgs e) { equipment.Dispose(); } private void btn_Close_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("종료 하시겠습니까?", "Close box", MessageBoxButtons.OKCancel); if(result == DialogResult.OK) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); this.Close(); } } private void rb_CheckedChanged(object sender, EventArgs e) { pnl_Main.Controls.Clear(); if (rb_Main.Checked) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); pnl_Main.Controls.Add(screenMain); } else if(rb_Reicipe.Checked) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); pnl_Main.Controls.Add(screenRecipe); } else if(rb_AlarmSetting.Checked) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); pnl_Main.Controls.Add(screenAlarmSetting); } else if(rb_Log.Checked) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); pnl_Main.Controls.Add(screenLog); } else if (rb_Maintenance.Checked) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); pnl_Main.Controls.Add(screenMaintenance); } } private void btn_LogOut_Click(object sender, EventArgs e) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); equipment.LogOut(); loginViewer.Show(); } private void btn_BuzzerStop_Click(object sender, EventArgs e) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); equipment.BuzzerStop(); } private void btn_LampOnOff_Click(object sender, EventArgs e) { if(equipment.IsLampOn) { EquipmentLogManager.Instance.WriteButtonLog($"MainFrame : Lamp off"); equipment.LampOff(); } else { EquipmentLogManager.Instance.WriteButtonLog($"MainFrame : Lamp on"); equipment.LampOn(); } } private void UpdateTowerLamp() { lb_LampRed.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_RED] ? Color.Red : Color.DarkRed; lb_LampYellow.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW] ? Color.Yellow : Color.Olive; lb_LampGreen.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_GREEN] ? Color.Lime : Color.Green; btn_LampOnOff.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] ? Color.Olive : Color.Yellow; } private void UpdateAlarmViwer() { if (equipment.alarmManager.OccurredAlarms.Count > 0) { btn_AlarmViewer.BackColor = Color.Red; } else { btn_AlarmViewer.BackColor = Color.White; } } private void pb_Logo_Click(object sender, EventArgs e) { equipmentInfoViewer.Show(); equipmentInfoViewer.WindowState = FormWindowState.Normal; equipmentInfoViewer.TopMost = true; equipmentInfoViewer.TopMost = false; } } }