ClampJawBean.cs 3.4 KB
using Neotel;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public class ClampJawBean
    {
        public string Name = "";
        public ConfigClampJaw config = null;
        public Rmaxis rmaxis = null;
        public ClampJawBean (ConfigClampJaw config)
        {
            this.config = config;
            Name = config.DisplayStr + "(" + config.PortName + "_" + config.AxisNo + ")";
            OpenPort();
        }
        public bool OpenPort()
        {
            if (config == null)
            {
                return false;
            }
            if (rmaxis == null)
            {
                rmaxis = new Rmaxis("Rmaxis"); 
            }
            if (!rmaxis.IsPortOpen)
            {
                bool result = rmaxis.OpenPort(config.PortName, config.AxisNo);
                if (!result)
                {
                    LogUtil.error(Name + " OpenPort 失败");
                }
            }
            return rmaxis.IsPortOpen;
        }

        public void ClosePort()
        {
            if (rmaxis != null)
            {
                rmaxis.ClosePort();
            }
        }

        public void Push(LineMoveInfo moveInfo = null, bool checkHasReel = true)
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
                rmaxis.Push(config.Force, config.Distance, config.Velocity);
            }
            if (moveInfo != null)
            {
                moveInfo.WaitList.Add(WaitResultInfo.WaitClampReached((int)config.Distance));
                if (checkHasReel)
                {
                    moveInfo.WaitList.Add(WaitResultInfo.WaitClampHasReel());
                }
                //有一个到位就算到位
                moveInfo.OneWaitCanEndStep = true;
            }
        }

        public bool IsReached()
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
               return  rmaxis.IsReached;
            }
            return false; 
        }
        public bool HasReel()
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
                return !rmaxis.IsPushEmpty;
            }
            return false;
        }

        public void Relax(LineMoveInfo moveInfo = null)
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
                rmaxis.MoveAbsolute(1);
            }
            if (moveInfo != null)
            {
                moveInfo.WaitList.Add(WaitResultInfo.WaitClampReached(1));
            }
        }
        public void GoHome(LineMoveInfo moveInfo = null)
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
                rmaxis.GoHome();
            }
            if (moveInfo != null)
            {
                moveInfo.WaitList.Add(WaitResultInfo.WaitClampReached(0));
            }
        }

        public float GetPosition()
        {
            return rmaxis.GetPosition();
        }
        public float GetTorque()
        {
            return rmaxis.GetTorque();
        }
        public void PushTest(float force, float distance)
        {
            if (rmaxis != null && rmaxis.IsPortOpen)
            {
                rmaxis.Push(force, distance, config.Velocity);
            }
        }
    }
}