AxisJogControl.cs 13.9 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;

namespace OnlineStore.ACSingleStore
{

    public partial class AxisJogControl : UserControl
    { 
        private ConfigMoveAxis middle = null;
        private ConfigMoveAxis updown = null; 
        private ConfigMoveAxis inout = null;
        private ConfigMoveAxis comp = null; 
        private BoxBean boxBean; 

        public AxisJogControl( )
        {
          
            InitializeComponent();
           
        }
        public void SetBoxBean(BoxBean boxBean)
        {
            this.boxBean = boxBean;
            middle = boxBean.Config.Middle_Axis;
            updown = boxBean.Config.UpDown_Axis;
            //compress_Slv = boxBean.Config.CompressAxis_Slv;
            comp = boxBean.Config.Comp_Axis;
            inout = boxBean.Config.InOut_Axis;
            this.Text = boxBean.Name + "_轴点动调试";

            AxisManager.instance.ClearSpeed();
            txtMiddleSpeed.Text = (middle.TargetSpeed / 5).ToString();
            txtInOutSpeed.Text = (inout.TargetSpeed / 5).ToString();
            txtUpDownSpeed.Text = (updown.TargetSpeed / 5).ToString();
            txtComSpeed.Text = (comp.TargetSpeed / 5).ToString();
            timer1.Start();
        }
        private void AxisMove(ConfigMoveAxis axis, int speed)
        {
            LogUtil.debug( "点动:deviceName=" + axis.DeviceName + ",axis=" + axis.GetAxisValue() + ",speed=" + speed);
            AxisManager.instance.SpeedMove(axis.DeviceName, axis.GetAxisValue(), speed);

        }
        private void FrmAxisDebug_Load(object sender, EventArgs e)
        {
        }
        /// <summary>
        /// 判断进出轴是否在P1点
        /// </summary> 
        private bool InOutIsIsP1()
        {
            int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition);
            //if (InOutDefaultPosition > 3000 || InOutDefaultPosition.Equals(0))
            //{
            //    InOutDefaultPosition = 3000;
            //}
            int currValue = AxisManager.instance.GetActualtPosition(inout.DeviceName, inout.GetAxisValue()); 
            if (currValue <= InOutDefaultPosition)
            {
                return true;
            }
            MessageBox.Show("叉子不在待机位,请先将叉子退回待机位(" + InOutDefaultPosition + ")", "警告(叉子在待机位时,才能移动升降轴和旋转轴) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return false;
        }
        private void btnMiddleMove_MouseDown(object sender, MouseEventArgs e)
        {
            if (!InOutIsIsP1())
            {
                return;
            }
          
            if (btnMiddleMove.BackColor.Equals(System.Drawing.SystemColors.Control))
            {
                int speed = FormUtil.GetIntValue(txtMiddleSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                btnMiddleMove.BackColor = Color.Green;
                AxisMove(middle, speed);
            }
        }

        private void btnMiddleMove_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnMiddleMove.BackColor == Color.Green)
            {
                btnMiddleMove.BackColor = System.Drawing.SystemColors.Control;
                AxisManager.instance.SuddenStop(middle.DeviceName, middle.GetAxisValue());
                UpdateMiddlePosition();
            }
        }

