using System; using System.IO; using System.Reflection; using Aitex.Core.RT.DataCenter; using Aitex.Core.Util; using Aitex.Sorter.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 QueryStateTask : CheckImp, ITask { public QueryStateTask() { } public bool Execute(out string result, params string[] args) { string device = DeviceName.System; if (args[0]!="VER" && args[0]!="TRACK" && !args[0].StartsWith("PRS") && !args[0].StartsWith("FFU") && !args[0].StartsWith("INF")) { result = PARAM_NG; 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; if(args.Length < 1) { return false; } switch (args[0]) { case "VER": Assembly assembly = Assembly.GetExecutingAssembly(); string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); DateTime lastModified = DateTime.Now; if (!string.IsNullOrEmpty(assembly.Location)) { FileInfo fileInfo = new FileInfo(assembly.Location); lastModified = fileInfo.LastWriteTime; } result = string.Format("{0}({1}-{2}-{3})", version, lastModified.Year, lastModified.Month, lastModified.Day); break; case "TRACK": //var aligner = WaferManager.Instance.CheckHasWafer(ModuleName.Aligner, 0) ? "1" : "0"; //var up = WaferManager.Instance.CheckHasWafer(ModuleName.Robot, 1) ? "1" : "0"; //var low = WaferManager.Instance.CheckHasWafer(ModuleName.Robot, 0) ? "1" : "0"; //result = $"{up}{low}{aligner}"; result = Singleton.Instance.EfemDevice.GetStateTrack(); break; case "INF1": object value = DATA.Poll("System.MeterDifferencePressure.Feedback"); if (value != null) { result = $"{value}"; } else result = $"0.0"; break; case "INF2": value = DATA.Poll("FfuAAF1.Speed"); if (value != null) { result = $"{value}"; } else result = $"0.0"; break; case "INF3": value = DATA.Poll("FfuAAF2.Speed"); if (value != null) { result += $"{value}"; } else result += $"0.0"; break; case "INF4": result = $"0.0"; break; case "PRS1": value = DATA.Poll("System.MeterDifferencePressure.Feedback"); if (value != null) { result = $"1|{value}"; } else result = $"1|0.0"; break; case "PRS2": value = DATA.Poll("System.MeterDifferencePressure.Feedback"); if (value != null) { result = $"2|{value}"; } else result = $"2|0.0"; break; case "PRS3": value = DATA.Poll("System.MeterDifferencePressure.Feedback"); if (value != null) { result = $"3|{value}"; } else result = $"3|0.0"; break; case "PRS4": value = DATA.Poll("System.MeterDifferencePressure.Feedback"); if (value != null) { result = $"4|{value}"; } else result = $"4|0.0"; break; case "FFU1": value = DATA.Poll("FfuAAF1.Speed"); if (value != null) { result = $"1|{value}"; } else result = $"1|0.0"; break; case "FFU2": value = DATA.Poll("FfuAAF2.Speed"); if (value != null) { result += $"2|{value}"; } else result += $"2|0.0"; break; default: break; } return true; } } }