diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-05-06 18:39:56 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-05-06 18:39:56 +0300 |
| commit | 47c0f9224c370009c3b37f6db83ec99c31d859f8 (patch) | |
| tree | 5b70c05f2254a3edd8b9af26eb19d61efb450c27 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs | |
| parent | 038e6c51a405b39f35f70f9481a4277f39517204 (diff) | |
| download | Tango-47c0f9224c370009c3b37f6db83ec99c31d859f8.tar.gz Tango-47c0f9224c370009c3b37f6db83ec99c31d859f8.zip | |
Added support for Win7 for stubs UI.
Added Dancers, Winders, PID Controls on tech module.
Some code cleanups.
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 | 218 |
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 } } |