        private void btnUpDownMove_MouseDown(object sender, MouseEventArgs e)
        {
            if (!InOutIsIsP1())
            {
                return;
            }
            if (btnUpDownMove.BackColor.Equals(System.Drawing.SystemColors.Control))
            {
                int speed = FormUtil.GetIntValue(txtUpDownSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                btnUpDownMove.BackColor = Color.Green;
                AxisMove(updown, speed);
            }
        }

        private void btnUpDownMove_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnUpDownMove.BackColor == Color.Green)
            {
                btnUpDownMove.BackColor = System.Drawing.SystemColors.Control;                
                AxisManager.instance.SuddenStop(updown.DeviceName, updown.GetAxisValue());
                UpdateUpdownPosition();
            }
        }

        private void btnInOutMove_MouseDown(object sender, MouseEventArgs e)
        {
            if (this.btnInOutMove.BackColor .Equals(System.Drawing.SystemColors.Control))
            {
                if (boxBean .InOutAxisCanMove().Equals(false))
                {
                    MessageBox.Show("定位气缸不在下降端,不能移动进出轴", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                int speed = FormUtil.GetIntValue(txtInOutSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                this.btnInOutMove.BackColor = Color.Green;
                AxisMove(inout, speed);
            }
        }

        private void btnInOutMove_MouseUp(object sender, MouseEventArgs e)
        {
            if (this.btnInOutMove.BackColor == Color.Green)
            {
                btnInOutMove.BackColor = System.Drawing.SystemColors.Control;
                AxisManager.instance.SuddenStop(inout.DeviceName, inout.GetAxisValue());
                UpdateInOutPosition();
            }
        } 
        private void btnMiddleMovej_MouseDown(object sender, MouseEventArgs e)
        {
            if (!InOutIsIsP1())
            {
                return;
            }
            if (btnMiddleMovej.BackColor.Equals(System.Drawing.SystemColors.Control))
            {
                int speed = FormUtil.GetIntValue(txtMiddleSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                this.btnMiddleMovej.BackColor = Color.Green;
                AxisMove(middle, -speed);
            }
        }

        private void btnMiddleMovej_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnMiddleMovej.BackColor == Color.Green)
            {
                btnMiddleMovej.BackColor = System.Drawing.SystemColors.Control;
                AxisManager.instance.SuddenStop(middle.DeviceName, middle.GetAxisValue());
                UpdateMiddlePosition();
            }
        }

        private void btnUpDownMovej_MouseDown(object sender, MouseEventArgs e)
        {
            if (!InOutIsIsP1())
            {
                return;
            }
            if (btnUpDownMovej.BackColor .Equals( System.Drawing.SystemColors.Control))
            {
                int speed = FormUtil.GetIntValue(txtUpDownSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                btnUpDownMovej.BackColor = Color.Green;
                AxisMove(updown, -speed);
            }
        }

        private void btnUpDownMovej_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnUpDownMovej.BackColor == Color.Green)
            {
                btnUpDownMovej.BackColor = System.Drawing.SystemColors.Control;
                AxisManager.instance.SuddenStop(updown.DeviceName, updown.GetAxisValue());
                UpdateUpdownPosition();
            }
        }

        private void btnInOutMovej_MouseDown(object sender, MouseEventArgs e)
        {
            if (btnInOutMovej.BackColor.Equals(System.Drawing.SystemColors.Control))
            {
                if (boxBean.InOutAxisCanMove().Equals(false))
                {
                    MessageBox.Show("定位气缸不在下降端,不能移动进出轴", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                int speed = FormUtil.GetIntValue(txtInOutSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                this.btnInOutMovej.BackColor = Color.Green;
                AxisMove(inout, -speed);
            }
        }

        private void btnInOutMovej_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnInOutMovej.BackColor.Equals(Color.Green))
            {
                btnInOutMovej.BackColor = System.Drawing.SystemColors.Control;
                AxisManager.instance.SuddenStop(inout.DeviceName, inout.GetAxisValue());
                UpdateInOutPosition();
            } 
        }
        private void btnComMove_MouseDown(object sender, MouseEventArgs e)
        {
            if (btnComMove.BackColor.Equals(System.Drawing.SystemColors.Control))
            {
                int speed = FormUtil.GetIntValue(txtComSpeed);
                if (speed <= 0)
                {
                    MessageBox.Show("提示", "请先输入正确的速度");
                    return;
                }
                this.btnComMove.BackColor = Color.Green;
                AxisMove(comp, speed); 
            }
        }

        private void btnComMove_MouseUp(object sender, MouseEventArgs e)
        {
            if (this.btnComMove.BackColor == Color.Green)
            {
                btnComMove.BackColor = System.Drawing.SystemColors.Control;  
                AxisManager.instance.SuddenStop(comp.DeviceName, comp.GetAxisValue());
                UpdateCompPosition();
            }
        }
        private void btnComMovej_MouseDown(object sender, MouseEventArgs e)
        {
            int speed = FormUtil.GetIntValue(txtComSpeed);
            if (speed <= 0)
            {
                MessageBox.Show("提示", "请先输入正确的速度");
                return;
            }
            this.btnComMovej.BackColor = Color.Green; 
            AxisMove(comp, -speed);
        }

        private void btnComMovej_MouseUp(object sender, MouseEventArgs e)
        {
            if (btnComMovej.BackColor.Equals(Color.Green))
            {
                btnComMovej.BackColor = System.Drawing.SystemColors.Control; 
                AxisManager.instance.SuddenStop(comp.DeviceName,comp.GetAxisValue());
                UpdateCompPosition();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        { 
        }
         

        private void FrmAxisDebug_Shown(object sender, EventArgs e)
        {  
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (this.Visible)
            {
                UpdateMiddlePosition();
                UpdateInOutPosition();
                UpdateUpdownPosition();
                UpdateCompPosition();
              //  txtComPosition.Text = ShuoKeControls.GetLastPosition(compress_Slv).ToString();
            }
        }
        public  void UpdateCompPosition()
        {
            int compPosition = AxisManager.instance.GetTargetPosition(comp.DeviceName, comp.GetAxisValue());
            if (!txtComPosition.Text.Equals(compPosition.ToString()))
            {
                txtComPosition.Text = compPosition.ToString();
            }
        }
        public void UpdateUpdownPosition()
        {
            int updownPosition = AxisManager.instance.GetTargetPosition(updown.DeviceName, updown.GetAxisValue());
            if (!txtUpdownPosition.Text.Equals(updownPosition.ToString()))
            {
                txtUpdownPosition.Text = updownPosition.ToString();
            }
        }

        public void UpdateMiddlePosition()
        {
            int middlePosition = AxisManager.instance.GetTargetPosition(middle.DeviceName, middle.GetAxisValue());
            if (!txtMiddlePosition.Text.Equals(middlePosition.ToString()))
            {
                txtMiddlePosition.Text = middlePosition.ToString();
            }
        }

        public void UpdateInOutPosition()
        {
            int inoutPosition = AxisManager.instance.GetTargetPosition(inout.DeviceName, inout.GetAxisValue());
            if (!txtInOutPosition.Text.Equals(inoutPosition.ToString()))
            {
                txtInOutPosition.Text = inoutPosition.ToString();
            }
        }

        private void trackBar1_ValueChanged(object sender, EventArgs e)
        {
            int value = trackBar1.Value;
            lblSpeed.Text = "点动速度=" + (value / 10f) + "倍目标速度";
            AxisManager.instance.ClearSpeed();
            txtMiddleSpeed.Text = (middle.TargetSpeed * value / 10).ToString();
            txtInOutSpeed.Text = (inout.TargetSpeed * value / 10).ToString();
            txtUpDownSpeed.Text = (updown.TargetSpeed * value / 10).ToString();
            txtComSpeed.Text = (comp.TargetSpeed * value / 10).ToString();
        }

        private void btnMCopy_Click(object sender, EventArgs e)
        {
            Clipboard.SetDataObject(txtMiddlePosition.Text, true);
        }

        private void btnUCopy_Click(object sender, EventArgs e)
        {
            Clipboard.SetDataObject(txtUpdownPosition.Text, true);
        }

        private void btnICopy_Click(object sender, EventArgs e)
        {
            Clipboard.SetDataObject(txtInOutPosition.Text, true);
        }

        private void btnCCopy_Click(object sender, EventArgs e)
        {
            Clipboard.SetDataObject(txtComPosition.Text, true);
        }
    }
}