private static void GetDigitalUpdate(string mrid, States state) { measurements.TryGetValue(mrid, out Measurement measurement); DigitalMeasurement digitalMeasurement = measurement as DigitalMeasurement; digitalMeasurement.State = state; }
private static void ExecuteOpenPropertiesCommand(object parameter) { ResourceDescription rd = cnClient.GetStaticDataForElement((long)parameter); PropertiesControl propertiesControl = new PropertiesControl(); List <DigitalMeasurement> digitalMeasurements = new List <DigitalMeasurement>(); List <AnalogMeasurement> analogMeasurements = new List <AnalogMeasurement>(); PropertiesModelView propertiesModelView = new PropertiesModelView(); if (rd != null) { StaticProperties staticProperties = new StaticProperties(); staticProperties.ReadFromResourceDescription(rd); GeneralStaticPropertiesControl generalStaticPropertiesControl = new GeneralStaticPropertiesControl() { DataContext = staticProperties }; propertiesControl.StaticProperties.Content = generalStaticPropertiesControl; if (rd.ContainsProperty(ModelCode.PSR_MEASUREMENTS)) { List <long> measurementGids = rd.GetProperty(ModelCode.PSR_MEASUREMENTS).AsLongs(); foreach (long meas in measurementGids) { rd = cnClient.GetStaticDataForElement(meas); short type = ModelCodeHelper.ExtractTypeFromGlobalId(meas); PropertiesModelView.Measurements.Clear(); if (type == (short)DMSType.DISCRETE) { DigitalMeasurement digitalMeasurement = new DigitalMeasurement(); digitalMeasurement.ReadFromResourceDescription(rd); csClient.GetDiscreteMeasurement(rd.GetProperty(ModelCode.IDOBJ_MRID).AsString(), out OMSSCADACommon.States state); digitalMeasurement.State = state; digitalMeasurements.Add(digitalMeasurement); PropertiesModelView.Measurements.Add(digitalMeasurement.MRID, digitalMeasurement); } else if (type == (short)DMSType.ANALOG) { AnalogMeasurement analogMeasurement = new AnalogMeasurement(); analogMeasurement.ReadFromResourceDescription(rd); csClient.GetAnalogMeasurement(rd.GetProperty(ModelCode.IDOBJ_MRID).AsString(), out float value); analogMeasurement.Value = value; analogMeasurements.Add(analogMeasurement); PropertiesModelView.Measurements.Add(analogMeasurement.MRID, analogMeasurement); } } } } if (digitalMeasurements.Count == 0 && analogMeasurements.Count == 0) { propertiesModelView.MeasurementVisibility = Visibility.Collapsed; } else { propertiesModelView.MeasurementVisibility = Visibility.Visible; propertiesControl.Measurements.Content = new MeasurementsControl() { DataContext = propertiesModelView }; if (digitalMeasurements.Count > 0) { foreach (DigitalMeasurement measurement in digitalMeasurements) { DiscreteMeasurementControl discreteMeasurementControl = new DiscreteMeasurementControl() { DataContext = measurement }; propertiesModelView.DigitalControls.Add(discreteMeasurementControl); } propertiesModelView.DigitalMeasurementVisibility = Visibility.Visible; } else { propertiesModelView.DigitalMeasurementVisibility = Visibility.Collapsed; } if (analogMeasurements.Count > 0) { foreach (AnalogMeasurement measurement in analogMeasurements) { AnalogMeasurementControl analogMeasurementControl = new AnalogMeasurementControl() { DataContext = measurement }; propertiesModelView.AnalogControls.Add(analogMeasurementControl); } propertiesModelView.AnalogMeasurementVisibility = Visibility.Visible; } else { propertiesModelView.AnalogMeasurementVisibility = Visibility.Collapsed; } } ShellFillerShell sfs = new ShellFillerShell() /*DataContext = this*/ }