using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; using Aitex.Core.Common.DeviceData; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.OperationCenter; using Prism.Commands; using Prism.Mvvm; using Venus_Core; namespace Venus_MainPages.ViewModels { public class MFCVerificationViewModel:BindableBase { #region 私有字段 public ObservableCollection m_MFC1VerificationPoints = new ObservableCollection (); public ObservableCollection m_MFC2VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC3VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC4VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC5VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC6VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC7VerificationPoints = new ObservableCollection(); public ObservableCollection m_MFC8VerificationPoints = new ObservableCollection(); private AITMfcData m_MFC1Data; private AITMfcData m_MFC2Data; private AITMfcData m_MFC3Data; private AITMfcData m_MFC4Data; private AITMfcData m_MFC5Data; private AITMfcData m_MFC6Data; private AITMfcData m_MFC7Data; private AITMfcData m_MFC8Data; private List m_RtDataKeys = new List(); private Dictionary m_RtDataValues; private string ModuleName="PMA"; #endregion #region 属性 public ObservableCollection MFC1VerificationPoints { get { return m_MFC1VerificationPoints; } set { SetProperty(ref m_MFC1VerificationPoints, value); } } public ObservableCollection MFC2VerificationPoints { get { return m_MFC2VerificationPoints; } set { SetProperty(ref m_MFC2VerificationPoints, value); } } public ObservableCollection MFC3VerificationPoints { get { return m_MFC3VerificationPoints; } set { SetProperty(ref m_MFC3VerificationPoints, value); } } public ObservableCollection MFC4VerificationPoints { get { return m_MFC4VerificationPoints; } set { SetProperty(ref m_MFC4VerificationPoints, value); } } public ObservableCollection MFC5VerificationPoints { get { return m_MFC5VerificationPoints; } set { SetProperty(ref m_MFC5VerificationPoints, value); } } public ObservableCollection MFC6VerificationPoints { get { return m_MFC6VerificationPoints; } set { SetProperty(ref m_MFC6VerificationPoints, value); } } public ObservableCollection MFC7VerificationPoints { get { return m_MFC7VerificationPoints; } set { SetProperty(ref m_MFC7VerificationPoints, value); } } public ObservableCollection MFC8VerificationPoints { get { return m_MFC8VerificationPoints; } set { SetProperty(ref m_MFC8VerificationPoints, value); } } public Dictionary RtDataValues { get { return m_RtDataValues; } set { SetProperty(ref m_RtDataValues, value); } } public AITMfcData MFC1Data { get { return m_MFC1Data; } set { SetProperty(ref m_MFC1Data, value); } } public AITMfcData MFC2Data { get { return m_MFC2Data; } set { SetProperty(ref m_MFC2Data, value); } } public AITMfcData MFC3Data { get { return m_MFC3Data; } set { SetProperty(ref m_MFC3Data, value); } } public AITMfcData MFC4Data { get { return m_MFC4Data; } set { SetProperty(ref m_MFC4Data, value); } } public AITMfcData MFC5Data { get { return m_MFC5Data; } set { SetProperty(ref m_MFC5Data, value); } } public AITMfcData MFC6Data { get { return m_MFC6Data; } set { SetProperty(ref m_MFC6Data, value); } } public AITMfcData MFC7Data { get { return m_MFC7Data; } set { SetProperty(ref m_MFC7Data, value); } } public AITMfcData MFC8Data { get { return m_MFC8Data; } set { SetProperty(ref m_MFC8Data, value); } } #endregion #region 命令 private DelegateCommand _StartOnePointVerificationCommand; public DelegateCommand StartOnePointVerificationCommand => _StartOnePointVerificationCommand ?? (_StartOnePointVerificationCommand = new DelegateCommand(OnStartOnePointVerification)); private DelegateCommand _StartTenPointVerificationCommand; public DelegateCommand StartTenPointVerificationCommand => _StartTenPointVerificationCommand ?? (_StartTenPointVerificationCommand = new DelegateCommand(OnStartTenPointVerification)); #endregion public MFCVerificationViewModel() { addDataKeys(); DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += timer_Tick; timer.Start(); RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys); var MFC1Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas1"]; int delta1 = (int)MFC1Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC1VerificationPoints.Add(delta1 + delta1 * i); } var MFC2Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas2"]; int delta12 = (int)MFC2Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC2VerificationPoints.Add(delta12 + delta12 * i); } var MFC3Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas3"]; int delta13 = (int)MFC3Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC3VerificationPoints.Add(delta13 + delta13 * i); } var MFC4Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas4"]; int delta14 = (int)MFC4Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC4VerificationPoints.Add(delta14 + delta14 * i); } var MFC5Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas5"]; int delta15 = (int)MFC5Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC5VerificationPoints.Add(delta15 + delta15 * i); } var MFC6Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas6"]; int delta16 = (int)MFC6Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC6VerificationPoints.Add(delta16 + delta16 * i); } var MFC7Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas7"]; int delta17 = (int)MFC7Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC7VerificationPoints.Add(delta17 + delta17 * i); } var MFC8Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas8"]; int delta18 = (int)MFC8Data.Scale / 10; for (int i = 0; i < 10; i++) { MFC8VerificationPoints.Add(delta18 + delta18 * i); } } #region 命令方法 private void OnStartOnePointVerification(object obj) { //string gasName = oj1.ToString(); //float.TryParse(oj2.ToString(), out float flow); //int.TryParse(oj3.ToString(), out int flowCount); var values = (object[])obj; string gasName = values[0].ToString(); float flow = float.Parse(values[1].ToString()); //float.TryParse(oj2.ToString(), out float flow); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.MFCVerification}", gasName, flow,1); } private void OnStartTenPointVerification(object obj) { //string gasName = oj1.ToString(); //float.TryParse(oj2.ToString(), out float flow); //int.TryParse(oj3.ToString(), out int flowCount); var values = (object[])obj; string gasName = values[0].ToString(); float flow = float.Parse(values[1].ToString()); //float.TryParse(oj2.ToString(), out float flow); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.MFCVerification}", gasName, flow, 10); } #endregion #region 私有方法 void timer_Tick(object sender, EventArgs e) { MFC1Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas1"]; MFC2Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas2"]; MFC3Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas3"]; MFC4Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas4"]; MFC5Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas5"]; MFC6Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas6"]; MFC7Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas7"]; MFC8Data = (AITMfcData)RtDataValues[$"{ModuleName}.MfcGas8"]; } private void addDataKeys() { m_RtDataKeys.Add($"{ModuleName}.MfcGas1"); m_RtDataKeys.Add($"{ModuleName}.MfcGas2"); m_RtDataKeys.Add($"{ModuleName}.MfcGas3"); m_RtDataKeys.Add($"{ModuleName}.MfcGas4"); m_RtDataKeys.Add($"{ModuleName}.MfcGas5"); m_RtDataKeys.Add($"{ModuleName}.MfcGas6"); m_RtDataKeys.Add($"{ModuleName}.MfcGas7"); m_RtDataKeys.Add($"{ModuleName}.MfcGas8"); } #endregion } public class MFCVerificationDataListItem : BindableBase { private float _Setpoint; public float Setpoint { get { return _Setpoint; } set { _Setpoint = value; RaisePropertyChanged("Setpoint"); } } private float _CalculateValue; public float CalculateValue { get { return _CalculateValue; } set { _CalculateValue = value; RaisePropertyChanged("CalculateValue"); } } private float _ElapseTime; public float ElapseTime { get { return _ElapseTime; } set { _ElapseTime = value; RaisePropertyChanged("ElapseTime"); } } private float _pressure; public float Pressure { get { return _pressure; } set { _pressure = value; RaisePropertyChanged("Pressure"); } } } public class MFCVerificationErrorRateListItem : BindableBase { public float Setpoint { get; set; } public float CalculateValue { get; set; } public float ErrorRate { get; set; } } public class MFCVerificationData : BindableBase { public string Module { get; set; } public string Name { get; set; } public string Time { get; set; } public float Percent10Setpoint { get; set; } public float Percent10Calculate { get; set; } public float Percent20Setpoint { get; set; } public float Percent20Calculate { get; set; } public float Percent30Setpoint { get; set; } public float Percent30Calculate { get; set; } public float Percent40Setpoint { get; set; } public float Percent40Calculate { get; set; } public float Percent50Setpoint { get; set; } public float Percent50Calculate { get; set; } public float Percent60Setpoint { get; set; } public float Percent60Calculate { get; set; } public float Percent70Setpoint { get; set; } public float Percent70Calculate { get; set; } public float Percent80Setpoint { get; set; } public float Percent80Calculate { get; set; } public float Percent90Setpoint { get; set; } public float Percent90Calculate { get; set; } public float Percent100Setpoint { get; set; } public float Percent100Calculate { get; set; } public float Setpoint { get; set; } public float Calculate { get; set; } } }