diff options
| author | Roy <roy.mail.net@gmail.com> | 2018-02-12 09:40:08 +0200 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2018-02-12 09:40:08 +0200 |
| commit | 2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2 (patch) | |
| tree | 53ff9fc86a9e56d5cd54a53ecddf85aa4656dd6a /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs | |
| parent | a84ca3e4bee123600c08f8897eca5be83b3ffcf8 (diff) | |
| download | Tango-2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2.tar.gz Tango-2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2.zip | |
Implemented motor group.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs index d87652e42..1b0ee0a56 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs @@ -362,9 +362,14 @@ namespace Tango.MachineStudio.Technician.ViewModels } else if (item is ThreadMotionItem) { - var editor = CreateElement<ThreadMotionElementEditor, ThreadMotionItem, int>(bounds, 0); + var editor = CreateElement<ThreadMotionElementEditor, ThreadMotionItem, object>(bounds, null); InitThreadMotionItem(editor.ThreadMotionItem); } + else if (item is MotorGroupItem) + { + var editor = CreateElement<MotorGroupElementEditor, MotorGroupItem, object>(bounds, null); + InitMotorGroupItem(editor.MotorGroupItem); + } } private Editor CreateElement<Editor, Tech, Value>(Rect bounds, Value value) where Editor : IElementEditor where Tech : TechItem @@ -428,6 +433,11 @@ namespace Tango.MachineStudio.Technician.ViewModels var editor = CreateElement<ThreadMotionElementEditor>(item); InitThreadMotionItem(editor.ThreadMotionItem); } + else if (item is MotorGroupItem) + { + var editor = CreateElement<MotorGroupElementEditor>(item); + InitMotorGroupItem(editor.MotorGroupItem); + } } public void OnElementsRemoved(List<IElementEditor> elements) @@ -502,6 +512,16 @@ namespace Tango.MachineStudio.Technician.ViewModels var ioItem = element.HostedElement as IOItem; InitIOItem(ioItem); } + else if (element is ThreadMotionItem) + { + var threadMotionItem = element.HostedElement as ThreadMotionItem; + InitThreadMotionItem(threadMotionItem); + } + else if (element is MotorGroupItem) + { + var motorGroupItem = element.HostedElement as MotorGroupItem; + InitMotorGroupItem(motorGroupItem); + } } } @@ -722,6 +742,76 @@ namespace Tango.MachineStudio.Technician.ViewModels }; } + private void InitMotorGroupItem(MotorGroupItem item) + { + item.ActionExecuted += async (x, action) => + { + if (action == MotorActionType.ForwardPressed) + { + await Task.WhenAll(item.TechMotors.Select(motor => MachineOperator.StartMotorJogging(new MotorJoggingRequest() + { + Code = motor.Code, + Direction = MotorDirection.Forward, + }))); + } + else if (action == MotorActionType.ForwardReleased) + { + await Task.WhenAll(item.TechMotors.Select(motor => MachineOperator.StopMotorJogging(new MotorAbortJoggingRequest() + { + Code = motor.Code, + }))); + } + else if (action == MotorActionType.BackwardPressed) + { + await Task.WhenAll(item.TechMotors.Select(motor => MachineOperator.StartMotorJogging(new MotorJoggingRequest() + { + Code = motor.Code, + Direction = MotorDirection.Backward, + }))); + } + else if (action == MotorActionType.BackwardReleased) + { + await Task.WhenAll(item.TechMotors.Select(motor => MachineOperator.StopMotorJogging(new MotorAbortJoggingRequest() + { + Code = motor.Code, + }))); + } + //else if (action == MotorActionType.HomingStarted) + //{ + // item.HomingProgress = 0; + // item.IsHoming = true; + // item.IsHomingCompleted = false; + + // MachineOperator.StartMotorHoming(new MotorHomingRequest() + // { + // Code = item.TechMotor.Code + // }) + // .Subscribe((response) => + // { + + // item.HomingMaximumProgress = response.Message.MaxProgress; + // item.HomingProgress = response.Message.Progress; + + // }, () => + // { + + // item.IsHoming = false; + // item.IsHomingCompleted = true; + + // }); + //} + //else if (action == MotorActionType.HomingStopped) + //{ + // await MachineOperator.StopMotorHoming(new MotorAbortHomingRequest() + // { + // Code = item.TechMotor.Code, + // }); + + // item.IsHoming = false; + //} + }; + } + #endregion #region Public Methods @@ -754,6 +844,11 @@ namespace Tango.MachineStudio.Technician.ViewModels foreach (var item in project.Items) { + if (item is MotorGroupItem) + { + (item as MotorGroupItem).TechMotors = ObservablesEntitiesAdapter.Instance.TechMotors.Where(x => (item as MotorGroupItem).ItemsGuids.Contains(x.Guid)).ToObservableCollection(); + } + AddTechItem(item); } } @@ -799,6 +894,12 @@ namespace Tango.MachineStudio.Technician.ViewModels foreach (var element in Elements) { + if (element.HostedElement is MotorGroupItem) + { + var group = element.HostedElement as MotorGroupItem; + group.ItemsGuids = group.TechMotors.Select(x => x.Guid).ToList(); + } + (element.HostedElement as TechItem).SetBounds(element.GetBounds()); project.Items.Add(element.HostedElement as TechItem); } |
