| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | using MECF.Framework.Common.CommonData.DeviceData;using MECF.Framework.Common.DataCenter;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;namespace Venus_MainPages.ViewModels{    public class ButterflyValveViewModel : BindableBase    {        #region 私有字段        public string ModuleName = "PMA";        private string m_DeviceName = "PendulumValve";        private bool m_IsPositionMode;        private int m_SetValue;        private int? m_FeedBackValue;        //private List<string> m_RtDataKeys;        private Dictionary<string, object> m_RtDataValues;        #endregion        #region 属性        public bool IsPositionMode        {         get { return m_IsPositionMode; }        set             {                if (SetValue > 1000&&value==true)                {                    SetValue = 1000;                }                SetProperty(ref m_IsPositionMode, value);             }        }        public int 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 int? 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); }        }        #endregion        #region 命令        private DelegateCommand _SetCommand;        public DelegateCommand SetCommand =>            _SetCommand ?? (_SetCommand = new DelegateCommand(OnSet));        #endregion        public ButterflyValveViewModel()        {                       DispatcherTimer timer = new DispatcherTimer();            timer.Interval = TimeSpan.FromSeconds(0.1);            timer.Tick += timer_Tick;            timer.Start();        }        #region 命令方法        private void OnSet()        {            if (IsPositionMode == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion",SetValue);            }            else            {                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 = pendulumValveData.Pressure;            }        }        #endregion    }}
 |