public static BaseAction CreateBackStepAction(this TwoPositionLinkAction a) { return(new TwoPositionLinkLazyAction() { LinkId = a.LinkId }); }
private BaseAction CreateBackStepAction(TwoPositionLinkAction action) { return(new TwoPositionLinkLazyAction() { LinkId = action.LinkId }); }
private void AddActionCommandImpl() { BaseAction action = null; switch (ActionType) { case ActionType.AddPanel: action = new AddPanelAction(); break; case ActionType.LinearPositionLink: action = new LinearPositionLinkAction(); break; case ActionType.TwoPositionLink: action = new TwoPositionLinkAction(); break; case ActionType.LoadTool: action = new LoadToolAction(); break; case ActionType.UnloadTool: action = new UnloadToolAction(); break; case ActionType.LinearPositionLinkGantryOn: action = new LinearPositionLinkGantryOnAction(); break; case ActionType.LinearPositionLinkGantryOff: action = new LinearPositionLinkGantryOffAction(); break; case ActionType.LinearInterpolatedPositionLink: action = new LinearInterpolatedPositionLinkAction(); break; case ActionType.ArcInterpolatedPositionLink: action = new ArcInterpolatedPositionLinkAction(); break; default: break; } if (action != null) { action.Id = _index++; action.Name = $"Action {action.Id}"; Actions.Add(action); MachineStep.Actions.Add(action); } else { throw new InvalidOperationException("Action type not supported!"); } }
public static void ExecuteAction(this TwoPositionLinkAction a, int actionId = 0) { var v = a.RequestedState == MachineSteps.Models.Enums.TwoPositionLinkActionRequestedState.On; Messenger.Default.Send(new UpdateTwoPositionLinkStateMessage(a.LinkId, v) { BackNotifyId = actionId }); }
private void Execute(TwoPositionLinkAction action, int notifyId) { if (IsDynamic) { ExecuteDynamic(action, notifyId); } else { ExecuteStatic(action, notifyId); } }
private void ExecuteStatic(TwoPositionLinkAction action, int notifyId) { Messenger.Send(new GetLinkMessage() { Id = action.LinkId, SetLink = (link) => { (link as IPneumaticLinkViewModel).State = action.RequestedState == MachineSteps.Models.Enums.TwoPositionLinkActionRequestedState.On; } }); NotifyExecuted(notifyId); }
public static double GetDuration(this TwoPositionLinkAction action) { double result = 0.0; Messenger.Default.Send(new ReadTwoPositionLinkDurationMessage() { LinkId = action.LinkId, RequestedState = action.RequestedState == MachineSteps.Models.Enums.TwoPositionLinkActionRequestedState.On, SetDuration = (d) => result = d }); return(result); }
private void ExecuteDynamic(TwoPositionLinkAction action, int notifyId) { Messenger.Send(new GetLinkMessage() { Id = action.LinkId, SetLink = (link) => { var state = action.RequestedState == MachineSteps.Models.Enums.TwoPositionLinkActionRequestedState.On; if (!(link as IPneumaticLinkViewModel).ChangeStatus(state, notifyId)) { NotifyExecuted(notifyId); } // se il cambiamento non è avvenuto è perché lo stato del link era già quello desiderato => va notificata l'avvenuta esecuzione } }); }
public static double GetDuration(TwoPositionLinkAction action) { double result = 0.0; var messenger = Machine.ViewModels.Ioc.SimpleIoc <IMessenger> .GetInstance(); messenger.Send(new GetLinkMessage() { Id = action.LinkId, SetLink = (link) => { var plink = link as IPneumaticLinkViewModel; result = (action.RequestedState == TwoPositionLinkActionRequestedState.On) ? plink.TOn : plink.TOff; } }); return(result); }