123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- using LiveCharts;
- using MECF.Framework.Common.DataCenter;
- using MECF.Framework.Common.OperationCenter;
- using Microsoft.Win32;
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.IO;
- using System.Linq;
- using System.Windows.Threading;
- using CyberX8_MainPages.Unity;
- using Venus_Unity;
- namespace CyberX8_MainPages.ViewModels
- {
- internal class VATPerformanceViewModel : BindableBase
- {
- #region 私有字段
- private int m_GasFlow;
- private int m_GasTime;
- private int m_GasSelectedIndex;
- public string ModuleName;
- ChartValues<double> m_CurrentLineSeries = new ChartValues<double>();
- ChartValues<double> m_ReferenceLineSeries = new ChartValues<double>();
- DispatcherTimer timer = new DispatcherTimer();
- VATPerformanceResult m_VATPerformanceResult;
- private bool m_MFC7IsEnable;
- private bool m_MFC8IsEnable;
- private bool m_IsAutoMode;
- #endregion
- #region 属性
- public int GasFlow
- {
- get { return m_GasFlow; }
- set { SetProperty(ref m_GasFlow, value); }
- }
- public int GasTime
- {
- get { return m_GasTime; }
- set { SetProperty(ref m_GasTime, value); }
- }
- public int GasSelectedIndex
- {
- get { return m_GasSelectedIndex; }
- set { SetProperty(ref m_GasSelectedIndex, value); }
- }
- public ChartValues<double> CurrentLineSeries
- {
- get { return m_CurrentLineSeries; }
- set { SetProperty(ref m_CurrentLineSeries, value); }
- }
- public ChartValues<double> ReferenceLineSeries
- {
- get { return m_ReferenceLineSeries; }
- set { SetProperty(ref m_ReferenceLineSeries, value); }
- }
- public bool MFC7IsEnable
- {
- get { return m_MFC7IsEnable; }
- set { SetProperty(ref m_MFC7IsEnable, value); }
- }
- public bool MFC8IsEnable
- {
- get { return m_MFC8IsEnable; }
- set { SetProperty(ref m_MFC8IsEnable, value); }
- }
- public bool IsAutoMode
- {
- get { return m_IsAutoMode; }
- set { SetProperty(ref m_IsAutoMode, value); }
- }
- #endregion
- #region 命令
- private DelegateCommand _SelectGasCommand;
- public DelegateCommand SelectGasCommand =>
- _SelectGasCommand ?? (_SelectGasCommand = new DelegateCommand(OnSelectGas));
- private DelegateCommand _StartCommand;
- public DelegateCommand StartCommand =>
- _StartCommand ?? (_StartCommand = new DelegateCommand(OnStart));
- private DelegateCommand _LoadReferenceCommand;
- public DelegateCommand LoadReferenceCommand =>
- _LoadReferenceCommand ?? (_LoadReferenceCommand = new DelegateCommand(OnLoadReference));
- private DelegateCommand _AbortCommand;
- public DelegateCommand AbortCommand =>
- _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
- private DelegateCommand _SaveCommand;
- public DelegateCommand SaveCommand =>
- _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave));
- #endregion
- #region 构造函数
- public VATPerformanceViewModel()
- {
- OnSelectGas();
- GasTime = 60;
- timer.Interval = TimeSpan.FromSeconds(2);
- timer.Tick += Timer_Tick;
- }
- #endregion
- #region 命令方法
- private void OnSelectGas()
- {
- var value=Convert.ToInt32( QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{(GasSelectedIndex+1).ToString()}.MfcN2Scale"));
- var xishu= Convert.ToDouble(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{(GasSelectedIndex + 1).ToString()}.MfcScaleFactor"));
- GasFlow = (int)(value * xishu) / 2;
- }
- //public enum CMPressure
- //{
- // CM1,
- // CM2,
- //}
- //private CMPressure currentCMPressure = CMPressure.CM1;
- private void OnStart()
- {
- //currentCMPressure = CMPressure.CM1;
- m_VATPerformanceResult = new VATPerformanceResult();
- m_VATPerformanceResult.StartTime = DateTime.Now.ToString();
- m_VATPerformanceResult.FlowTime = GasTime;
- m_VATPerformanceResult.GasName = $"Gas{GasSelectedIndex+1}";
- CurrentLineSeries = new ChartValues<double>();
- timer.Start();
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.VATPerformanceTest", GasSelectedIndex+1, 1000 * GasTime, GasFlow);
- }
- private void OnLoadReference()
- {
- //ReferenceLineSeries.Clear();
- //for (int i = 0; i < 21; i++)
- //{
- // double value = Math.Round((double)GasFlow / (double)((i + 2) * 50),3);
- // ReferenceLineSeries.Add(value);
- //}
- OpenFileDialog dialog = new OpenFileDialog();
- dialog.Filter = ".json|*.json";
- dialog.InitialDirectory = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "VATPerformanceResult");
- if (dialog.ShowDialog() == true)
- {
- string SelectedPath = dialog.FileName;
- var value = SerializeHelper.Instance.ReadFromJsonFile<VATPerformanceResult>(SelectedPath);
- ReferenceLineSeries.Clear();
-
- value.ValuePairs.ForEach(x =>
- {
- ReferenceLineSeries.Add(x);
- });
- }
- else
- {
- ReferenceLineSeries.Clear();
- ReferenceLineSeries.Add(0);
- }
- }
- private void OnAbort()
- {
- timer.Stop();
- InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
- CurrentLineSeries = new ChartValues<double>();
- }
- private void OnSave()
- {
- SerializeHelper.Instance.WriteToJsonFile<VATPerformanceResult>(m_VATPerformanceResult, $"VATPerformanceResult/{m_VATPerformanceResult.GasName}/{DateTime.Now.ToString("yyyyMMddHHmm")}.json");
- }
- #endregion
-
- #region 私有方法
- private void Timer_Tick(object sender, EventArgs e)
- {
- CurrentLineSeries.Clear();
- var values = QueryDataClient.Instance.Service.GetData($"{ModuleName}.VATPerformanceResult").ToString();
- values.Split(',').ToList().ForEach(x =>
- {
- if (x != "")
- {
- CurrentLineSeries.Add(Math.Round( Convert.ToDouble(x),3));
- }
- });
- if (CurrentLineSeries.Count == 20)
- {
- timer.Stop();
- }
- MFC7IsEnable = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas7.Enable");
- MFC8IsEnable = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas8.Enable");
- IsAutoMode = (bool)QueryDataClient.Instance.Service.GetData($"{ModuleName}.IsOnline");
- }
- #endregion
- }
- }
|