| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | using Aitex.Core.Util;using Aitex.Sorter.Common;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.Schedulers;using MECF.Framework.Common.SubstrateTrackings;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Venus_RT.Modules.VCE;using Venus_RT.Scheduler;namespace Venus_RT.Modules.Schedulers{    public class SchedulerVCE : SchedulerModule    {        #region 私有变量        private VceEntity _entity;        #endregion        #region 公开变量        public override bool IsAvailable => _entity.IsIdle && CheckTaskDone();        public override bool IsOnline => true;        public override bool IsError => _entity.IsError;                #endregion        public SchedulerVCE(ModuleName module) : base(module.ToString())        {            _module = module.ToString();            _entity = Singleton<RouteManager>.Instance.VCE;        }        public override bool IsReadyForPick(ModuleName robot, int slot, Hand blade)        {            return _entity.IsPrepareTransferReady(Module, EnumTransferType.Pick, slot)                   && WaferManager.Instance.CheckHasWafer(ModuleHelper.Converter(_module), slot);        }        public override bool IsReadyForPlace(ModuleName robot, int slot, Hand blade)        {            return _entity.IsPrepareTransferReady(Module, EnumTransferType.Place, slot)                   && WaferManager.Instance.CheckNoWafer(ModuleHelper.Converter(_module), slot);        }        public bool CheckTaskDone()        {            bool ret = false;            switch (_task)            {                case TaskType.None:                    ret = true;                    break;                case TaskType.PrepareTransfer:                    ret = _entity.IsPrepareTransferReady(ModuleName.EfemRobot, EnumTransferType.Pick, 0);                    break;            }            if (ret && _task != TaskType.None)            {                LogTaskDone(_task, "");                _task = TaskType.None;            }            return ret;        }    }}
 |