ModBusMonitorAddress.cs 1.24 KB
using System;

namespace HslCommunication.ModBus
{
    /// <summary>
    /// 服务器端提供的数据监视服务
    /// </summary>
    public class ModBusMonitorAddress
    {
        /// <summary>
        /// 本次数据监视的地址
        /// </summary>
        public ushort Address { get; set; }

        /// <summary>
        /// 数据写入时触发的事件
        /// </summary>
        public event Action<ModBusMonitorAddress, short> OnWrite;

        /// <summary>
        /// 数据改变时触发的事件
        /// </summary>
        public event Action<ModBusMonitorAddress, short, short> OnChange;

        /// <summary>
        /// 强制设置触发事件
        /// </summary>
        /// <param name="value"></param>
        public void SetValue(short value)
        {
            OnWrite?.Invoke(this, value);
        }

        /// <summary>
        /// 强制设置触发值变更事件
        /// </summary>
        /// <param name="before">变更前的值</param>
        /// <param name="after">变更后的值</param>
        public void SetChangeValue(short before, short after)
        {
            if (before != after)
            {
                OnChange?.Invoke(this, before, after);
            }
        }
    }


}