StandyJob.cs 2.2 KB
using Common;
using DeviceLibrary.bean;

namespace DeviceLibrary
{
    /// <summary>
    /// 待机任务
    /// </summary>
    public class StandyJob : Job
    {
        /// <summary>
        /// 待机任务
        /// </summary>
        /// <param name="agvPlae">小车当前位置,空表示在待机位</param>
        public StandyJob(JobParam jobParam) : base(jobParam)
        {
            JobName = "待机任务";
        }
        public StandyJob():base()
        {
            JobName = "待机任务";
        }
        int BatteryMid = ChargePileManager.GetChargePiles().BatteryMiddle;
        /// <summary>
        /// 待机任务
        /// </summary>
        /// <param name="agv"></param>
        public override Job Run(AgvInfo agv)
        {
            agv.SetJobContext(new bean.agv.JobContext()
            {
            });
            if (JobRunStep.IsStep(RunStep.NONE))
            {
                {

                    {
                        JobRunStep.ToNextStep(RunStep.STANDBY_WAIT_REACH_STANDBY);
                        runInfo = "从" + JobParam.SrcNode + "回到待机位";
                        JobRunStep.Msg = runInfo;
                        ToStandby(agv);
                    }
                }

            }
            else if (JobRunStep.IsStep(RunStep.STANDBY_WAIT_REACH_STANDBY))
            {
                if (agv.TaskRunState.CheckTaskFinished(agv))
                {
                    JobRunStep.ToNextStep(RunStep.END);
                    // runInfo = "到达待机位";
                    //JobRunStep.Msg = runInfo;
                }
            }
            else if (JobRunStep.IsStep(RunStep.END))
            {
                Job job = AGVManager.control.GetJob(agv);
                if (job != null && !(job is StandyJob))
                {
                    if (job is ChargeJob && agv.Battery > BatteryMid)
                        return this;
                    runInfo = "在待机位检测到任务,执行任务";
                    JobRunStep.Msg = runInfo;
                    JobRunStep.EndJob();
                    return job;
                }
            }

            return this;
        }
    }

}