/// <summary>
        /// Creates the tag.
        /// </summary>
        /// <param name="tagName">Name of the tag.</param>
        /// <param name="dataType">Type of the data.</param>
        /// <param name="tagType">Type of the tag.</param>
        /// <param name="engineeringUnits">The engineering units.</param>
        /// <param name="writeable">if set to <c>true</c> the tag is writeable.</param>
        public void CreateTag(
            string tagName, 
            UnderlyingSystemDataType dataType, 
            UnderlyingSystemTagType tagType, 
            string engineeringUnits,
            bool writeable)
        {
            // create tag.
            UnderlyingSystemTag tag = new UnderlyingSystemTag();

            tag.Block = this;
            tag.Name = tagName;
            tag.Description = null;
            tag.EngineeringUnits = engineeringUnits;
            tag.DataType = dataType;
            tag.TagType = tagType;
            tag.IsWriteable = writeable;
            tag.Labels = null;
            tag.EuRange = null;

            switch (tagType)
            {
                case UnderlyingSystemTagType.Analog:
                {
                    tag.Description = "An analog value.";
                    tag.TagType = UnderlyingSystemTagType.Analog;
                    tag.EuRange = new double[] { 100, 0 };
                    break;
                }

                case UnderlyingSystemTagType.Digital:
                {
                    tag.Description = "A digital value.";
                    tag.TagType = UnderlyingSystemTagType.Digital;
                    tag.Labels = new string[] { "Online", "Offline" };
                    break;
                }

                case UnderlyingSystemTagType.Enumerated:
                {
                    tag.Description = "An enumerated value.";
                    tag.TagType = UnderlyingSystemTagType.Enumerated;
                    tag.Labels = new string[] { "Red", "Yellow", "Green" };
                    break;
                }

                default:
                {
                    tag.Description = "A generic value.";
                    break;
                }
            }

            // set an initial value.
            switch (tag.DataType)
            {
                case UnderlyingSystemDataType.Integer1: { tag.Value = (sbyte)0; break; }
                case UnderlyingSystemDataType.Integer2: { tag.Value = (short)0; break; }
                case UnderlyingSystemDataType.Integer4: { tag.Value = (int)0; break; }
                case UnderlyingSystemDataType.Real4: { tag.Value = (float)0; break; }
                case UnderlyingSystemDataType.String: { tag.Value = String.Empty; break; }
            }

            lock (m_tags)
            {
                m_tags.Add(tag);
                m_timestamp = DateTime.UtcNow;
            }
        }
Example #2
0
        /// <summary>
        /// Creates the tag.
        /// </summary>
        /// <param name="tagName">Name of the tag.</param>
        /// <param name="dataType">Type of the data.</param>
        /// <param name="tagType">Type of the tag.</param>
        /// <param name="engineeringUnits">The engineering units.</param>
        /// <param name="writeable">if set to <c>true</c> the tag is writeable.</param>
        public void CreateTag(
            string tagName,
            UnderlyingSystemDataType dataType,
            UnderlyingSystemTagType tagType,
            string engineeringUnits,
            bool writeable)
        {
            // create tag.
            var tag = new UnderlyingSystemTag {
                Block            = this,
                Name             = tagName,
                Description      = null,
                EngineeringUnits = engineeringUnits,
                DataType         = dataType,
                TagType          = tagType,
                IsWriteable      = writeable,
                Labels           = null,
                EuRange          = null
            };

            switch (tagType)
            {
            case UnderlyingSystemTagType.Analog: {
                tag.Description = "An analog value.";
                tag.TagType     = UnderlyingSystemTagType.Analog;
                tag.EuRange     = new double[] { 100, 0 };
                break;
            }

            case UnderlyingSystemTagType.Digital: {
                tag.Description = "A digital value.";
                tag.TagType     = UnderlyingSystemTagType.Digital;
                tag.Labels      = new string[] { "Online", "Offline" };
                break;
            }

            case UnderlyingSystemTagType.Enumerated: {
                tag.Description = "An enumerated value.";
                tag.TagType     = UnderlyingSystemTagType.Enumerated;
                tag.Labels      = new string[] { "Red", "Yellow", "Green" };
                break;
            }

            default: {
                tag.Description = "A generic value.";
                break;
            }
            }

            // set an initial value.
            switch (tag.DataType)
            {
            case UnderlyingSystemDataType.Integer1: { tag.Value = (sbyte)0; break; }

            case UnderlyingSystemDataType.Integer2: { tag.Value = (short)0; break; }

            case UnderlyingSystemDataType.Integer4: { tag.Value = 0; break; }

            case UnderlyingSystemDataType.Real4: { tag.Value = (float)0; break; }

            case UnderlyingSystemDataType.String: { tag.Value = string.Empty; break; }
            }

            lock (_tags) {
                _tags.Add(tag);
                Timestamp = DateTime.UtcNow;
            }
        }