| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | using Aitex.Core.RT.SCCore;using MECF.Framework.Common.CommonData.DeviceData;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.OperationCenter;using Prism.Commands;using Prism.Mvvm;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Threading;using Venus_Core;namespace Venus_MainPages.ViewModels{    public class ButterflyValveViewModel : BindableBase    {        #region 私有字段        public string ModuleName = "PMA";        private string m_DeviceName = "PendulumValve";        private bool m_IsPositionMode;        private float m_SetValue;        private float? m_FeedBackValue;        //private List<string> m_RtDataKeys;        private Dictionary<string, object> m_RtDataValues;        public JetChamber m_JetChamber;        private string m_Unit;        private AITPendulumValveData pendulumValveData;        #endregion        #region 属性        public bool IsPositionMode        {         get { return m_IsPositionMode; }        set             {                if (SetValue > 1000&&value==true)                {                    SetValue = 1000;                }                if (value == true)                {                    Unit = "‰";                }                if (value == false)                {                    if ((m_JetChamber == JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))                    {                        Unit = "Pa";                    }                    else                    {                        Unit = "mTorr";                    }                }                if (m_IsPositionMode == true && value == false)                {                    SetValue = pendulumValveData.PressureSetPoint;                }                else if (m_IsPositionMode == false && value == true)                {                    SetValue = pendulumValveData.PositionSetPoint;                }                SetProperty(ref m_IsPositionMode, value);             }        }        public float SetValue        {            get { return m_SetValue; }            set             {                if (value > 1000 && IsPositionMode==true)                {                 value = 1000;                }                if (value < 0 && IsPositionMode == true)                {                 value = 0;                }                SetProperty(ref m_SetValue, value);             }        }        public float? FeedBackValue        {            get { return m_FeedBackValue; }            set { SetProperty(ref m_FeedBackValue, value); }        }        public string DeviceName        {            get { return m_DeviceName; }            set { SetProperty(ref m_DeviceName, value); }        }        public Dictionary<string, object> RtDataValues        {            get { return m_RtDataValues; }            set { SetProperty(ref m_RtDataValues, value); }        }        public string Unit        {            get { return m_Unit; }            set { SetProperty(ref m_Unit, value); }        }        #endregion        #region 命令        private DelegateCommand _SetCommand;        public DelegateCommand SetCommand =>            _SetCommand ?? (_SetCommand = new DelegateCommand(OnSet));        private DelegateCommand _LoadedCommand;        public DelegateCommand LoadedCommand =>            _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(OnLoaded));        #endregion        public ButterflyValveViewModel()        {                       DispatcherTimer timer = new DispatcherTimer();            timer.Interval = TimeSpan.FromSeconds(0.1);            timer.Tick += timer_Tick;            timer.Start();            //m_JetChamber = (JetChamber)Enum.Parse(typeof(JetChamber), QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.ChamberType").ToString());        }        #region 命令方法        private void OnLoaded()        {                      m_JetChamber = (JetChamber)Enum.Parse(typeof(JetChamber), QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.ChamberType").ToString());            IsPositionMode = false;            var pendulumValveData = (AITPendulumValveData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.PendulumValve.DeviceData");            SetValue = pendulumValveData.PressureSetPoint;        }        private void OnSet()        {            if (IsPositionMode == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion", SetValue);            }            else            {                //if (PressureType == PressureType.Pa && (m_JetChamber == JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))                //{                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue* 7.5006F);                //}                //else                //{                 //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue);                //}                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue);            }        }        void timer_Tick(object sender, EventArgs e)        {            pendulumValveData=  (AITPendulumValveData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.PendulumValve.DeviceData");            if (IsPositionMode == true)            {                FeedBackValue = pendulumValveData.Position;            }            else            {                FeedBackValue = Convert.ToSingle(Math.Round(pendulumValveData.Pressure, 1));                //if ( (m_JetChamber==JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))                //{                 //    FeedBackValue = (float)Math.Round(pendulumValveData.Pressure*0.1333F, 1);                //}                //else                //{                //    FeedBackValue = (float)Math.Round(pendulumValveData.Pressure, 1);                //}            }        }        #endregion    }}
 |