PickShelfJob.cs 1.6 KB
using DeviceLib.Model.AGV;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLib.BLL
{
    internal class PickShelfJob : ImpJob
    {
        public PickShelfJob(JobParam jobParam) : base(jobParam)
        {
        }
        public override Job Run(Robot robot)
        {
            Job job = this;
            switch (JobRunStep.CurStep)
            {
                case RunStep.None:
                    ToNextStep(RunStep.PickAction_01_ReadyToPick, "开始拾取料架");
                    PickUp(robot);
                    break;
                case RunStep.PickAction_01_ReadyToPick:
                    if (JobRunStep.IsTimeOut(60))
                    {
                        ToNextStep(RunStep.PickAction_02_PickTimeout, "拾取料架超时");
                    }
                    else if (MissionIsOk())
                    {
                        ToNextStep(RunStep.PickAction_03_PickSuccess, "拾取料架完成");
                    }
                    break;
                case RunStep.PickAction_02_PickTimeout:
                    if (MissionIsOk())
                    {
                        ToNextStep(RunStep.PickAction_03_PickSuccess, "结束拾取料架");
                    }
                    break;
                case RunStep.PickAction_03_PickSuccess:
                    job = new DeliverShelfJob(JobParam);
                    job.ToNextStep(RunStep.DeliveryShelf_15_ActionSuccess, "拾取料架完成");
                    break;
            }
            return job;
        }
    }

}