FrmEquipBase.cs 6.0 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using UserFromControl;

namespace OnlineStore.AutoCountClient
{
    internal partial class FrmEquipBase : FrmBase
    {
     //   internal static readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        internal FrmEquipBase()
        {
            InitializeComponent();
        }

        protected EquipBase equipBase = null;

        protected  List<Control> doList = new List<Control>();
        protected Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>();
        protected Dictionary<string, IOTextControl> DOControlList = new Dictionary<string, IOTextControl>();
        protected void ReadIOList()
        {
            foreach (string key in DIControlList.Keys)
            {
                IOTextControl control = DIControlList[key];
                int iov = (int)IOManager.IOValue(key, equipBase.DeviceID);
                if (iov != control.IOValue)
                {
                    control.IOValue = iov;
                    control.ShowData();
                }
            }
            foreach (string key in this.DOControlList.Keys)
            {
                IOTextControl control = DOControlList[key];
                int iov = (int)IOManager.DOValue(key, equipBase.DeviceID);
                if (iov != control.IOValue)
                {
                    control.IOValue = iov;
                    control.ShowData();
                }
            }

        }
        protected   void ReadBtnDO()
        {
            foreach (Control labl in doList)
            {
                IO_VALUE value = IOManager.DOValue(labl.Name);
                if (value.Equals(IO_VALUE.HIGH))
                {
                    labl.BackColor = Color.Lime;
                }
                else 
                //else if (value.Equals(IO_VALUE.LOW))
                {
                    labl.BackColor = labl.Parent.BackColor;
                }
            }
        }

        protected void BtnMove(Button btn, string defaultText, string targetText, string ioHighType)
        {
            LogUtil.info(equipBase.Name + "点击【" + btn.Text + "】 ");
            if (btn.Text.Equals(defaultText))
            {
                equipBase.IOMove(ioHighType, IO_VALUE.HIGH);
                btn.Text = targetText;
                btn.BackColor = Color.Aqua;
            }
            else
            {
                equipBase.IOMove(ioHighType, IO_VALUE.LOW);
                btn.Text = defaultText;
                btn.BackColor = Color.White;
            }
        }

        protected void BtnMove(Button btn, string defaultText, string targetText, string ioLowType, string ioHighType)
        {
            LogUtil.info(equipBase.Name + "点击【" + btn.Text + "】 ");
            if (btn.Text.Equals(defaultText))
            {
                equipBase.CylinderMove(null, ioLowType, ioHighType);
                btn.Text = targetText;
                btn.BackColor = Color.Aqua;
            }
            else
            {
                equipBase.CylinderMove(null, ioHighType, ioLowType);
                btn.Text = defaultText;
                btn.BackColor = Color.SkyBlue;
            }
        }
        protected void StartDebug(Button button)
        {
            LogUtil.info(equipBase.Name + "点击: " + button.Text);
            button.Enabled = false;
            try
            {
                if (equipBase.runStatus.Equals(RobotRunStatus.Wait))
            {
                bool result = equipBase.StartRun();
                if (result)
                {
                    FormStatus(true);
                }
            }
            else
            {
                equipBase.Reset();
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("StartDebug 出错:", ex);
            }
            button.Enabled = true;
        }
        protected void StopRun(Button button)
        {
            LogUtil.info(equipBase.Name + "点击: " + button.Text);
            button.Enabled = false;
            try
            {
                if (equipBase.runStatus <= RobotRunStatus.Wait)
                {
                    MessageBox.Show(equipBase.Name + "请先启动设备");
                }
                else
                { 
                    equipBase.StopRun();
                    FormStatus(false); 
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("StopRun 出错:", ex);
            }
            button.Enabled = true ;
        }
      
        internal virtual void FormStatus(bool status)
        {
        }

        private void FrmEquipBase_Load(object sender, EventArgs e)
        {
            FormStatus(false);
        }
      
        protected void LoadDOBtn(GroupBox group)
        {
            doList = new List<Control>();
            foreach (Control c in group.Controls)
            {
                if (c is Button)
                {
                    if (equipBase.baseConfig.DOList.ContainsKey(c.Name))
                    {
                        doList.Add(c);
                    }
                }
            }
        }
        protected void DoBtnClick(object sender)
        {
            Control c = (Control)sender;
            string ioType = c.Name;
            IO_VALUE value = equipBase.DOValue(c.Name);
            if (value.Equals(IO_VALUE.HIGH))
            {
                equipBase.IOMove(ioType, IO_VALUE.LOW);
                c.BackColor = c.Parent.BackColor;
           
            }
            else
            {
                equipBase.IOMove(ioType, IO_VALUE.HIGH);
                c.BackColor = Color.LawnGreen;
            }
        }
    }
}