using System; using Aitex.Core.Common; using Aitex.Sorter.RT.EFEMs.Servers; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; namespace Aitex.Sorter.RT.EFEMs.Tasks { public class MapdtTask : CheckImp, ITask { public MapdtTask() { } public bool Execute(out string result, params string[] args) { string device = Args2Unit(args.Length > 0 ?args[0]:string.Empty); if (!ModuleHelper.IsBuffer(ModuleHelper.Converter(device)) && !ModuleHelper.IsLoadPort(ModuleHelper.Converter(device))) { 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; } return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; string device = Args2Unit(args.Length > 0 ?args[0]:string.Empty); Enum.TryParse(device, out ModuleName module); result = GetMapData(module); return true; } private string GetMapData(ModuleName module) { WaferInfo[] wafers = WaferManager.Instance.GetWafers(module); string slot = ""; for (int i = 0; i < 25; i++) { switch (wafers[i].Status) { case WaferStatus.Empty: slot += "0"; break; case WaferStatus.Normal: slot += "1"; break; case WaferStatus.Crossed: slot += "3"; break; case WaferStatus.Double: slot += "7"; break; case WaferStatus.Unknown: slot += "8"; break; case WaferStatus.Dummy: slot += "4"; break; } } return slot; } } }