From df9efa378c7741e325b0de775cf7b33634b9f8b3 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sat, 4 Aug 2018 15:27:45 +0300 Subject: Implemented Blowers, Break Sensors in Machine Versions Module. Removed all unnecessary Observable entities extension methods. --- .../ViewModels/MainViewVM.cs | 6 +- .../Images/blower.png | Bin 0 -> 1575 bytes .../Images/break.png | Bin 0 -> 1388 bytes .../Tango.MachineStudio.HardwareDesigner.csproj | 8 +- .../ViewModels/MainViewVM.cs | 126 ++++++++++++++++++++- .../Views/MainView.xaml | 76 +++++++++++++ .../ViewModels/MainViewVM.cs | 18 +-- 7 files changed, 219 insertions(+), 15 deletions(-) create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/blower.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/break.png (limited to 'Software/Visual_Studio/MachineStudio/Modules') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index 569359066..85480a4b8 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -979,7 +979,7 @@ namespace Tango.MachineStudio.Developer.ViewModels if (SelectedGroupHistory != null) { LogManager.Log(String.Format("Parameters group {0} selected from history.", SelectedGroupHistory.Name)); - RmlProcessParametersTableGroup = SelectedGroupHistory.CloneGroup(); + RmlProcessParametersTableGroup = SelectedGroupHistory.Clone(); } } @@ -1329,7 +1329,7 @@ namespace Tango.MachineStudio.Developer.ViewModels if (RmlProcessParametersTableGroup != null) { - RmlProcessParametersTableGroup = RmlProcessParametersTableGroup.CloneGroup(); + RmlProcessParametersTableGroup = RmlProcessParametersTableGroup.Clone(); RmlProcessParametersTableGroup.ProcessParametersTables = RmlProcessParametersTableGroup.ProcessParametersTables.OrderBy(x => x.TableIndex).ToObservableCollection(); } @@ -1385,7 +1385,7 @@ namespace Tango.MachineStudio.Developer.ViewModels foreach (var table in RmlProcessParametersTableGroup.ProcessParametersTables) { - var newTable = table.CloneEntity(); + var newTable = table.Clone(); newTable.TableIndex = index++; newTable.ProcessParametersTablesGroup = group; tables.Add(newTable); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/blower.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/blower.png new file mode 100644 index 000000000..a3797b514 Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/blower.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/break.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/break.png new file mode 100644 index 000000000..67bd5982e Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/break.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj index 270915bd2..13f075684 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj @@ -166,10 +166,16 @@ + + + + + + - + \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs index f91badebe..3dd4e62a3 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs @@ -96,6 +96,34 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels set { _selectedSpeedSensorTypes = value; RaisePropertyChangedAuto(); } } + private SelectedObjectCollection _blowerTypes; + public SelectedObjectCollection BlowerTypes + { + get { return _blowerTypes; } + set { _blowerTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection _selectedBlowerTypes; + public ObservableCollection SelectedBlowerTypes + { + get { return _selectedBlowerTypes; } + set { _selectedBlowerTypes = value; RaisePropertyChangedAuto(); } + } + + private SelectedObjectCollection _breakSensorTypes; + public SelectedObjectCollection BreakSensorTypes + { + get { return _breakSensorTypes; } + set { _breakSensorTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection _selectedBreakSensorTypes; + public ObservableCollection SelectedBreakSensorTypes + { + get { return _selectedBreakSensorTypes; } + set { _selectedBreakSensorTypes = value; RaisePropertyChangedAuto(); } + } + private HardwareVersion _selectedVersion; public HardwareVersion SelectedVersion { @@ -159,7 +187,7 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels CurrentVersion = new HardwareVersion(); CreateTemplate(CurrentVersion); - CopyParametersCommand = new RelayCommand(CopyParameters,(x) => SelectedVersion != null && SelectedHardwareObjectType != null); + CopyParametersCommand = new RelayCommand(CopyParameters, (x) => SelectedVersion != null && SelectedHardwareObjectType != null); CloneCommand = new RelayCommand(CloneCurrentVersion, () => SelectedVersion != null); } @@ -188,6 +216,14 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels { target = CurrentVersion.HardwareSpeedSensors.SingleOrDefault(x => x.HardwareSpeedSensorType == source); } + else if (source is HardwareBlowerType) + { + target = CurrentVersion.HardwareBlowers.SingleOrDefault(x => x.HardwareBlowerType == source); + } + else if (source is HardwareBreakSensorType) + { + target = CurrentVersion.HardwareBreakSensors.SingleOrDefault(x => x.HardwareBreakSensorType == source); + } target.MapPrimitivesTo(SelectedHardwareObject); } @@ -276,6 +312,38 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedHardwareObject = hardwareObj; } } + else if (SelectedHardwareObjectType is SelectedObject) + { + var type = (SelectedHardwareObjectType as SelectedObject).Data; + var hardwareObj = CurrentVersion.HardwareBlowers.SingleOrDefault(x => x.HardwareBlowerType == type); + + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareBlower() { HardwareBlowerType = type }; + CurrentVersion.HardwareBlowers.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } + else if (SelectedHardwareObjectType is SelectedObject) + { + var type = (SelectedHardwareObjectType as SelectedObject).Data; + var hardwareObj = CurrentVersion.HardwareBreakSensors.SingleOrDefault(x => x.HardwareBreakSensorType == type); + + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareBreakSensor() { HardwareBreakSensorType = type }; + CurrentVersion.HardwareBreakSensors.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } } } @@ -288,6 +356,8 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedPidControlTypes = new ObservableCollection(); SelectedWinderTypes = new ObservableCollection(); SelectedSpeedSensorTypes = new ObservableCollection(); + SelectedBlowerTypes = new ObservableCollection(); + SelectedBreakSensorTypes = new ObservableCollection(); } else { @@ -296,6 +366,8 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedPidControlTypes = version.HardwarePidControls.Select(x => x.HardwarePidControlType).ToObservableCollection(); SelectedWinderTypes = version.HardwareWinders.Select(x => x.HardwareWinderType).ToObservableCollection(); SelectedSpeedSensorTypes = version.HardwareSpeedSensors.Select(x => x.HardwareSpeedSensorType).ToObservableCollection(); + SelectedBlowerTypes = version.HardwareBlowers.Select(x => x.HardwareBlowerType).ToObservableCollection(); + SelectedBreakSensorTypes = version.HardwareBreakSensors.Select(x => x.HardwareBreakSensorType).ToObservableCollection(); } MotorTypes = new SelectedObjectCollection(Adapter.HardwareMotorTypes, SelectedMotorTypes); @@ -303,6 +375,8 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels PidControlTypes = new SelectedObjectCollection(Adapter.HardwarePidControlTypes, SelectedPidControlTypes); WinderTypes = new SelectedObjectCollection(Adapter.HardwareWinderTypes, SelectedWinderTypes); SpeedSensorTypes = new SelectedObjectCollection(Adapter.HardwareSpeedSensorTypes, SelectedSpeedSensorTypes); + BlowerTypes = new SelectedObjectCollection(Adapter.HardwareBlowerTypes, SelectedBlowerTypes); + BreakSensorTypes = new SelectedObjectCollection(Adapter.HardwareBreakSensorTypes, SelectedBreakSensorTypes); } private void OnSelectedVersionChanged() @@ -363,6 +437,8 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels realVersion.HardwarePidControls.ToList().Where(x => !SelectedPidControlTypes.Contains(x.HardwarePidControlType)).ToList().ForEach(x => realVersion.HardwarePidControls.Remove(x)); realVersion.HardwareWinders.ToList().Where(x => !SelectedWinderTypes.Contains(x.HardwareWinderType)).ToList().ForEach(x => realVersion.HardwareWinders.Remove(x)); realVersion.HardwareSpeedSensors.ToList().Where(x => !SelectedSpeedSensorTypes.Contains(x.HardwareSpeedSensorType)).ToList().ForEach(x => realVersion.HardwareSpeedSensors.Remove(x)); + realVersion.HardwareBlowers.ToList().Where(x => !SelectedBlowerTypes.Contains(x.HardwareBlowerType)).ToList().ForEach(x => realVersion.HardwareBlowers.Remove(x)); + realVersion.HardwareBreakSensors.ToList().Where(x => !SelectedBreakSensorTypes.Contains(x.HardwareBreakSensorType)).ToList().ForEach(x => realVersion.HardwareBreakSensors.Remove(x)); } else { @@ -376,12 +452,16 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels realVersion.HardwarePidControls.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); realVersion.HardwareWinders.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); realVersion.HardwareSpeedSensors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareBlowers.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareBreakSensors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); realVersion.HardwareDancers.Clear(); realVersion.HardwareMotors.Clear(); realVersion.HardwarePidControls.Clear(); realVersion.HardwareWinders.Clear(); realVersion.HardwareSpeedSensors.Clear(); + realVersion.HardwareBlowers.Clear(); + realVersion.HardwareBreakSensors.Clear(); foreach (var type in SelectedDancerTypes) { @@ -472,6 +552,42 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels }); } } + + foreach (var type in SelectedBlowerTypes) + { + var item = CurrentVersion.HardwareBlowers.SingleOrDefault(x => x.HardwareBlowerType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareBlowers.Add(item); + } + else + { + realVersion.HardwareBlowers.Add(new HardwareBlower() + { + HardwareVersionGuid = realVersion.Guid, + HardwareBlowerType = type + }); + } + } + + foreach (var type in SelectedBreakSensorTypes) + { + var item = CurrentVersion.HardwareBreakSensors.SingleOrDefault(x => x.HardwareBreakSensorType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareBreakSensors.Add(item); + } + else + { + realVersion.HardwareBreakSensors.Add(new HardwareBreakSensor() + { + HardwareVersionGuid = realVersion.Guid, + HardwareBreakSensorType = type + }); + } + } } @@ -499,7 +615,7 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels { using (_notification.PushTaskItem("Cloning hardware configuration...")) { - await Task.Factory.StartNew(() => + await Task.Factory.StartNew(() => { var realVersion = CurrentVersion.Clone(); realVersion.Name = name; @@ -510,18 +626,24 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels realVersion.HardwarePidControls.ToList().Where(x => !SelectedPidControlTypes.Contains(x.HardwarePidControlType)).ToList().ForEach(x => realVersion.HardwarePidControls.Remove(x)); realVersion.HardwareWinders.ToList().Where(x => !SelectedWinderTypes.Contains(x.HardwareWinderType)).ToList().ForEach(x => realVersion.HardwareWinders.Remove(x)); realVersion.HardwareSpeedSensors.ToList().Where(x => !SelectedSpeedSensorTypes.Contains(x.HardwareSpeedSensorType)).ToList().ForEach(x => realVersion.HardwareSpeedSensors.Remove(x)); + realVersion.HardwareBlowers.ToList().Where(x => !SelectedBlowerTypes.Contains(x.HardwareBlowerType)).ToList().ForEach(x => realVersion.HardwareBlowers.Remove(x)); + realVersion.HardwareBreakSensors.ToList().Where(x => !SelectedBreakSensorTypes.Contains(x.HardwareBreakSensorType)).ToList().ForEach(x => realVersion.HardwareBreakSensors.Remove(x)); realVersion.HardwareMotors.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); realVersion.HardwareDancers.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); realVersion.HardwarePidControls.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); realVersion.HardwareWinders.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); realVersion.HardwareSpeedSensors.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); + realVersion.HardwareBlowers.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); + realVersion.HardwareBreakSensors.ToList().ForEach(x => x.HardwareVersionGuid = realVersion.Guid); realVersion.HardwareMotors.ToList().ForEach(x => x.HardwareVersion = realVersion); realVersion.HardwareDancers.ToList().ForEach(x => x.HardwareVersion = realVersion); realVersion.HardwarePidControls.ToList().ForEach(x => x.HardwareVersion = realVersion); realVersion.HardwareWinders.ToList().ForEach(x => x.HardwareVersion = realVersion); realVersion.HardwareSpeedSensors.ToList().ForEach(x => x.HardwareVersion = realVersion); + realVersion.HardwareBlowers.ToList().ForEach(x => x.HardwareVersion = realVersion); + realVersion.HardwareBreakSensors.ToList().ForEach(x => x.HardwareVersion = realVersion); Adapter.Context.HardwareVersions.Add(realVersion); realVersion.Save(Adapter.Context); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml index e22b0e71a..86e0da5b5 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml @@ -263,6 +263,82 @@ + + + + BLOWERS + + + + + + + + + + + + + + + + + + BREAK SENSORS + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs index 3a0191be4..0bd8f8133 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs @@ -176,8 +176,8 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { if (SelectedMachine != null) { - Machine = SelectedMachine.CloneEntity(); - Configuration = Machine.Configuration.CloneConfiguration(); + Machine = SelectedMachine.Clone(); + Configuration = Machine.Configuration.Clone(); History = SelectedMachine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection(); } else @@ -193,7 +193,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { if (SelectedHistoryConfiguration != null) { - Configuration = SelectedHistoryConfiguration.CloneConfiguration(); + Configuration = SelectedHistoryConfiguration.Clone(); } } @@ -552,7 +552,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels await Machine.SaveAsync(Adapter.Context); Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == Machine.Guid); - Configuration = Machine.Configuration.CloneConfiguration(); + Configuration = Machine.Configuration.Clone(); } } else @@ -586,11 +586,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels await machine.SaveAsync(Adapter.Context); Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == machine.Guid); - Configuration = Machine.Configuration.CloneConfiguration(); + Configuration = Machine.Configuration.Clone(); } SetHistory(Machine); - Machine = Machine.CloneEntity(); + Machine = Machine.Clone(); } } catch (Exception ex) @@ -621,7 +621,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { if (Machine.MachineVersion != null) { - Configuration = Machine.MachineVersion.DefaultConfiguration.CloneConfiguration(); + Configuration = Machine.MachineVersion.DefaultConfiguration.Clone(); } else { @@ -642,7 +642,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { if (vm.SelectedVersion != null) { - vm.SelectedVersion.DefaultConfiguration = Configuration.CloneConfiguration(); + vm.SelectedVersion.DefaultConfiguration = Configuration.Clone(); vm.SelectedVersion.DefaultConfigurationGuid = vm.SelectedVersion.DefaultConfiguration.Guid; await vm.SelectedVersion.SaveAsync(Adapter.Context); } @@ -652,7 +652,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels newVersion.Version = vm.Version; newVersion.Name = vm.VersionName; - newVersion.DefaultConfiguration = Configuration.CloneConfiguration(); + newVersion.DefaultConfiguration = Configuration.Clone(); newVersion.DefaultConfigurationGuid = newVersion.DefaultConfiguration.Guid; await newVersion.SaveAsync(Adapter.Context); } -- cgit v1.3.1 From 4fb8ff57dcd3bce39ac54d4c52cef091df8c570b Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sat, 4 Aug 2018 16:50:29 +0300 Subject: Implemented Blower, Break Sensor in Tech Board. Added to uploaded hardware config. !!!! --- Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 1835008 -> 1835008 bytes Software/Graphics/blower-big.png | Bin 0 -> 5897 bytes Software/Graphics/break-big.png | Bin 0 -> 4963 bytes .../Messages/Diagnostics/DiagnosticsMonitors.proto | 3 + .../PMR/Messages/Hardware/HardwareBlower.proto | 4 +- .../Messages/Hardware/HardwareConfiguration.proto | 4 + .../Editors/BlowerElementEditor.xaml | 79 ++++++++++++++++ .../Editors/BlowerElementEditor.xaml.cs | 103 +++++++++++++++++++++ .../Editors/BreakSensorElementEditor.xaml | 79 ++++++++++++++++ .../Editors/BreakSensorElementEditor.xaml.cs | 103 +++++++++++++++++++++ .../Images/blower-big.png | Bin 0 -> 5897 bytes .../Images/blower.png | Bin 0 -> 1575 bytes .../Images/break-big.png | Bin 0 -> 4963 bytes .../Images/break.png | Bin 0 -> 1388 bytes .../PropertiesTemplates/BlowerTemplate.xaml | 77 +++++++++++++++ .../PropertiesTemplates/BlowerTemplate.xaml.cs | 28 ++++++ .../PropertiesTemplates/BreakSensorTemplate.xaml | 77 +++++++++++++++ .../BreakSensorTemplate.xaml.cs | 28 ++++++ .../Tango.MachineStudio.Technician.csproj | 42 ++++++++- .../TechItems/BlowerItem.cs | 102 ++++++++++++++++++++ .../TechItems/BreakSensorItem.cs | 102 ++++++++++++++++++++ .../TechItems/TechItem.cs | 2 + .../ViewModels/MachineTechViewVM.cs | 78 ++++++++++++++++ .../Views/MachineTechView.xaml | 8 +- .../Tango.BL/Enumerations/HardwareBlowerTypes.cs | 7 ++ .../Enumerations/HardwareBreakSensorTypes.cs | 7 ++ .../Tango.BL/Enumerations/TechMonitors.cs | 6 ++ .../Tango.Emulations/Emulators/MachineEmulator.cs | 1 + .../Tango.Integration/Operation/MachineOperator.cs | 16 ++++ .../Tango.PMR/Diagnostics/DiagnosticsMonitors.cs | 33 ++++++- .../Tango.PMR/Hardware/HardwareBlower.cs | 69 ++++++++++---- .../Tango.PMR/Hardware/HardwareConfiguration.cs | 67 +++++++++++--- .../Utilities/Tango.PMRGenerator.CLI/Program.cs | 4 +- 34 files changed, 1088 insertions(+), 41 deletions(-) create mode 100644 Software/Graphics/blower-big.png create mode 100644 Software/Graphics/break-big.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs (limited to 'Software/Visual_Studio/MachineStudio/Modules') diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index 796aa89a7..c7f3c97bc 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index 9c4f92cbd..2733ed1d2 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/Graphics/blower-big.png b/Software/Graphics/blower-big.png new file mode 100644 index 000000000..c93daea65 Binary files /dev/null and b/Software/Graphics/blower-big.png differ diff --git a/Software/Graphics/break-big.png b/Software/Graphics/break-big.png new file mode 100644 index 000000000..363ee88a1 Binary files /dev/null and b/Software/Graphics/break-big.png differ diff --git a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto index 8b4107420..65e5ebea5 100644 --- a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto +++ b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto @@ -135,4 +135,7 @@ message DiagnosticsMonitors //Head Zone 6 (Min = 0, Max = 300, PPF = 10) repeated double HeadZone6Temperature = 39; + //Blower Voltage (Min = 0, Max = 100, PPF = 10) + repeated double BlowerVoltage = 40; + } diff --git a/Software/PMR/Messages/Hardware/HardwareBlower.proto b/Software/PMR/Messages/Hardware/HardwareBlower.proto index aa6b43cff..22f73f585 100644 --- a/Software/PMR/Messages/Hardware/HardwareBlower.proto +++ b/Software/PMR/Messages/Hardware/HardwareBlower.proto @@ -20,6 +20,8 @@ message HardwareBlower HardwareBlowerType HardwareBlowerType = 1; - int32 Code = 2; + bool Enabled = 2; + + double Voltage = 3; } diff --git a/Software/PMR/Messages/Hardware/HardwareConfiguration.proto b/Software/PMR/Messages/Hardware/HardwareConfiguration.proto index 70376a1dc..4115bc710 100644 --- a/Software/PMR/Messages/Hardware/HardwareConfiguration.proto +++ b/Software/PMR/Messages/Hardware/HardwareConfiguration.proto @@ -6,6 +6,8 @@ import "HardwareMotor.proto"; import "HardwarePidControl.proto"; import "HardwareWinder.proto"; import "HardwareSpeedSensor.proto"; +import "HardwareBlower.proto"; +import "HardwareBreakSensor.proto"; package Tango.PMR.Hardware; option java_package = "com.twine.tango.pmr.hardware"; @@ -18,4 +20,6 @@ message HardwareConfiguration repeated HardwarePidControl PidControls = 4; repeated HardwareWinder Winders = 5; repeated HardwareSpeedSensor SpeedSensors = 6; + repeated HardwareBlower Blowers = 7; + repeated HardwareBreakSensor BreakSensors = 8; } \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml new file mode 100644 index 000000000..675571657 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs new file mode 100644 index 000000000..558cc6fcc --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Tango.Editors; +using Tango.BL.Entities; +using Tango.MachineStudio.Technician.TechItems; +using Tango.Core; + +namespace Tango.MachineStudio.Technician.Editors +{ + [ContentProperty("InnerContent")] + public partial class BlowerElementEditor : ElementEditor + { + /// + /// Initializes a new instance of the class. + /// + public BlowerElementEditor() + : base() + { + InitializeComponent(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The framework element. + public BlowerElementEditor(BlowerItem blowerItem) + : this() + { + BlowerItem = blowerItem; + DataContext = BlowerItem; + } + + /// + /// Initializes a new instance of the class. + /// + /// The framework element. + /// The bounds. + public BlowerElementEditor(BlowerItem blowerItem, Rect bounds) + : this(blowerItem) + { + Left = bounds.Left; + Top = bounds.Top; + Width = bounds.Width; + Height = bounds.Height; + } + + private BlowerItem _blowerItem; + + public BlowerItem BlowerItem + { + get { return _blowerItem; } + set { _blowerItem = value; RaisePropertyChanged(nameof(BlowerItem)); } + } + + + /// + /// Clones this instance. + /// + /// + public override IElementEditor Clone() + { + try + { + var clonedItem = BlowerItem.Clone() as BlowerItem; + BlowerElementEditor cloned = new BlowerElementEditor(clonedItem); + cloned.Top = Top; + cloned.Left = Left; + cloned.Width = Width; + cloned.Height = Height; + cloned.Angle = Angle; + return cloned; + } + catch (Exception ex) + { + throw new InvalidOperationException("Could not clone this editor. You may have to create a custom editor and implement a custom Clone method.", ex); + } + } + + /// + /// Gets the hosted element. + /// + [ParameterIgnore] + public override Object HostedElement + { + get { return BlowerItem; } + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml new file mode 100644 index 000000000..18c992193 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs new file mode 100644 index 000000000..da4530e35 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Tango.Editors; +using Tango.BL.Entities; +using Tango.MachineStudio.Technician.TechItems; +using Tango.Core; + +namespace Tango.MachineStudio.Technician.Editors +{ + [ContentProperty("InnerContent")] + public partial class BreakSensorElementEditor : ElementEditor + { + /// + /// Initializes a new instance of the class. + /// + public BreakSensorElementEditor() + : base() + { + InitializeComponent(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The framework element. + public BreakSensorElementEditor(BreakSensorItem breakSensorItem) + : this() + { + BreakSensorItem = breakSensorItem; + DataContext = BreakSensorItem; + } + + /// + /// Initializes a new instance of the class. + /// + /// The framework element. + /// The bounds. + public BreakSensorElementEditor(BreakSensorItem breakSensorItem, Rect bounds) + : this(breakSensorItem) + { + Left = bounds.Left; + Top = bounds.Top; + Width = bounds.Width; + Height = bounds.Height; + } + + private BreakSensorItem _breakSensorItem; + + public BreakSensorItem BreakSensorItem + { + get { return _breakSensorItem; } + set { _breakSensorItem = value; RaisePropertyChanged(nameof(BreakSensorItem)); } + } + + + /// + /// Clones this instance. + /// + /// + public override IElementEditor Clone() + { + try + { + var clonedItem = BreakSensorItem.Clone() as BreakSensorItem; + BreakSensorElementEditor cloned = new BreakSensorElementEditor(clonedItem); + cloned.Top = Top; + cloned.Left = Left; + cloned.Width = Width; + cloned.Height = Height; + cloned.Angle = Angle; + return cloned; + } + catch (Exception ex) + { + throw new InvalidOperationException("Could not clone this editor. You may have to create a custom editor and implement a custom Clone method.", ex); + } + } + + /// + /// Gets the hosted element. + /// + [ParameterIgnore] + public override Object HostedElement + { + get { return BreakSensorItem; } + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png new file mode 100644 index 000000000..c93daea65 Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png new file mode 100644 index 000000000..a3797b514 Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png new file mode 100644 index 000000000..363ee88a1 Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png new file mode 100644 index 000000000..67bd5982e Binary files /dev/null and b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml new file mode 100644 index 000000000..16d270f01 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + Selected Blower + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs new file mode 100644 index 000000000..3622735d2 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.MachineStudio.Technician.PropertiesTemplates +{ + /// + /// Interaction logic for MonitorTemplate.xaml + /// + public partial class BlowerTemplate : UserControl + { + public BlowerTemplate() + { + InitializeComponent(); + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml new file mode 100644 index 000000000..7914c5a52 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + Selected Break Sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs new file mode 100644 index 000000000..7c9fc5ad0 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.MachineStudio.Technician.PropertiesTemplates +{ + /// + /// Interaction logic for MonitorTemplate.xaml + /// + public partial class BreakSensorTemplate : UserControl + { + public BreakSensorTemplate() + { + InitializeComponent(); + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj index c9e30457e..14b88de03 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj @@ -114,6 +114,12 @@ DancerElementEditor.xaml + + BlowerElementEditor.xaml + + + BreakSensorElementEditor.xaml + SpeedSensorElementEditor.xaml @@ -179,6 +185,12 @@ ProcessParametersTemplate.xaml + + BlowerTemplate.xaml + + + BreakSensorTemplate.xaml + SpeedSensorTemplate.xaml @@ -203,6 +215,8 @@ SingleGraphTemplate.xaml + + @@ -258,6 +272,14 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -334,6 +356,14 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -569,10 +599,20 @@ + + + + + + + + + + - + \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs new file mode 100644 index 000000000..59a96f107 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using System.Xml.Serialization; +using Tango.BL.Entities; +using Tango.SharedUI.Helpers; + +namespace Tango.MachineStudio.Technician.TechItems +{ + /// + /// Represents a Blower controller item. + /// + /// + [TechItem(16)] + public class BlowerItem : TechItem + { + private static List _BlowerConfigurations; + /// + /// Gets or sets the Blower configurations. + /// + public static List BlowerConfigurations + { + get { return _BlowerConfigurations; } + set { _BlowerConfigurations = value; } + } + + static BlowerItem() + { + BlowerConfigurations = new List(); + + foreach (var BlowerType in BL.ObservablesEntitiesAdapter.Instance.HardwareBlowerTypes) + { + BlowerConfigurations.Add(new HardwareBlower() { HardwareBlowerType = BlowerType }); + } + } + + private HardwareBlowerType _hardwareBlowerType; + /// + /// Gets or sets the type of the hardware Blower. + /// + [XmlIgnore] + public HardwareBlowerType HardwareBlowerType + { + get { return _hardwareBlowerType; } + set + { + _hardwareBlowerType = value; RaisePropertyChangedAuto(); TechName = _hardwareBlowerType != null ? _hardwareBlowerType.Description : null; ItemGuid = value != null ? value.Guid : null; + + if (_hardwareBlowerType != null) + { + HardwareBlower = BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType == _hardwareBlowerType); + } + } + } + + private HardwareBlower _hardwareBlower; + /// + /// Gets or sets the hardware Blower. + /// + [XmlIgnore] + public HardwareBlower HardwareBlower + { + get { return _hardwareBlower; } + set { _hardwareBlower = value; RaisePropertyChangedAuto(); } + } + + /// + /// Initializes a new instance of the class. + /// + public BlowerItem() : base() + { + Name = "Blower"; + Description = "Blower Controller"; + Image = ResourceHelper.GetImageFromResources("Images/blower.png"); + Color = Colors.White; + HardwareBlower = new HardwareBlower(); + } + + /// + /// Initializes a new instance of the class. + /// + /// Type of the Blower. + public BlowerItem(HardwareBlowerType BlowerType) : this() + { + HardwareBlowerType = BlowerType; + } + + /// + /// Clones this instance. + /// + /// + public override TechItem Clone() + { + BlowerItem cloned = base.Clone() as BlowerItem; + cloned.HardwareBlowerType = HardwareBlowerType; + return cloned; + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs new file mode 100644 index 000000000..cf1ed682e --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using System.Xml.Serialization; +using Tango.BL.Entities; +using Tango.SharedUI.Helpers; + +namespace Tango.MachineStudio.Technician.TechItems +{ + /// + /// Represents a BreakSensor controller item. + /// + /// + [TechItem(17)] + public class BreakSensorItem : TechItem + { + private static List _BreakSensorConfigurations; + /// + /// Gets or sets the BreakSensor configurations. + /// + public static List BreakSensorConfigurations + { + get { return _BreakSensorConfigurations; } + set { _BreakSensorConfigurations = value; } + } + + static BreakSensorItem() + { + BreakSensorConfigurations = new List(); + + foreach (var BreakSensorType in BL.ObservablesEntitiesAdapter.Instance.HardwareBreakSensorTypes) + { + BreakSensorConfigurations.Add(new HardwareBreakSensor() { HardwareBreakSensorType = BreakSensorType }); + } + } + + private HardwareBreakSensorType _hardwareBreakSensorType; + /// + /// Gets or sets the type of the hardware BreakSensor. + /// + [XmlIgnore] + public HardwareBreakSensorType HardwareBreakSensorType + { + get { return _hardwareBreakSensorType; } + set + { + _hardwareBreakSensorType = value; RaisePropertyChangedAuto(); TechName = _hardwareBreakSensorType != null ? _hardwareBreakSensorType.Description : null; ItemGuid = value != null ? value.Guid : null; + + if (_hardwareBreakSensorType != null) + { + HardwareBreakSensor = BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType == _hardwareBreakSensorType); + } + } + } + + private HardwareBreakSensor _hardwareBreakSensor; + /// + /// Gets or sets the hardware BreakSensor. + /// + [XmlIgnore] + public HardwareBreakSensor HardwareBreakSensor + { + get { return _hardwareBreakSensor; } + set { _hardwareBreakSensor = value; RaisePropertyChangedAuto(); } + } + + /// + /// Initializes a new instance of the class. + /// + public BreakSensorItem() : base() + { + Name = "Break Sensor"; + Description = "Break Sensor Controller"; + Image = ResourceHelper.GetImageFromResources("Images/break.png"); + Color = Colors.White; + HardwareBreakSensor = new HardwareBreakSensor(); + } + + /// + /// Initializes a new instance of the class. + /// + /// Type of the BreakSensor. + public BreakSensorItem(HardwareBreakSensorType BreakSensorType) : this() + { + HardwareBreakSensorType = BreakSensorType; + } + + /// + /// Clones this instance. + /// + /// + public override TechItem Clone() + { + BreakSensorItem cloned = base.Clone() as BreakSensorItem; + cloned.HardwareBreakSensorType = HardwareBreakSensorType; + return cloned; + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs index a1aba597b..11188c69d 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs @@ -34,6 +34,8 @@ namespace Tango.MachineStudio.Technician.TechItems [XmlInclude(typeof(WinderItem))] [XmlInclude(typeof(DancerItem))] [XmlInclude(typeof(SpeedSensorItem))] + [XmlInclude(typeof(BlowerItem))] + [XmlInclude(typeof(BreakSensorItem))] [XmlInclude(typeof(ProcessParametersItem))] [XmlInclude(typeof(JobRunnerItem))] public abstract class TechItem : ExtendedObject 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 cd7582fe9..f79ebb29b 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 @@ -617,6 +617,14 @@ namespace Tango.MachineStudio.Technician.ViewModels { CreateElement(bounds, Adapter.HardwareSpeedSensorTypes.FirstOrDefault()); } + else if (item is BlowerItem) + { + CreateElement(bounds, Adapter.HardwareBlowerTypes.FirstOrDefault()); + } + else if (item is BreakSensorItem) + { + CreateElement(bounds, Adapter.HardwareBreakSensorTypes.FirstOrDefault()); + } else if (item is ProcessParametersItem) { var editor = CreateElement(bounds, null); @@ -746,6 +754,16 @@ namespace Tango.MachineStudio.Technician.ViewModels (item as SpeedSensorItem).HardwareSpeedSensorType = Adapter.HardwareSpeedSensorTypes.FirstOrDefault(x => x.Guid == item.ItemGuid); CreateElement(item); } + else if (item is BlowerItem) + { + (item as BlowerItem).HardwareBlowerType = Adapter.HardwareBlowerTypes.FirstOrDefault(x => x.Guid == item.ItemGuid); + CreateElement(item); + } + else if (item is BreakSensorItem) + { + (item as BreakSensorItem).HardwareBreakSensorType = Adapter.HardwareBreakSensorTypes.FirstOrDefault(x => x.Guid == item.ItemGuid); + CreateElement(item); + } else if (item is ProcessParametersItem) { var editor = CreateElement(item); @@ -1610,6 +1628,26 @@ namespace Tango.MachineStudio.Technician.ViewModels } } + foreach (var blowerConfig in config.Blowers) + { + var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerConfig.HardwareBlowerType.ToInt32()); + + if (itemConfig != null) + { + blowerConfig.MapPrimitivesTo(itemConfig); + } + } + + foreach (var breakSensorConfig in config.BreakSensors) + { + var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.ToInt32()); + + if (itemConfig != null) + { + breakSensorConfig.MapPrimitivesTo(itemConfig); + } + } + _notification.ShowInfo("Visual elements synced to the last uploaded hardware configuration."); } else @@ -1674,6 +1712,26 @@ namespace Tango.MachineStudio.Technician.ViewModels } } + foreach (var blowerConfig in hw.HardwareBlowers) + { + var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerConfig.HardwareBlowerType.Code); + + if (itemConfig != null) + { + itemConfig.MapPrimitivesTo(blowerConfig); + } + } + + foreach (var breakSensorConfig in hw.HardwareBreakSensors) + { + var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.Code); + + if (itemConfig != null) + { + itemConfig.MapPrimitivesTo(breakSensorConfig); + } + } + using (_notification.PushTaskItem("Uploading hardware configuration...")) { try @@ -1745,6 +1803,26 @@ namespace Tango.MachineStudio.Technician.ViewModels } } + foreach (var blowerSensorConfig in hw.HardwareBlowers) + { + var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerSensorConfig.HardwareBlowerType.Code); + + if (itemConfig != null) + { + blowerSensorConfig.MapPrimitivesTo(itemConfig); + } + } + + foreach (var breakSensorConfig in hw.HardwareBreakSensors) + { + var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.Code); + + if (itemConfig != null) + { + breakSensorConfig.MapPrimitivesTo(itemConfig); + } + } + if (showMessage) { _notification.ShowInfo("Visual elements synced to hardware version " + hw.Name + ", " + hw.Version + "."); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml index c11dbc525..cc6ade388 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml @@ -202,7 +202,7 @@ - +