| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | using Aitex.Core.RT.Device;using Aitex.Core.RT.Routine;using Aitex.Core.Util;using MECF.Framework.Common.Equipment;using System.Collections.Generic;namespace FurnaceRT.Equipments.Systems{    public class HomeAll : IRoutine    {        List<List<IModuleDevice>> _lstModules = new List<List<IModuleDevice>>();        List<IModuleDevice> _homingModules = new List<IModuleDevice>();        public HomeAll()        {        }        public Result Start(params object[] objs)        {            _lstModules.Clear();            _lstModules.Add(new List<IModuleDevice>()            {                Singleton<EquipmentManager>.Instance.Modules[ModuleName.CarrierRobot] as IModuleDevice,                Singleton<EquipmentManager>.Instance.Modules[ModuleName.WaferRobot] as IModuleDevice,                //Singleton<EquipmentManager>.Instance.Modules[ModuleName.LP1] as IModuleDevice,                //Singleton<EquipmentManager>.Instance.Modules[ModuleName.LP2] as IModuleDevice,            });            var lstModules = new List<IModuleDevice>();            foreach (var device in Singleton<EquipmentManager>.Instance.Modules.Values)            {                if (device.Module == ModuleName.WaferRobot.ToString() || device.Module == ModuleName.CarrierRobot.ToString())                    continue;                lstModules.Add(device as IModuleDevice);            }            _lstModules.Add(lstModules);            _homingModules.Clear();            return Result.RUN;        }        public Result Monitor()        {            if (_homingModules.Count == 0 && _lstModules.Count == 0)                return Result.DONE;            if (_homingModules.Count > 0)            {                foreach (var module in _homingModules)                {                    if (module.IsError)                        return Result.FAIL;                    if (!module.IsReady)                        return Result.RUN;                }                _homingModules.Clear();                if (_lstModules.Count == 0)                    return Result.DONE;            }            if (_homingModules.Count == 0)            {                foreach (var moduleEntity in _lstModules[0])                {                    if (!moduleEntity.Home(out string reason))                        return Result.FAIL;                    _homingModules.Add(moduleEntity);                }                _lstModules.RemoveAt(0);            }            return Result.RUN;        }        public void Abort()        {            Clear();        }        public void Clear()        {            _lstModules.Clear();            _homingModules.Clear();        }    }}
 |