using Aitex.Core.RT.Device; using Aitex.Core.RT.Event; using Aitex.Core.Util; using Aitex.Sorter.Common; using Aitex.Sorter.RT.EFEMs.Servers; using MECF.Framework.Common.Equipment; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot; namespace Aitex.Sorter.RT.EFEMs.Tasks { public class GotoTask : RobotImp, ITask { public GotoTask() { } public bool Execute(out string result, params string[] args) { string device = DeviceName.Robot; IServerModule entity = GetEntity(device); ModuleName target = ModuleName.System; int slot = 1; if (!ParseMoveTarget(args[0], out target, out slot)) { result = PARAM_NG; return false; } Hand arm = Hand.Blade2; if (!ParseMoveArm(args[1], out arm)) { result = PARAM_NG; return false; } //for goto, only assign lower arm if (arm == Hand.Both) arm = Hand.Blade1; MovePosition pos = MovePosition.UP; if (!ParseMovePosition(args[2], out pos)) { result = PARAM_NG; return false; } var isPick = true; isPick = pos == MovePosition.DOWN; 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; } _token = Singleton.Instance.EfemDevice.Invoke("Goto", target.ToString(), slot - 1, arm); return true; } public bool? Monitor(out string result, params string[] args) { result = string.Empty; if (Singleton.Instance.EfemDevice.CheckIsError(ModuleName.Robot)) { result = "ERROR"; return false; } if (Singleton.Instance.EfemDevice.CheckIsIdle(ModuleName.Robot) && Singleton.Instance.EfemDevice.CheckIsIdle(ModuleName.System) && Singleton.Instance.EfemDevice.CheckAcked(_token)) return true; return null; } } }