/// <summary> /// Sets the opc value. /// </summary> /// <param name="reference">The monitored item reference.</param> /// <param name="opcValue">The OPC value structure.</param> private void SetOpcValue(MonitoredItemReference reference, DAVtq opcValue) { switch (reference.FieldType) { case FieldTypes.Quality: this.RuntimeMeasurements[reference.Index].Quality = this.FormatOpcVtq(reference.MappingType, opcValue); break; case FieldTypes.Timestamp: this.RuntimeMeasurements[reference.Index].Timestamp = this.FormatOpcVtq(reference.MappingType, opcValue); break; case FieldTypes.Unit: this.RuntimeMeasurements[reference.Index].Unit = this.FormatOpcVtq(reference.MappingType, opcValue); break; case FieldTypes.Value: this.RuntimeMeasurements[reference.Index].Value = this.FormatOpcVtq(reference.MappingType, opcValue); break; } }
/// <summary> /// Adds a new item to the collection. /// </summary> /// <param name="reference">The reference to the corresponding monitored item from the calling client.</param> /// <param name="serverClass">The server class.</param> /// <param name="itemId">The OPC item id.</param> /// <remarks> /// This method adds a new item or only the reference when the item exists already. /// </remarks> public void Add(MonitoredItemReference reference, string serverClass, string itemId) { var descriptor = new Descriptor(serverClass, itemId); References references; if (!this.ItemDescriptors.TryGetValue(descriptor, out references)) { references = new References() { reference }; this.ItemDescriptors.Add(descriptor, references); this.ItemGroupArgumentList.Add( new DAItemGroupArguments( new ServerDescriptor(serverClass), new DAItemDescriptor(itemId), new DAGroupParameters(this.OpcRefreshRate), references)); } else { references.Add(reference); } }