From 37b740c1d128d694b9dcbc3669808435b5d88fec Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 13 Mar 2018 15:27:16 +0200 Subject: Implemented Gauge Control & Technician module controller item ! Auto generated diagnostics monitors & controllers PMR. --- .../ViewModels/MachineTechViewVM.cs | 72 +++++++++++++++++++--- 1 file changed, 62 insertions(+), 10 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels') 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 a5a95fc35..63aca3e70 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 @@ -39,7 +39,7 @@ namespace Tango.MachineStudio.Technician.ViewModels /// public class MachineTechViewVM : ViewModel, IShutdownListener { - private List _diagnoticsDataProperties; + private List _diagnoticsMonitorsDataProperties; private Dictionary _singleControllers; private Dictionary _multiControllers; private static object _elementsLock = new object(); @@ -178,7 +178,7 @@ namespace Tango.MachineStudio.Technician.ViewModels _multiControllers = new Dictionary(); AvailableTechItems = TechItem.GetAvailableTechItems().ToObservableCollection(); SelectedTechItem = AvailableTechItems.FirstOrDefault(); - _diagnoticsDataProperties = typeof(PushDiagnosticsResponse).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); + _diagnoticsMonitorsDataProperties = typeof(DiagnosticsMonitors).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); ApplicationManager = applicationManager; ApplicationManager.ConnectedMachineChanged += ApplicationManager_ConnectedMachineChanged; @@ -252,11 +252,11 @@ namespace Tango.MachineStudio.Technician.ViewModels if (DateTime.Now > monitorItem.LastUpdateTime.AddMilliseconds(monitorItem.UpdateInterval)) { - var prop = _diagnoticsDataProperties.SingleOrDefault(x => x.Name == monitorItem.TechMonitor.Name); + var prop = _diagnoticsMonitorsDataProperties.SingleOrDefault(x => x.Name == monitorItem.TechMonitor.Name); if (prop != null) { - monitorItem.Value = GetDataLastValue(monitorItem.TechMonitor, prop.GetValue(data)); + monitorItem.Value = GetDataLastValue(monitorItem.TechMonitor, prop.GetValue(data.Monitors)); } } } @@ -266,11 +266,11 @@ namespace Tango.MachineStudio.Technician.ViewModels if (DateTime.Now > meterItem.LastUpdateTime.AddMilliseconds(meterItem.UpdateInterval)) { - var prop = _diagnoticsDataProperties.SingleOrDefault(x => x.Name == meterItem.TechMonitor.Name); + var prop = _diagnoticsMonitorsDataProperties.SingleOrDefault(x => x.Name == meterItem.TechMonitor.Name); if (prop != null) { - meterItem.Value = GetDataLastValue(meterItem.TechMonitor, prop.GetValue(data)); + meterItem.Value = GetDataLastValue(meterItem.TechMonitor, prop.GetValue(data.Monitors)); } } } @@ -278,7 +278,7 @@ namespace Tango.MachineStudio.Technician.ViewModels { SingleGraphItem graphItem = item as SingleGraphItem; - var prop = _diagnoticsDataProperties.SingleOrDefault(x => x.Name == graphItem.TechMonitor.Name); + var prop = _diagnoticsMonitorsDataProperties.SingleOrDefault(x => x.Name == graphItem.TechMonitor.Name); if (prop != null) { @@ -286,7 +286,7 @@ namespace Tango.MachineStudio.Technician.ViewModels if (_singleControllers.TryGetValue(graphItem, out controller)) { - controller.PushData(GetDataArray(graphItem.TechMonitor, prop.GetValue(data))); + controller.PushData(GetDataArray(graphItem.TechMonitor, prop.GetValue(data.Monitors))); } } } @@ -294,7 +294,7 @@ namespace Tango.MachineStudio.Technician.ViewModels { MultiGraphItem graphItem = item as MultiGraphItem; - var prop = _diagnoticsDataProperties.SingleOrDefault(x => x.Name == graphItem.TechMonitor.Name); + var prop = _diagnoticsMonitorsDataProperties.SingleOrDefault(x => x.Name == graphItem.TechMonitor.Name); if (prop != null) { @@ -302,7 +302,7 @@ namespace Tango.MachineStudio.Technician.ViewModels if (_multiControllers.TryGetValue(graphItem, out controller)) { - controller.PushData(GetDataMatrix(graphItem.TechMonitor, prop.GetValue(data))); + controller.PushData(GetDataMatrix(graphItem.TechMonitor, prop.GetValue(data.Monitors))); } } } @@ -328,6 +328,20 @@ namespace Tango.MachineStudio.Technician.ViewModels digitalInItem.Value = digitalPin.Value; } } + 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; + } + } + } } } } @@ -466,6 +480,11 @@ namespace Tango.MachineStudio.Technician.ViewModels { CreateElement(bounds, Adapter.TechIos.Where(x => x.Type == IOType.DigitalInput.ToInt32()).FirstOrDefault()); } + else if (item is ControllerItem) + { + var editor = CreateElement(bounds, Adapter.TechControllers.FirstOrDefault()); + InitControllerItem(editor.ControllerItem); + } } /// @@ -559,6 +578,11 @@ namespace Tango.MachineStudio.Technician.ViewModels (item as DigitalInItem).TechIo = Adapter.TechIos.FirstOrDefault(x => x.Guid == item.ItemGuid); CreateElement(item); } + else if (item is ControllerItem) + { + (item as ControllerItem).TechController = Adapter.TechControllers.FirstOrDefault(x => x.Guid == item.ItemGuid); + CreateElement(item); + } } /// @@ -651,6 +675,11 @@ namespace Tango.MachineStudio.Technician.ViewModels var motorGroupItem = element.HostedElement as MotorGroupItem; InitMotorGroupItem(motorGroupItem); } + else if (element is ControllerItem) + { + var controllerItem = element.HostedElement as ControllerItem; + InitControllerItem(controllerItem); + } } } @@ -971,6 +1000,29 @@ namespace Tango.MachineStudio.Technician.ViewModels }; } + /// + /// Initializes the controller item. + /// + /// The controller item. + private void InitControllerItem(ControllerItem item) + { + item.ValueChanged += async (x, value) => + { + try + { + await MachineOperator.SetComponentValue(new SetComponentValueRequest() + { + Component = (ValueComponent)item.TechController.Code, + Value = value + }); + } + catch (Exception ex) + { + //TODO: Show Exception. + } + }; + } + #endregion #region Public Methods -- cgit v1.3.1