/// <summary> /// Creates the monitored item collection. /// </summary> /// <param name="configuredMeasurements">The configured measurements.</param> /// <param name="opcRefreshRate">The OPC refresh rate in milliseconds.</param> /// <returns> /// The collection of monitored items. <see cref="MonitoredItems"/>. /// </returns> public MonitoredItems Create(ConfiguredMeasurements configuredMeasurements, int opcRefreshRate) { var monitoredItems = new MonitoredItems(opcRefreshRate); // Loop on the configured measurements. for (var i = 0; i < configuredMeasurements.Count; i++) { var configuredMeasurement = configuredMeasurements[i]; ProcessProperty( configuredMeasurement.Quality, i, FieldTypes.Quality, monitoredItems); ProcessProperty( configuredMeasurement.Timestamp, i, FieldTypes.Timestamp, monitoredItems); ProcessProperty( configuredMeasurement.Unit, i, FieldTypes.Unit, monitoredItems); ProcessProperty( configuredMeasurement.Value, i, FieldTypes.Value, monitoredItems); } return(monitoredItems); }
/// <summary> /// Processes a property to see whether to add a monitored item. /// </summary> /// <param name="configuredMeasurementItem">The configured measurement item.</param> /// <param name="index">The index.</param> /// <param name="fieldType">The field Type.</param> /// <param name="monitoredItems">The monitored items.</param> private static void ProcessProperty(ConfiguredMeasurementItem configuredMeasurementItem, int index, FieldTypes fieldType, MonitoredItems monitoredItems) { // Continue only if it is a OPC mapping type. if (configuredMeasurementItem.MappingType > 0) { string serverClass; string itemId; if (ParseItemDescriptor(configuredMeasurementItem.Value, out serverClass, out itemId)) { monitoredItems.Add( new MonitoredItemReference(index, fieldType, configuredMeasurementItem.MappingType), serverClass, itemId); } } }