示例#1
0
        public void DefineUshortTag(
            RegisterFunction function,
            TagAddressMaskType masktype = TagAddressMaskType.None,
            ushort mask = ushort.MaxValue,
            TagAddressMergeType mergetype = TagAddressMergeType.OrMerge,
            ushort range = ushort.MinValue)
        {
            if (InnerTag != null)
            {
                return;
            }
            UshortTag innertag = new UshortTag(function)
            {
                MaskType  = masktype,
                Mask      = mask,
                MergeType = mergetype,
                Range     = range
            };

            InnerTag = innertag;
            InnerTag.TagValueChangedEvent += delegate(ITagType tag)
            {
                TagStatusChanged?.Invoke(this, EventArgs.Empty);
            };
        }
        public TagTypeController(TagAddressMergeType mergetype = TagAddressMergeType.OrMerge, TagAddressMaskType masktype = TagAddressMaskType.OrMask)
        {
            if (typeof(TType) == typeof(float) && typeof(TModbusType) == typeof(ushort))
            {
                InnerTagType = TagType.FloatTag;
            }
            else if (typeof(TType) == typeof(ushort) && typeof(TModbusType) == typeof(ushort))
            {
                InnerTagType = TagType.UshortTag;
            }
            else if (typeof(TType) == typeof(bool) && typeof(TModbusType) == typeof(bool))
            {
                InnerTagType = TagType.BoolTag;
            }
            else if (typeof(TType) == typeof(uint) && typeof(TModbusType) == typeof(ushort))
            {
                InnerTagType = TagType.UintTag;
            }
            else
            {
                throw new ArgumentException();
            }

            MergeType = mergetype;
            MaskType  = masktype;
            Mask      = default;
        }
示例#3
0
        public void DefineBoolTag(
            StatusFunction function,
            TagAddressMaskType masktype = TagAddressMaskType.None,
            bool mask = false,
            TagAddressMergeType mergetype = TagAddressMergeType.OrMerge)
        {
            if (InnerTag != null)
            {
                return;
            }
            BoolTag innertag = new BoolTag(function)
            {
                MaskType  = masktype,
                Mask      = mask,
                MergeType = mergetype
            };

            InnerTag = innertag;
            InnerTag.TagValueChangedEvent += delegate(ITagType tag)
            {
                TagStatusChanged?.Invoke(this, EventArgs.Empty);
            };
        }