SendFullShelfJob.cs 2.5 KB

using AGVControl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AGVControl
{
    /// <summary>
    /// 回收空料架任务
    /// </summary>
    public class SendFullShelfJob : Job
    {
        public SendFullShelfJob(string palce, int priority)
        {
            EmptyShelfPlace = palce;
            _priority = priority;
        }

        /// <summary>
        /// 空料架位置点
        /// </summary>
        private string EmptyShelfPlace{ get; set; }

        /// <summary>
        /// 优先级
        /// </summary>
        private int _priority;

        private JobStep<TAKE_EMPTY_STEP> TakeEmptyStep = new JobStep<TAKE_EMPTY_STEP>(TAKE_EMPTY_STEP.NONE);
        
        public override void Execute(Agv_Info agv)
        {

            if (TakeEmptyStep.IsStep(TAKE_EMPTY_STEP.NONE))
            {
                Common.LogInfo("开始执行回收空料架任务,发送到AGV");
                TakeEmptyStep.ToNextStep(TAKE_EMPTY_STEP.WAIT_AGV_START_TAKE_TASK);
                ClientNode node = Common.nodeInfo.Find(s => s.Name == EmptyShelfPlace);

               
            }
            else if (TakeEmptyStep.IsStep(TAKE_EMPTY_STEP.WAIT_AGV_START_TAKE_TASK))
            {
                //判断小车是否开始执行任务
                bool isTaskStart = false;
                if (isTaskStart)
                {
                    Common.LogInfo("AGV已接收并开始执行回收空料架任务,等待到达取架点");
                    TakeEmptyStep.ToNextStep(TAKE_EMPTY_STEP.WAIT_REACH_TAKE_PLACE);
                }
            }else if (TakeEmptyStep.IsStep(TAKE_EMPTY_STEP.WAIT_REACH_TAKE_PLACE))
            {

            }
        }

        public override int GetPriority()
        {
            return _priority;
        }

        public override bool IsEnd()
        {
            return TakeEmptyStep.IsStep(TAKE_EMPTY_STEP.END);
        }
    }
    /// <summary>
    /// AGV离开A4
    /// </summary>
    public enum TAKE_EMPTY_STEP
    {
        NONE,
        /// <summary>
        /// 等待AGV开始执行去取架点任务
        /// </summary>
        WAIT_AGV_START_TAKE_TASK,
        /// <summary>
        /// 等待AGV到达取架点
        /// </summary>
        WAIT_REACH_TAKE_PLACE,
        /// <summary>
        /// AGV到达取架点
        /// </summary>
        REACH_TAKE_PLACE,
        
        /// <summary>
        /// 送上双层线
        /// </summary>
        END
    }
}