using Aitex.Core.RT.Device; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using EFEM.RT.Devices; using EFEM.RT.Devices.Flipper; using EFEM.RT.Modules; using MECF.Framework.Common.Equipment; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBase; using SciChart.Core.AttachedProperties; namespace EFEM.RT.Tasks { public class FlipTask : CheckImp, ITask { private string device; public FlipTask() { } public bool Execute(out string result, params string[] args) { device = ModuleName.Flipper.ToString(); JetFlipper flipper = DEVICE.GetDevice(device); if (flipper == null || SC.ContainsItem("System.FlipperDisable") ? SC.GetValue("System.FlipperDisable") : true) { result = "FLP NULL"; 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 (flipper.IsBusy) { result = "FLP BUSY"; return false; } //需进行反转情况: //1. 目标正面,当前在反面 //2. 目标反面,当前在正面 //3. 总是反转 if ((args[0].Equals("FaceUp") && flipper.IsFlipperHorizontal) || (args[0].Equals("FaceDown") && flipper.IsFlipperOrigin) || args[0].Equals("AlwaysReverse")) { return Singleton.Instance.FLPEntity.CheckToPostMsg(FlipperEntity.FlipperMSG.TurnOver); } return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; JetFlipper flipper = DEVICE.GetDevice(device); if (Singleton.Instance.FLPEntity.IsIdle && !flipper.IsBusy) { return true; } return null; } } }