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 m_RtDataKeys; private Dictionary m_RtDataValues; public JetChamber m_JetChamber; private string m_Unit; #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"; } } 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 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; } private void OnSet() { if (IsPositionMode == true) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion",Convert.ToInt32( 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) { var 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 } }