diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-02-11 16:09:12 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-02-11 16:09:12 +0200 |
| commit | 29ac4ab17bdc882f0f85666cb82320ca8075ba95 (patch) | |
| tree | 2879ff2c8c68bd6685a59ca25e91beb4c6f76e8f /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels | |
| parent | 08686cebb5b2e517cd356bc33d79205d8fcc8d66 (diff) | |
| download | Tango-29ac4ab17bdc882f0f85666cb82320ca8075ba95.tar.gz Tango-29ac4ab17bdc882f0f85666cb82320ca8075ba95.zip | |
Implemented TechBoard "New Project" properly.
Changed MS => PPC default intent to Diagnostics.
Implemented producer/consumer queue for NavigationControl.
Fixed issue with empty points pushed to RealTimerGraphX.
Implemented ExternalBridgeService pinging to keep connection.
Fixed issue with Firmware upgrade DFU upload failure, now fails all transport components.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs | 220 |
1 files changed, 131 insertions, 89 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 ac54a714a..36f7940ed 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 @@ -499,7 +499,11 @@ namespace Tango.MachineStudio.Technician.ViewModels if (prop != null) { var points = GetDataArray(techMonitor, prop.GetValue(data.Monitors)); - sr.PushData(points, delta_base, delta); + + if (points.Count > 0) + { + sr.PushData(points, delta_base, delta); + } } } @@ -512,15 +516,20 @@ namespace Tango.MachineStudio.Technician.ViewModels if (prop != null) { var points = GetDataMatrix(techMonitor, prop.GetValue(data.Monitors)); - mr.PushData(points, delta_base, delta); + if (points.Count > 0) + { + mr.PushData(points, delta_base, delta); + } } } lock (_elementsLock) { var elements = Tabs.SelectMany(x => x.Elements).ToList(); + var selectedTabElements = SelectedTab.Elements.ToList(); - foreach (var item in elements.Select(x => x.HostedElement as TechItem)) + //Can be updated only when visible + foreach (var item in selectedTabElements.Select(x => x.HostedElement as TechItem)) { if (item.GetType() == typeof(MonitorItem)) { @@ -550,7 +559,79 @@ namespace Tango.MachineStudio.Technician.ViewModels } } } - else if (item.GetType() == typeof(SingleGraphItem)) + else if (item.GetType() == typeof(DigitalOutItem)) + { + DigitalOutItem digitalOutItem = item as DigitalOutItem; + + var digitalPin = data.DigitalInterfaceStates.SingleOrDefault(x => x.InterfaceIO == (InterfaceIOs)digitalOutItem.TechIo.Code); + + if (digitalPin != null) + { + digitalOutItem.EffectiveValue = digitalPin.Value; + } + } + else if (item.GetType() == typeof(DigitalInItem)) + { + DigitalInItem digitalInItem = item as DigitalInItem; + + var digitalPin = data.DigitalInterfaceStates.SingleOrDefault(x => x.InterfaceIO == (InterfaceIOs)digitalInItem.TechIo.Code); + + if (digitalPin != null) + { + digitalInItem.Value = digitalPin.Value; + } + } + else if (item.GetType() == typeof(HeaterItem)) + { + HeaterItem heaterItem = item as HeaterItem; + + var heaterState = data.HeatersStates.SingleOrDefault(x => x.HeaterType == (HeaterType)heaterItem.TechHeater.Code); + + if (heaterState != null) + { + heaterItem.HeaterState = heaterState; + } + } + else if (item.GetType() == typeof(ValveItem)) + { + ValveItem valveItem = item as ValveItem; + + var valveState = data.ValvesStates.SingleOrDefault(x => x.ValveType == (ValveType)valveItem.TechValve.Code); + + if (valveState != null) + { + valveItem.EffectiveState = valveState.State; + } + } + else if (item.GetType() == typeof(BlowerItem)) + { + BlowerItem blowerItem = item as BlowerItem; + + if (data.Monitors.BlowerVoltage.Count > 0) + { + blowerItem.EffectiveActive = data.Monitors.BlowerVoltage.Last() > 0; + } + } + else if (item.GetType() == typeof(ControllerItem)) + { + ControllerItem controllerItem = item as ControllerItem; + + if (DateTime.Now > controllerItem.LastUpdateTime.AddMilliseconds(controllerItem.UpdateInterval)) + { + var componentState = data.ComponentsStates.SingleOrDefault(x => (int)x.Component == controllerItem.TechController.Code); + + if (componentState != null) + { + controllerItem.EffectiveValue = componentState.Value; + } + } + } + } + + //Must be updated all the time. + foreach (var item in elements.Select(x => x.HostedElement as TechItem)) + { + if (item.GetType() == typeof(SingleGraphItem)) { SingleGraphItem graphItem = item as SingleGraphItem; @@ -564,20 +645,23 @@ namespace Tango.MachineStudio.Technician.ViewModels { var points = GetDataArray(graphItem.TechMonitor, prop.GetValue(data.Monitors)); - List<TimeSpanDataPoint> times = new List<TimeSpanDataPoint>(); - var dPoints = points.Select(x => new DoubleDataPoint(x)).ToList(); - - for (int i = 0; i < points.Count; i++) + if (points.Count > 0) { - times.Add(delta_base.Add(TimeSpan.FromMilliseconds((delta_mili / points.Count) * i))); - } + List<TimeSpanDataPoint> times = new List<TimeSpanDataPoint>(); + var dPoints = points.Select(x => new DoubleDataPoint(x)).ToList(); - controller.PushData(times, dPoints); + for (int i = 0; i < points.Count; i++) + { + times.Add(delta_base.Add(TimeSpan.FromMilliseconds((delta_mili / points.Count) * i))); + } - var _graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.Tag == graphItem); - if (_graph_recording != null) - { - _graph_recording.PushData(points, delta_base, delta); + controller.PushData(times, dPoints); + + var _graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.Tag == graphItem); + if (_graph_recording != null) + { + _graph_recording.PushData(points, delta_base, delta); + } } } } @@ -640,73 +724,6 @@ namespace Tango.MachineStudio.Technician.ViewModels } } } - else if (item.GetType() == typeof(DigitalOutItem)) - { - DigitalOutItem digitalOutItem = item as DigitalOutItem; - - var digitalPin = data.DigitalInterfaceStates.SingleOrDefault(x => x.InterfaceIO == (InterfaceIOs)digitalOutItem.TechIo.Code); - - if (digitalPin != null) - { - digitalOutItem.EffectiveValue = digitalPin.Value; - } - } - else if (item.GetType() == typeof(DigitalInItem)) - { - DigitalInItem digitalInItem = item as DigitalInItem; - - var digitalPin = data.DigitalInterfaceStates.SingleOrDefault(x => x.InterfaceIO == (InterfaceIOs)digitalInItem.TechIo.Code); - - if (digitalPin != null) - { - digitalInItem.Value = digitalPin.Value; - } - } - else if (item.GetType() == typeof(HeaterItem)) - { - HeaterItem heaterItem = item as HeaterItem; - - var heaterState = data.HeatersStates.SingleOrDefault(x => x.HeaterType == (HeaterType)heaterItem.TechHeater.Code); - - if (heaterState != null) - { - heaterItem.HeaterState = heaterState; - } - } - else if (item.GetType() == typeof(ValveItem)) - { - ValveItem valveItem = item as ValveItem; - - var valveState = data.ValvesStates.SingleOrDefault(x => x.ValveType == (ValveType)valveItem.TechValve.Code); - - if (valveState != null) - { - valveItem.EffectiveState = valveState.State; - } - } - else if (item.GetType() == typeof(BlowerItem)) - { - BlowerItem blowerItem = item as BlowerItem; - - if (data.Monitors.BlowerVoltage.Count > 0) - { - blowerItem.EffectiveActive = data.Monitors.BlowerVoltage.Last() > 0; - } - } - else if (item.GetType() == typeof(ControllerItem)) - { - ControllerItem controllerItem = item as ControllerItem; - - if (DateTime.Now > controllerItem.LastUpdateTime.AddMilliseconds(controllerItem.UpdateInterval)) - { - var componentState = data.ComponentsStates.SingleOrDefault(x => (int)x.Component == controllerItem.TechController.Code); - - if (componentState != null) - { - controllerItem.EffectiveValue = componentState.Value; - } - } - } } } } @@ -2117,16 +2134,41 @@ namespace Tango.MachineStudio.Technician.ViewModels { var to_remove = Tabs.ToList(); - if (AddNewTab()) + var name = _notification.ShowTextInput("Enter project name", "Project Name", "untitled"); + + if (String.IsNullOrWhiteSpace(name)) { - _singleControllers.Clear(); - _multiControllers.Clear(); + return; + } - foreach (var tab in to_remove) - { - Tabs.Remove(tab); - } + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Title = "Select Technician Project Location"; + dlg.Filter = "Technician Project File|*.tpf"; + dlg.DefaultExt = ".tpf"; + dlg.FileName = name; + + if (!dlg.ShowDialog().Value) + { + return; + } + + _singleControllers.Clear(); + _multiControllers.Clear(); + _multi_graph_recordings.Clear(); + _multi_monitors_recordings.Clear(); + _single_graphs_recordings.Clear(); + _single_monitors_recordings.Clear(); + + foreach (var tab in to_remove) + { + Tabs.Remove(tab); } + + AddNewTab(name); + + _lastTechProjectFile = dlg.FileName; + File.AppendAllText(_lastTechProjectFile, ""); + SaveProject(); } /// <summary> |
