aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
diff options
context:
space:
mode:
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.cs218
1 files changed, 218 insertions, 0 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 4a8cd82a5..9c587b7c8 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
@@ -30,6 +30,7 @@ using Tango.BL.Enumerations;
using Tango.BL;
using Tango.MachineStudio.Common.EventLogging;
using Tango.MachineStudio.Common;
+using Tango.Core.Commands;
namespace Tango.MachineStudio.Technician.ViewModels
{
@@ -164,6 +165,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// </summary>
public RelayCommand OpenProjectCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the synchronize hardware configuration command.
+ /// </summary>
+ public RelayCommand SyncHardwareConfigurationCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the upload hardware configuration command.
+ /// </summary>
+ public RelayCommand UploadHardwareConfigurationCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the reset hardware configuration command.
+ /// </summary>
+ public RelayCommand ResetHardwareConfigurationCommand { get; set; }
+
#endregion
#region Constructors
@@ -200,6 +216,10 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
_diagnosticsFrameProvider.FrameReceived += DiagnosticsFrameProvider_FrameReceived;
+
+ UploadHardwareConfigurationCommand = new RelayCommand(UploadHardwareConfiguration);
+ SyncHardwareConfigurationCommand = new RelayCommand(SyncHardwareConfiguration);
+ ResetHardwareConfigurationCommand = new RelayCommand(ResetHardwareConfiguration);
}
#endregion
@@ -489,6 +509,18 @@ namespace Tango.MachineStudio.Technician.ViewModels
var editor = CreateElement<ControllerElementEditor, ControllerItem, TechController>(bounds, Adapter.TechControllers.FirstOrDefault());
InitControllerItem(editor.ControllerItem);
}
+ else if (item is PidItem)
+ {
+ CreateElement<PidElementEditor, PidItem, HardwarePidControlType>(bounds, Adapter.HardwarePidControlTypes.FirstOrDefault());
+ }
+ else if (item is WinderItem)
+ {
+ CreateElement<WinderElementEditor, WinderItem, HardwareWinderType>(bounds, Adapter.HardwareWinderTypes.FirstOrDefault());
+ }
+ else if (item is DancerItem)
+ {
+ CreateElement<DancerElementEditor, DancerItem, HardwareDancerType>(bounds, Adapter.HardwareDancerTypes.FirstOrDefault());
+ }
}
/// <summary>
@@ -588,6 +620,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
var editor = CreateElement<ControllerElementEditor>(item);
InitControllerItem(editor.ControllerItem);
}
+ else if (item is PidItem)
+ {
+ (item as PidItem).HardwarePidType = Adapter.HardwarePidControlTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<PidElementEditor>(item);
+ }
+ else if (item is WinderItem)
+ {
+ (item as WinderItem).HardwareWinderType = Adapter.HardwareWinderTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<WinderElementEditor>(item);
+ }
+ else if (item is DancerItem)
+ {
+ (item as DancerItem).HardwareDancerType = Adapter.HardwareDancerTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<DancerElementEditor>(item);
+ }
}
/// <summary>
@@ -1229,5 +1276,176 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
#endregion
+
+ #region Hardware Configuration
+
+ private void SyncHardwareConfiguration()
+ {
+ var elements = Elements.ToList();
+
+ if (MachineOperator != null && MachineOperator.CurrentHardwareConfiguration != null)
+ {
+ var config = MachineOperator.CurrentHardwareConfiguration;
+
+ foreach (var motorConfig in config.Motors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ motorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var pidConfig in config.PidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ pidConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var winderConfig in config.Winders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ winderConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var dancerConfig in config.Dancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == dancerConfig.HardwareDancerType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ dancerConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ _notification.ShowInfo("Visual elements synced to the last uploaded hardware configuration.");
+ }
+ else
+ {
+ ResetHardwareConfiguration();
+ }
+ }
+
+ private async void UploadHardwareConfiguration()
+ {
+ if (MachineOperator != null)
+ {
+ var hw = ApplicationManager.ConnectedMachine.Machine.Configuration.HardwareVersion.Clone();
+
+ foreach (var motorConfig in hw.HardwareMotors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(motorConfig);
+ }
+ }
+
+ foreach (var pidConfig in hw.HardwarePidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(pidConfig);
+ }
+ }
+
+ foreach (var winderConfig in hw.HardwareWinders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(winderConfig);
+ }
+ }
+
+ foreach (var DancerConfig in hw.HardwareDancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == DancerConfig.HardwareDancerType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(DancerConfig);
+ }
+ }
+
+ using (_notification.PushTaskItem("Uploading hardware configuration..."))
+ {
+ try
+ {
+ await MachineOperator.UploadHardwareConfiguration(hw, ApplicationManager.ConnectedMachine.Machine.Configuration);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error uploading hardware configuration.");
+ _notification.ShowError("An error occurred while trying to upload the hardware configuration." + Environment.NewLine + ex.Message);
+ }
+ }
+ }
+ }
+
+ private void ResetHardwareConfiguration()
+ {
+ if (MachineOperator != null)
+ {
+ var hw = ApplicationManager.ConnectedMachine.Machine.Configuration.HardwareVersion;
+
+ foreach (var motorConfig in hw.HardwareMotors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.Code);
+
+ if (itemConfig != null)
+ {
+ motorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var pidConfig in hw.HardwarePidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.Code);
+
+ if (itemConfig != null)
+ {
+ pidConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var winderConfig in hw.HardwareWinders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.Code);
+
+ if (itemConfig != null)
+ {
+ winderConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var dancerConfig in hw.HardwareDancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == dancerConfig.HardwareDancerType.Code);
+
+ if (itemConfig != null)
+ {
+ dancerConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ _notification.ShowInfo("Visual elements synced to hardware version " + hw.Name + ", " + hw.Version + ".");
+ }
+ }
+
+ #endregion
}
}