using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device;
using Aitex.Core.Util;
using MECF.Framework.Common.IOCore;
using MECF.Framework.Common.TwinCat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace CyberX8_RT.Devices.SRD
{
    public class TotalSRDDevice : BaseDevice, IDevice
    {
        #region 常量
        private const string FLUID_CONTAINMENT = "FluidContainment";
        private const string WATER_PRESSURE = "WaterPressure";
        #endregion
        #region 属性
        public bool FluidContainment { get; private set; }
        public double WaterPressure { get; private set; }
        #endregion
        /// 
        /// 构造函数
        /// 
        /// 
        /// 
        public TotalSRDDevice() : base("SRD", "SRD", "SRD", "SRD")
        {
        }
        /// 
        /// 初始化
        /// 
        /// 
        public bool Initialize()
        {
            SubscribeValueAction();
            return true;
        }
        /// 
        /// 订阅变量数值发生变化
        /// 
        private void SubscribeValueAction()
        {
            IOModuleManager.Instance.SubscribeModuleVariable(Module, WATER_PRESSURE, UpdateVariableValue);
            IOModuleManager.Instance.SubscribeModuleVariable(Module, FLUID_CONTAINMENT, UpdateVariableValue);
        }
        /// 更新变量数值
        /// 
        /// 
        /// 
        private void UpdateVariableValue(string variable, object value)
        {
            if (variable == FLUID_CONTAINMENT)
            {
                FluidContainment = (bool)value;
            }
            else if (variable == WATER_PRESSURE)
            {
                WaterPressure = (double)value;
            }
        }
        public void Monitor()
        {
        }
        public void Reset()
        {
        }
        public void Terminate()
        {
        }
    }
}