천호석
2022-12-15 ac0db02b48098c7cf0bc31403224ecd0b55cb6b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using DIT.SharedMemory;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
 
namespace SHARP_CLAS_UI
{
    public partial class Form_Alarm_List : Form
    {
        Form_Frame _Parent;
 
        List<Alarm_Occurred> AlarmList = new List<Alarm_Occurred>();
 
        public Form_Alarm_List(Form_Frame _Parent)
        {
            InitializeComponent();
            this._Parent = _Parent;
            Init_Data_Grid_View();
        }
 
        private void Init_Data_Grid_View()
        {
            //Datagridview Double Buffer 사용.
            Type dgvType = dgv_Alarm_list.GetType();
            PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                  BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(dgv_Alarm_list, true, null);
            //================================
 
            int i = 0;
            foreach (DataGridViewColumn dgvc in dgv_Alarm_list.Columns)
            {
                if (i == 0)
                {
                    dgvc.Width = 160;
                    dgvc.DefaultCellStyle.Format = "yyyy/MM/dd HH:mm:ss.fff";
                }
                else if (i == 1)
                    dgvc.Width = 300;
                else if (i == 2)
                    dgvc.Width = 200;
                else if (i == 3)
                    dgvc.Width = 100;
 
                i++;
            }
 
            foreach (DataGridViewColumn column in dgv_Alarm_list.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
        }
 
        private void Form_Alarm_List_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }
 
        public bool Add_Alarm(Alarm_Occurred Occurred_Alarm)
        {
            if(_Parent._equip.cim_mode == En_Cim_Mode.Online)
            {
                if (Occurred_Alarm.Code == En_Alarm_List.AL_0010_SAFETY_DOOR_2_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0011_SAFETY_DOOR_3_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0012_SAFETY_DOOR_4_OPEN ||
                    Occurred_Alarm.Code == En_Alarm_List.AL_0013_SAFETY_DOOR_5_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0014_SAFETY_DOOR_6_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0015_SAFETY_DOOR_7_OPEN ||
                    Occurred_Alarm.Code == En_Alarm_List.AL_0016_SAFETY_DOOR_8_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0017_SAFETY_DOOR_9_OPEN || Occurred_Alarm.Code == En_Alarm_List.AL_0018_SAFETY_DOOR_10_OPEN)
                {
 
                }
                else
                {
                    if (!_Parent._equip.cim_client.Send_Alarm("E12345678", true, Occurred_Alarm))
                    {
                        return false;
                    }
                }
            }
 
            AlarmList.Add(Occurred_Alarm);
            dgv_Alarm_list.Rows.Add(Occurred_Alarm.Time, Occurred_Alarm.Code, Occurred_Alarm.Description, Occurred_Alarm.Heavy);
            return true;
        }
 
        private void btn_Alarm_Clear_Click(object sender, EventArgs e)
        {
            if(AlarmList.Count > 0)
            {
                if (_Parent._equip.cim_mode == En_Cim_Mode.Online)
                {
                    foreach(Alarm_Occurred Occurred_Alarm in AlarmList)
                    {
                        _Parent._equip.cim_client.Send_Alarm("E12345678", false, Occurred_Alarm);
                    }
 
                    if (Alarm_Manager.Instance.Alarm_Status == En_Alarm_Status.HEAVY)
                        _Parent._equip.Set_Equipment_Status_Code(En_Equipment_Status_Code.W4);
                }
            }
 
            Alarm_Manager.Instance.Alarm_Clear();
            AlarmList.Clear();
            dgv_Alarm_list.Rows.Clear();
            lb_Description.Text = string.Empty;
        }
 
        private void btn_Buzzer_Stop_Click(object sender, EventArgs e)
        {
            if (_Parent._equip.cim_mode == En_Cim_Mode.Online)
            {
                if (AlarmList.Exists(x => x.Heavy == true))
                {
                    _Parent._equip.Set_Equipment_Status_Code(En_Equipment_Status_Code.T3);
                }
            }
 
            _Parent._equip.Board_Control.IO_manager.Set_Output(OutputData.Buzzer_1_Relay, false);
        }
 
        private void dgv_Alarm_list_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_Alarm_list.CurrentRow != null && dgv_Alarm_list.CurrentRow.Selected)
            {
                lb_Description.Text = (string)dgv_Alarm_list.CurrentRow.Cells[2].Value;
            }
            else
            {
                lb_Description.Text = string.Empty;
            }
        }
    }
}