aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-02-12 09:40:08 +0200
committerRoy <roy.mail.net@gmail.com>2018-02-12 09:40:08 +0200
commit2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2 (patch)
tree53ff9fc86a9e56d5cd54a53ecddf85aa4656dd6a /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
parenta84ca3e4bee123600c08f8897eca5be83b3ffcf8 (diff)
downloadTango-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.cs103
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);
}