示例#1
0
 public static BaseAction CreateBackStepAction(this TwoPositionLinkAction a)
 {
     return(new TwoPositionLinkLazyAction()
     {
         LinkId = a.LinkId
     });
 }
示例#2
0
 private BaseAction CreateBackStepAction(TwoPositionLinkAction action)
 {
     return(new TwoPositionLinkLazyAction()
     {
         LinkId = action.LinkId
     });
 }
示例#3
0
        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!");
            }
        }
示例#4
0
        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
            });
        }
示例#5
0
 private void Execute(TwoPositionLinkAction action, int notifyId)
 {
     if (IsDynamic)
     {
         ExecuteDynamic(action, notifyId);
     }
     else
     {
         ExecuteStatic(action, notifyId);
     }
 }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
 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
         }
     });
 }
示例#9
0
        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);
        }