using Aitex.Core.RT.Device; using Aitex.Core.RT.Device.Unit; using Aitex.Sorter.Common; using athosRT.Devices.EFEM.ABS; using MECF.Framework.Common.Device.Bases; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using EV = athosRT.tool.EV; namespace athosRT.Devices.EFEM.Task { public class SigoutTask : CheckImp, ITask { public bool Execute(out string result, params string[] args) { string str = this.Args2Unit(args.Length != 0 ? args[0] : string.Empty); if (str == null) { result = "PARAM_NG"; return false; } if (!this.CheckIsPort(str) && !this.CheckIsTower(str)) { result = "PARAM_NG"; return false; } if (args.Length < 3) { result = "PARAM_NG"; return false; } if (!this.Check(str, out result)) return false; if (this.CheckIsTower(str)) { IoSignalTower device = DEVICE.GetDevice(str); int result1 = 500; LightState state; if (args[2].Equals("ON")) state = LightState.On; else if (args[2].Equals("OFF")) state = LightState.Off; else if (args[2].StartsWith("BLINK")) { state = LightState.Blink; string s = args[2].Substring(5); if (string.IsNullOrWhiteSpace(s)) s = "2"; if (string.IsNullOrEmpty(s) || !int.TryParse(s, out result1)) { result = "PARAM_NG"; return false; } if (result1 < 1 || result1 > 200) { result = "PARAM_NG"; return false; } result1 *= 100; } else { result = "PARAM_NG"; return false; } switch (args[1]) { case "BLUE": device.SetLight(LightType.Blue, state, result1); goto case "WHITE"; case "BUZZER1": if (state != LightState.Off && state != LightState.On) { result = "PARAM_NG"; return false; } device.SetLight(LightType.Buzzer, state); goto case "WHITE"; case "BUZZER2": if (state != LightState.Off && state != LightState.On) { result = "PARAM_NG"; return false; } if (state == LightState.On) state = LightState.Blink; device.SetLight(LightType.Buzzer, state, result1); goto case "WHITE"; case "GREEN": device.SetLight(LightType.Green, state, result1); goto case "WHITE"; case "RED": device.SetLight(LightType.Red, state, result1); goto case "WHITE"; case "WHITE": break; case "YELLOW": device.SetLight(LightType.Yellow, state, result1); goto case "WHITE"; default: result = "PARAM_NG"; return false; } } if (this.CheckIsPort(str)) { LoadPortBaseDevice device = DEVICE.GetDevice(str); IndicatorState state; if (args[2].Equals("ON")) state = IndicatorState.ON; else if (args[2].Equals("OFF")) state = IndicatorState.OFF; else if (args[2].StartsWith("BLINK")) { state = IndicatorState.BLINK; } else { result = "PARAM_NG"; return false; } switch (args[1]) { case "ACCESS": device.SetIndicator(IndicatorType.Access, state); goto case "MANUAL"; case "ALARM": device.SetIndicator(IndicatorType.Alarm, state); goto case "MANUAL"; case "LOAD": device.SetIndicator(IndicatorType.Load, state); goto case "MANUAL"; case "MANUAL": break; case "PLACEMENT": device.SetIndicator(IndicatorType.Placement, state); goto case "MANUAL"; case "PRESENCE": device.SetIndicator(IndicatorType.Presence, state); goto case "MANUAL"; case "STATUS1": device.SetIndicator(IndicatorType.Status1, state); goto case "MANUAL"; case "STATUS2": device.SetIndicator(IndicatorType.Status2, state); goto case "MANUAL"; case "UNLOAD": device.SetIndicator(IndicatorType.Unload, state); goto case "MANUAL"; default: EV.PostWarningLog("Server", "Not supported indicator " + args[1]); result = "PARAM_NG"; return false; } } return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; string str = this.Args2Unit(args.Length != 0 ? args[0] : string.Empty); if (this.CheckIsTower(str)) return new bool?(true); LoadPortBaseDevice device = DEVICE.GetDevice(str); if (device.IsError) { this.flag1 = ErrorCheckList1.VAC | ErrorCheckList1.AIR | ErrorCheckList1.STALL | ErrorCheckList1.LIMIT | ErrorCheckList1.SENSOR | ErrorCheckList1.POSITION | ErrorCheckList1.EMS | ErrorCheckList1.COMM | ErrorCheckList1.COMM2 | ErrorCheckList1.VACON | ErrorCheckList1.VACOFF | ErrorCheckList1.CLAMPON | ErrorCheckList1.CLAMPOF; this.flag2 = ErrorCheckList2.RRTWAF | ErrorCheckList2.CRSWAF | ErrorCheckList2.THICKWAF | ErrorCheckList2.THINWAF | ErrorCheckList2.DBLWAF | ErrorCheckList2.BAOWAF | ErrorCheckList2.COMMAND | ErrorCheckList2.PODNG | ErrorCheckList2.PODMISMATCH | ErrorCheckList2.VAC_S | ErrorCheckList2.CLAMP_S | ErrorCheckList2.SAFTY | ErrorCheckList2.LOCKNG | ErrorCheckList2.UNLOCKNG | ErrorCheckList2.L_KEY_LK | ErrorCheckList2.L_KEY_UL; this.flag3 = ErrorCheckList3.MAP_S | ErrorCheckList3.MAP_S1 | ErrorCheckList3.MAP_S2 | ErrorCheckList3.WAFLOST | ErrorCheckList3.ALIGNNG | ErrorCheckList3.DRIVER | ErrorCheckList3.DRPOWERDOWN | ErrorCheckList3.HARDWARE | ErrorCheckList3.INTERNAL | ErrorCheckList3.E84_TIMEOUTx | ErrorCheckList3.E84_CS_VALID | ErrorCheckList3.READFAIL; return new bool?(this.CheckError(str, out result)); } return !device.IsBusy ? new bool?(true) : new bool?(); } } }