using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
namespace Aitex.Core.Common.DeviceData
{
    [DataContract]
    [Serializable]
    public class AITHeaterData : NotifiableItem 
    {
 
        [DataMember]
        public string Module { get; set; }
        [DataMember]
        public string DeviceName { get; set; }
        /// 
        /// 显示在界面上的名称
        /// 
        [DataMember]
        public string DisplayName { get; set; }
        /// 
        /// IO 表中定义的物理编号,物理追溯使用 比如: M122
        /// 
        [DataMember]
        public string DeviceSchematicId { get; set; }
        [DataMember]
        public string Unit { get; set; }
        [DataMember]
        public string Description { get; set; }
        /// 
        /// 量程
        /// 
        [DataMember]
        public double Scale { get; set; }
        /// 
        /// 设定值
        /// 
        [DataMember]
        public double SetPoint { get; set; }
        [DataMember]
        public double FeedBack { get; set; }
        /// 
        /// 默认值
        /// 
        [DataMember]
        public double DefaultValue { get; set; }
        /// 
        /// 默认值
        /// 
        [DataMember]
        public double DefaultSetPoint { get; set; }
        /// 
        /// 是否有报警
        /// 
        [DataMember]
        public bool IsWarning { get; set; }
        /// 
        /// alarm或是erro时显示的信息
        /// 
        [DataMember]
        public string ErroMessage { get; set; }
        /// 
        /// MFC,PC
        /// 
        [DataMember]
        public string Type { get; set; }
        [DataMember]
        public double Factor { get; set; }
        [DataMember]
        public bool IsPowerOn
        {
            get;
            set;
        }
        [DataMember]
        public bool IsPowerOnSetPoint
        {
            get;
            set;
        }
        [DataMember]
        public bool IsControlTcBroken
        {
            get;
            set;
        }
        [DataMember]
        public bool IsTcDeviation
        {
            get;
            set;
        }
        [DataMember]
        public bool IsMonitorTcBroken
        {
            get;
            set;
        }
        [DataMember]
        public double MonitorTcFeedBack { get; set; }
        [DataMember]
        public double CoolantInletTcFeedback { get; set; }
        [DataMember]
        public double CoolantOutletTcFeedback { get; set; }
        public AITHeaterData()
        {
            DisplayName = "Undefined";
            Factor = 1.0;
            Unit = "℃";
            Type = "Heater";
        }
        public void Update(IDeviceData data)
        {
            throw new NotImplementedException();
        }
    }
    public class AITHeaterOperation
    {
        public const string Ramp = "Ramp";
        public const string SetPowerOnOff = "SetPowerOnOff";
        public const string SetTemperature = "SetTemperature";
    }
    public class AITHeaterPropertyName
    {
        public const string ControlTcFeedback = "ControlTcFeedback";
        public const string MonitorTcFeedback = "MonitorTcFeedback";
        public const string CoolantInletTempFeedback = "CoolantInletTempFeedback";
        public const string CoolantOutletTempFeedback = "CoolantOutletTempFeedback";
        public const string ControlTcSetPoint = "ControlTcSetPoint";
        public const string ControlTcSetPointView = "ControlTcSetPointView";
        
        public const string IsControlTcBroken = "IsControlTcBroken";
        public const string IsMonitorTcBroken = "IsMonitorTcBroken";
        public const string IsTcDeviation     = "IsTcDeviation";
        public const string IsPowerOnFeedback = "IsPowerOnFeedback";
        public const string IsPowerOnSetPoint = "IsPowerOnSetPoint";
    }
}