#region Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved //----------------------------------------------------------------------------- // Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved // Web: https://www.technosoftware.com // // The source code in this file is covered under a dual-license scenario: // - Owner of a purchased license: SCLA 1.0 // - GPL V3: everybody else // // SCLA license terms accompanied with this source code. // See SCLA 1.0: https://technosoftware.com/license/Source_Code_License_Agreement.pdf // // GNU General Public License as published by the Free Software Foundation; // version 3 of the License are accompanied with this source code. // See https://technosoftware.com/license/GPLv3License.txt // // This source code is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. //----------------------------------------------------------------------------- #endregion Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved #region Using Directives using System; #endregion namespace Technosoftware.DaAeHdaClient.Da { /// /// Contains the value for a single item. /// [Serializable] public class TsCDaItemValue : OpcItem { #region Fields private TsCDaQuality daQuality_ = TsCDaQuality.Bad; private DateTime timestamp_ = DateTime.MinValue; #endregion #region Constructors, Destructor, Initialization /// /// Initializes the object with default values. /// public TsCDaItemValue() { } /// /// Initializes the object with and ItemIdentifier object. /// public TsCDaItemValue(OpcItem item) { if (item == null) { return; } ItemName = item.ItemName; ItemPath = item.ItemPath; ClientHandle = item.ClientHandle; ServerHandle = item.ServerHandle; } /// /// Initializes the object with the specified item name. /// public TsCDaItemValue(string itemName) : base(itemName) { } /// /// Initializes object with the specified ItemValue object. /// public TsCDaItemValue(TsCDaItemValue item) : base(item) { if (item == null) { return; } Value = OpcConvert.Clone(item.Value); Quality = item.Quality; QualitySpecified = item.QualitySpecified; Timestamp = item.Timestamp; TimestampSpecified = item.TimestampSpecified; } #endregion #region Properties /// /// The item value. /// public object Value { get; set; } /// /// The quality of the item value. /// public TsCDaQuality Quality { get => daQuality_; set => daQuality_ = value; } /// /// Whether the quality is specified. /// public bool QualitySpecified { get; set; } /// /// The timestamp for the item value. /// The ApplicationInstance.TimeAsUtc property defines /// the time format (UTC or local time). /// public DateTime Timestamp { get => timestamp_; set => timestamp_ = value; } /// /// Whether the timestamp is specified. /// public bool TimestampSpecified { get; set; } #endregion #region ICloneable Members /// /// Creates a deep copy of the object. /// public override object Clone() { var clone = (TsCDaItemValue)MemberwiseClone(); clone.Value = OpcConvert.Clone(Value); return clone; } #endregion } }