using SHARP_CLAS_UI.Screen; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; using System.Windows.Threading; namespace SHARP_CLAS_UI.WPFControl { /// /// Main_UserControl.xaml에 대한 상호 작용 논리 /// public partial class Main_UserControl : UserControl { Form_Frame _Parent; SolidColorBrush door_open_color; SolidColorBrush door_close_color; SolidColorBrush exist; SolidColorBrush vacuum_on; SolidColorBrush vacuum_off; SolidColorBrush alarmColor; public Main_UserControl(Form_Frame _Parent) { InitializeComponent(); this._Parent = _Parent; door_open_color = new SolidColorBrush(Colors.Red); door_close_color = new SolidColorBrush(Colors.Lime); alarmColor = new SolidColorBrush(Colors.Red); exist = new SolidColorBrush(Colors.LightGreen); vacuum_on = new SolidColorBrush(Colors.Lime); vacuum_off = new SolidColorBrush(Colors.Transparent); } public bool Get_Dispatcher_Access() { return Dispatcher.CheckAccess(); } public void Set_LD_Tray_X_Position(double position) { position *= 0.22; LD_Tray_TR_X.Margin = new Thickness(0, position, 0, 0); } public void Set_LD_Handler_1_X_Position(double position) { position *= 0.42; LD_Handler_1_X.Margin = new Thickness(0, -position, 0, 0); LD_Handler_1_X_1.Margin = new Thickness(0, -position, 0, 0); } public void Set_LD_Handler_1_Y_Position(double position) { position *= 0.46; LD_Handler_1_Y.Margin = new Thickness(-position, 0, 0, 0); } public void Set_LD_Handler_2_X_Position(double position) { position *= 0.37; LD_Handler_2_X.Margin = new Thickness(0, -position, 0, 0); LD_Handler_2_X_1.Margin = new Thickness(0, -position, 0, 0); } public void Set_LD_Handler_2_Y_Position(double position) { position *= 0.2; LD_Handler_2_Y.Margin = new Thickness(position, 0, 0, 0); } public void Set_Ablation_Stage_1_Y_Position(double position) { position *= 0.5; Stage_Y_1.Margin = new Thickness(-position, 0, 0, 0); } public void Set_Ablation_Stage_2_Y_Position(double position) { position *= 0.5; Stage_Y_2.Margin = new Thickness(-position, 0, 0, 0); } public void Set_Fine_Align_Position(double position) { position *= 0.18; Fine_Align.Margin = new Thickness(0, 0, 0, position); } public void Set_Ablation_Position(double position) { position *= 0.25; Ablation.Margin = new Thickness(0, 0, 0, position); } public void Set_Plasma_Position(double position) { position *= 0.25; Plasma_X.Margin = new Thickness(0, 0, 0, position); } public void Set_ULD_Handler_2_X_Position(double position) { position *= 0.37; ULD_Handler_2_X.Margin = new Thickness(0, -position, 0, 0); ULD_Handler_2_X_1.Margin = new Thickness(0, -position, 0, 0); } public void Set_ULD_Handler_2_Y_Position(double position) { position *= 0.425; ULD_Handler_2_Y.Margin = new Thickness(-position, 0, 0, 0); } public void Set_ULD_Handler_1_X_Position(double position) { position *= 0.44; ULD_Handler_1_X.Margin = new Thickness(0, -position, 0, 0); ULD_Handler_1_X_1.Margin = new Thickness(0, -position, 0, 0); } public void Set_ULD_Handler_1_Y_Position(double position) { position *= 0.263; ULD_Handler_1_Y.Margin = new Thickness(position, 0, 0, 0); ULD_Handler_1_Y_1.Margin = new Thickness(position, 0, 0, 0); } public void Set_ULD_Tray_X_Position(double position) { position *= 0.225; ULD_Tray_TR_X.Margin = new Thickness(0, position, 0, 0); } public void Set_Door_1_Open(bool open) { Door_1.Fill = open ? door_open_color : door_close_color; } public void Set_Door_2_Open(bool open) { Door_2.Fill = open ? door_open_color : door_close_color; } public void Set_Door_3_Open(bool open) { Door_3.Fill = open ? door_open_color : door_close_color; } public void Set_Door_4_Open(bool open) { Door_4.Fill = open ? door_open_color : door_close_color; } public void Set_Door_5_Open(bool open) { Door_5.Fill = open ? door_open_color : door_close_color; } public void Set_Door_6_Open(bool open) { Door_6.Fill = open ? door_open_color : door_close_color; } public void Set_Door_7_Open(bool open) { Door_7.Fill = open ? door_open_color : door_close_color; } public void Set_Door_8_Open(bool open) { Door_8.Fill = open ? door_open_color : door_close_color; } public void Set_Door_9_Open(bool open) { Door_9.Fill = open ? door_open_color : door_close_color; } public void Set_Door_10_Open(bool open) { Door_10.Fill = open ? door_open_color : door_close_color; } public void Set_GPS_Door_Open(bool open) { GPS_Door.Fill = open ? door_open_color : door_close_color; } public void Set_UPS_Door_Open(bool open) { UPS_Door.Fill = open ? door_open_color : door_close_color; } public void Set_Auto_Mode(bool auto) { Auto_Mode.Fill = auto ? door_close_color : door_open_color; } private void Door_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { Rectangle rect = (Rectangle)sender; switch(rect.Name) { case "Door_1": { if(!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_1)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 1 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_1, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_1)); break; } case "Door_2": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_2)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 2 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_2, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_2)); break; } case "Door_3": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_3)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 3 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_3, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_3)); break; } case "Door_4": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_4)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 4 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_4, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_4)); break; } case "Door_5": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_5)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 5 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_5, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_5)); break; } case "Door_6": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_6)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 6 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_6, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_6)); break; } case "Door_7": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_7)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 7 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_7, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_7)); break; } case "Door_8": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_8)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 8 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_8, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_8)); break; } case "Door_9": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_9)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 9 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_9, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_9)); break; } case "Door_10": { if (!_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_10)) { if (_Parent._equip.Auto_Mode && !_Parent._equip.Teach_Mode) { Interlock_Manager.Add_Interlock_Msg("Door 10 can't open.", "You can't open door in Auto mode."); return; } } _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Safety_Door_Open_10, !_Parent.sm.Get_Bit(Output_Memory_Address.Safety_Door_Open_10)); break; } } } public void Set_LD_Tray_In_Tray_Empty(bool empty) { LD_Tray_In_Tray.Fill = empty ? vacuum_off : exist; } public void Set_LD_Tray_Empty_Tray_Empty(bool empty) { LD_Tray_Empty_Tray.Fill = empty ? vacuum_off : exist; } public void Set_ULD_Tray_Empty_Tray_Empty(bool empty) { ULD_Tray_Empty_Tray.Fill = empty ? vacuum_off : exist; } public void Set_ULD_Tray_Ng_Tray_Empty(bool empty) { ULD_Tray_Ng_Tray.Fill = empty ? vacuum_off : exist; } public void Set_ULD_Tray_Ok_Tray_Empty(bool empty) { ULD_Tray_Ok_Tray.Fill = empty ? vacuum_off : exist; } public void Set_LD_Tray_TR_Vacuum(bool picker, bool alarm = false) { LD_Tray_TR.Fill = alarm ? alarmColor : picker ? vacuum_on : vacuum_off; } public void Set_LD_Handler_1_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { LD_Handler_1_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; LD_Handler_1_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_Pre_Align_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { Pre_Align_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; Pre_Align_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_LD_Reverse_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { LD_Reverse_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; LD_Reverse_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_LD_Handler_2_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { LD_Handler_2_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; LD_Handler_2_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_Ablation_Stage_1_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { Ablation_Stage_1_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; Ablation_Stage_1_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_Ablation_Stage_2_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { Ablation_Stage_2_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; Ablation_Stage_2_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_AOI_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { AOI_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; AOI_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_ULD_Reverse_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { ULD_Reverse_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; ULD_Reverse_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_ULD_Handler_2_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { ULD_Handler_2_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; ULD_Handler_2_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_ULD_Handler_1_Vacuum(bool picker_1, bool picker_2, bool alarm_1 = false, bool alarm_2 = false) { ULD_Handler_1_1.Fill = alarm_1 ? alarmColor : picker_1 ? vacuum_on : vacuum_off; ULD_Handler_1_2.Fill = alarm_2 ? alarmColor : picker_2 ? vacuum_on : vacuum_off; } public void Set_ULD_Tray_TR_Vacuum(bool picker, bool alarm = false) { ULD_Tray_TR.Fill = alarm ? alarmColor : picker ? vacuum_on : vacuum_off; } public void Set_Laser_On(bool onoff) { Laser.Fill = onoff ? vacuum_on : vacuum_off; } public void Set_Plasma_On(bool onoff) { Plasma.Fill = onoff ? vacuum_on : vacuum_off; } } }