using Aitex.Core.RT.Device; using Aitex.Core.Util; using Aitex.Sorter.RT.EFEMs.Servers; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot; namespace Aitex.Sorter.RT.EFEMs.Tasks { public class AlignTask : CheckImp, ITask { public AlignTask() { } public bool Execute(out string result, params string[] args) { string device = Args2Unit(args.Length > 0 ?args[0]:string.Empty); AlignerServerModule entity = (AlignerServerModule)GetEntity(device); if (entity == null) { result = PARAM_NG; return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Check(device, out result)) { return false; } if (!Singleton.Instance.CheckHasWafer(ModuleName.Aligner, 0)) { result = "NONWAF"; return false; } entity.Align(out result); return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; string device = Args2Unit(args.Length > 0 ?args[0]:string.Empty); Aligner _aligner = DEVICE.GetDevice(device); if (_aligner.Error) { flag1 = ErrorCheckList1.VAC | ErrorCheckList1.STALL | ErrorCheckList1.LIMIT | ErrorCheckList1.POSITION | ErrorCheckList1.EMS | ErrorCheckList1.COMM | ErrorCheckList1.COMM2 | ErrorCheckList1.CLAMPON | ErrorCheckList1.CLAMPOF; flag2 = ErrorCheckList2.COMMAND | ErrorCheckList2.CLAMP_S; flag3 = ErrorCheckList3.WAFLOST | ErrorCheckList3.ALIGNNG | ErrorCheckList3.HARDWARE | ErrorCheckList3.INTERNAL; return CheckError(device, out result); } if (!_aligner.Moving) { return true; } return null; } } public class SetAlignTask : CheckImp, ITask { public SetAlignTask() { HasInfoMessage = false; } public bool Execute(out string result, params string[] args) { string device = Args2Unit(args.Length > 0 ? args[0] : string.Empty); AlignerServerModule entity = (AlignerServerModule)GetEntity(device); if (entity == null ) { result = PARAM_NG; return false; } if (args.Length < 2 || !entity.SetAlign(args[1], out result)) { result = PARAM_NG; return false; } return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; string device = Args2Unit(args.Length > 0 ? args[0] : string.Empty); return true; } } }