FrmDoubleLine.cs 11.7 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DoubleLine
{
    public partial class FrmDoubleLine : Form
    {
        public FrmDoubleLine()
        {
            InitializeComponent();
        }

        private void FrmDoubleLine_Load(object sender, EventArgs e)
        {
            Common.IO_Info[0].Box.DI_Changed_Event += DI1_Changed;
            Common.IO_Info[0].Box.DO_Changed_Event += DO1_Changed;
            Common.IO_Info[1].Box.DI_Changed_Event += DI2_Changed;
            Common.IO_Info[1].Box.DO_Changed_Event += DO2_Changed;
            Common.IO_Info[2].Box.DI_Changed_Event += DI3_Changed;
            Common.IO_Info[2].Box.DO_Changed_Event += DO3_Changed;
        }

        private void FrmDoubleLine_FormClosing(object sender, FormClosingEventArgs e)
        {
            Common.IO_Info[0].Box.DI_Changed_Event -= DI1_Changed;
            Common.IO_Info[0].Box.DO_Changed_Event -= DO1_Changed;
            Common.IO_Info[1].Box.DI_Changed_Event -= DI2_Changed;
            Common.IO_Info[1].Box.DO_Changed_Event -= DO2_Changed;
            Common.IO_Info[2].Box.DI_Changed_Event -= DI3_Changed;
            Common.IO_Info[2].Box.DO_Changed_Event -= DO3_Changed;
        }

        private void DI1_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[0].DI[i].Sta == sta[i]) continue;
                if (i < 4)
                    ctl = tabPage1;
                else if (i < 8)
                    ctl = groupBox1;
                else if (i < 14)
                    ctl = groupBox6;
                else if (i < 16)
                    ctl = groupBox2;

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DI1_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DI1_" + i].BackColor = Color.LightGray;
                Common.IO_Info[0].DI[i].Sta = sta[i];
            }
        }

        private void DI2_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[1].DI[i].Sta == sta[i]) continue;
                switch (i)
                {
                    case 0:
                    case 1:
                        ctl = groupBox2;
                        break;
                    case 2:
                    case 3:
                    case 5:
                    case 8:
                    case 9:
                        ctl = groupBox4;
                        break;
                    case 4:
                    case 6:
                    case 7:
                    case 10:
                    case 11:
                        ctl = groupBox5;
                        break;
                    case 12:
                    case 13:
                        ctl = groupBox3;
                        break;
                    case 14:
                    case 15:
                        ctl = groupBox7;
                        break;
                }

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DI2_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DI2_" + i].BackColor = Color.LightGray;
                Common.IO_Info[1].DI[i].Sta = sta[i];
            }
        }

        private void DI3_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[2].DI[i].Sta == sta[i]) continue;
                switch (i)
                {
                    case 0:
                    case 1:
                        ctl = groupBox3;
                        break;
                    case 2:
                    case 3:
                        ctl = groupBox7;
                        break;
                }

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DI3_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DI3_" + i].BackColor = Color.LightGray;
                Common.IO_Info[2].DI[i].Sta = sta[i];
            }
        }

        private void DO1_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[0].DO[i].Sta == sta[i]) continue;
                switch (i)
                {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                        ctl = tabPage1;
                        break;
                    case 4:
                    case 5:
                    case 6:
                    case 13:
                    case 14:
                        ctl = groupBox1;
                        break;
                    case 7:
                    case 8:
                    case 9:
                    case 10:
                    case 11:
                    case 12:
                        ctl = groupBox6;
                        break;
                }

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DO1_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DO1_" + i].BackColor = Color.Transparent;

                Common.IO_Info[0].DO[i].Sta = sta[i];
            }
        }

        private void DO2_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[1].DO[i].Sta == sta[i]) continue;
                switch (i)
                {
                    case 0:
                    case 1:
                        ctl = groupBox6;
                        break;
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                        ctl = groupBox2;
                        break;
                    case 8:
                    case 9:
                    case 10:
                    case 11:
                        ctl = groupBox4;
                        break;
                    case 12:
                    case 13:
                        ctl = groupBox5;
                        break;
                }

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DO2_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DO2_" + i].BackColor = Color.Transparent;

                Common.IO_Info[1].DO[i].Sta = sta[i];
            }
        }

        private void DO3_Changed(Asa.IOModule.AIOBOX box, Asa.IOModule.Box_Sta[] sta)
        {
            Control ctl = this;
            for (int i = 0; i < sta.Length; i++)
            {
                if (Common.IO_Info[2].DO[i].Sta == sta[i]) continue;
                switch (i)
                {
                    case 0:
                    case 1:
                    case 4:
                    case 5:
                        ctl = groupBox4;
                        break;
                    case 2:
                    case 3:
                    case 6:
                    case 7:
                        ctl = groupBox5;
                        break;
                    case 8:
                    case 9:
                        ctl = groupBox3;
                        break;
                    case 10:
                    case 11:
                    case 12:
                    case 13:
                    case 18:
                    case 19:
                        ctl = groupBox7;
                        break;
                    case 14:
                    case 15:
                    case 16:
                    case 17:
                        ctl = groupBox3;
                        break;
                }

                if (sta[i] == Asa.IOModule.Box_Sta.On)
                    ctl.Controls["DO3_" + i].BackColor = Color.Lime;
                else
                    ctl.Controls["DO3_" + i].BackColor = Color.Transparent;

                Common.IO_Info[2].DO[i].Sta = sta[i];
            }
        }

        private void DO1_Click(object sender, EventArgs e)
        {
            if (!Common.IO_Info[0].Box.IsConn) return;

            int add = Convert.ToInt32((sender as Control).Name.Substring(4));
            if (add == 4)
                Common.IO_Info[0].Box.WriteDO(5, Asa.IOModule.Box_Sta.Off);
            else if (add == 5)
                Common.IO_Info[0].Box.WriteDO(4, Asa.IOModule.Box_Sta.Off);
            else if (add == 13)
                Common.IO_Info[0].Box.WriteDO(14, Asa.IOModule.Box_Sta.Off);
            else if (add == 14)
                Common.IO_Info[0].Box.WriteDO(13, Asa.IOModule.Box_Sta.Off);

            Asa.IOModule.Box_Sta sta = Common.IO_Info[0].Box.ReadDO(add);
            sta = Common.IO_Info[0].Box.ReverseStatus(sta);
            Common.IO_Info[0].Box.WriteDO(add, sta);
        }

        private void DO2_Click(object sender, EventArgs e)
        {
            if (!Common.IO_Info[1].Box.IsConn) return;

            int add = Convert.ToInt32((sender as Control).Name.Substring(4));
            if (add == 2)
                Common.IO_Info[1].Box.WriteDO(3, Asa.IOModule.Box_Sta.Off);
            else if (add == 3)
                Common.IO_Info[1].Box.WriteDO(2, Asa.IOModule.Box_Sta.Off);
            else if (add == 4)
                Common.IO_Info[1].Box.WriteDO(5, Asa.IOModule.Box_Sta.Off);
            else if (add == 5)
                Common.IO_Info[1].Box.WriteDO(4, Asa.IOModule.Box_Sta.Off);

            Asa.IOModule.Box_Sta sta = Common.IO_Info[1].Box.ReadDO(add);
            sta = Common.IO_Info[1].Box.ReverseStatus(sta);
            Common.IO_Info[1].Box.WriteDO(add, sta);
        }

        private void DO3_Click(object sender, EventArgs e)
        {
            if (!Common.IO_Info[2].Box.IsConn) return;

            int add = Convert.ToInt32((sender as Control).Name.Substring(4));
            if (add == 0)
                Common.IO_Info[2].Box.WriteDO(1, Asa.IOModule.Box_Sta.Off);
            else if (add == 1)
                Common.IO_Info[2].Box.WriteDO(0, Asa.IOModule.Box_Sta.Off);
            else if (add == 2)
                Common.IO_Info[2].Box.WriteDO(3, Asa.IOModule.Box_Sta.Off);
            else if (add == 3)
                Common.IO_Info[2].Box.WriteDO(2, Asa.IOModule.Box_Sta.Off);
            else if (add == 4)
                Common.IO_Info[2].Box.WriteDO(5, Asa.IOModule.Box_Sta.Off);
            else if (add == 5)
                Common.IO_Info[2].Box.WriteDO(4, Asa.IOModule.Box_Sta.Off);
            else if (add == 6)
                Common.IO_Info[2].Box.WriteDO(7, Asa.IOModule.Box_Sta.Off);
            else if (add == 7)
                Common.IO_Info[2].Box.WriteDO(6, Asa.IOModule.Box_Sta.Off);
            else if (add == 8)
                Common.IO_Info[2].Box.WriteDO(9, Asa.IOModule.Box_Sta.Off);
            else if (add == 9)
                Common.IO_Info[2].Box.WriteDO(8, Asa.IOModule.Box_Sta.Off);
            else if (add == 14)
                Common.IO_Info[2].Box.WriteDO(15, Asa.IOModule.Box_Sta.Off);
            else if (add == 15)
                Common.IO_Info[2].Box.WriteDO(14, Asa.IOModule.Box_Sta.Off);

            Asa.IOModule.Box_Sta sta = Common.IO_Info[2].Box.ReadDO(add);
            sta = Common.IO_Info[2].Box.ReverseStatus(sta);
            Common.IO_Info[2].Box.WriteDO(add, sta);
        }


    }
}