ButterflyValveViewModel.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using Aitex.Core.RT.SCCore;
  2. using MECF.Framework.Common.CommonData.DeviceData;
  3. using MECF.Framework.Common.DataCenter;
  4. using MECF.Framework.Common.Equipment;
  5. using MECF.Framework.Common.OperationCenter;
  6. using Prism.Commands;
  7. using Prism.Mvvm;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Threading;
  14. using Venus_Core;
  15. namespace Venus_MainPages.ViewModels
  16. {
  17. public class ButterflyValveViewModel : BindableBase
  18. {
  19. #region 私有字段
  20. public string ModuleName = "PMA";
  21. private string m_DeviceName = "PendulumValve";
  22. private bool m_IsPositionMode;
  23. private float m_SetValue;
  24. private float? m_FeedBackValue;
  25. //private List<string> m_RtDataKeys;
  26. private Dictionary<string, object> m_RtDataValues;
  27. public JetChamber m_JetChamber;
  28. private string m_Unit;
  29. #endregion
  30. #region 属性
  31. public bool IsPositionMode
  32. {
  33. get { return m_IsPositionMode; }
  34. set
  35. {
  36. if (SetValue > 1000&&value==true)
  37. {
  38. SetValue = 1000;
  39. }
  40. if (value == true)
  41. {
  42. Unit = "‰";
  43. }
  44. if (value == false)
  45. {
  46. if ((m_JetChamber == JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))
  47. {
  48. Unit = "Pa";
  49. }
  50. else
  51. {
  52. Unit = "mTorr";
  53. }
  54. }
  55. SetProperty(ref m_IsPositionMode, value);
  56. }
  57. }
  58. public float SetValue
  59. {
  60. get { return m_SetValue; }
  61. set
  62. {
  63. if (value > 1000 && IsPositionMode==true)
  64. {
  65. value = 1000;
  66. }
  67. if (value < 0 && IsPositionMode == true)
  68. {
  69. value = 0;
  70. }
  71. SetProperty(ref m_SetValue, value);
  72. }
  73. }
  74. public float? FeedBackValue
  75. {
  76. get { return m_FeedBackValue; }
  77. set { SetProperty(ref m_FeedBackValue, value); }
  78. }
  79. public string DeviceName
  80. {
  81. get { return m_DeviceName; }
  82. set { SetProperty(ref m_DeviceName, value); }
  83. }
  84. public Dictionary<string, object> RtDataValues
  85. {
  86. get { return m_RtDataValues; }
  87. set { SetProperty(ref m_RtDataValues, value); }
  88. }
  89. public string Unit
  90. {
  91. get { return m_Unit; }
  92. set { SetProperty(ref m_Unit, value); }
  93. }
  94. #endregion
  95. #region 命令
  96. private DelegateCommand _SetCommand;
  97. public DelegateCommand SetCommand =>
  98. _SetCommand ?? (_SetCommand = new DelegateCommand(OnSet));
  99. private DelegateCommand _LoadedCommand;
  100. public DelegateCommand LoadedCommand =>
  101. _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(OnLoaded));
  102. #endregion
  103. public ButterflyValveViewModel()
  104. {
  105. DispatcherTimer timer = new DispatcherTimer();
  106. timer.Interval = TimeSpan.FromSeconds(0.1);
  107. timer.Tick += timer_Tick;
  108. timer.Start();
  109. //m_JetChamber = (JetChamber)Enum.Parse(typeof(JetChamber), QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.ChamberType").ToString());
  110. }
  111. #region 命令方法
  112. private void OnLoaded()
  113. {
  114. m_JetChamber = (JetChamber)Enum.Parse(typeof(JetChamber), QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.ChamberType").ToString());
  115. IsPositionMode = false;
  116. }
  117. private void OnSet()
  118. {
  119. if (IsPositionMode == true)
  120. {
  121. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion",Convert.ToInt32( SetValue));
  122. }
  123. else
  124. {
  125. //if (PressureType == PressureType.Pa && (m_JetChamber == JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))
  126. //{
  127. // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue* 7.5006F);
  128. //}
  129. //else
  130. //{
  131. // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue);
  132. //}
  133. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure", SetValue);
  134. }
  135. }
  136. void timer_Tick(object sender, EventArgs e)
  137. {
  138. var pendulumValveData= (AITPendulumValveData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.PendulumValve.DeviceData");
  139. if (IsPositionMode == true)
  140. {
  141. FeedBackValue = pendulumValveData.Position;
  142. }
  143. else
  144. {
  145. FeedBackValue = Convert.ToSingle(Math.Round(pendulumValveData.Pressure, 1));
  146. //if ( (m_JetChamber==JetChamber.Kepler2200A || m_JetChamber == JetChamber.Kepler2200B))
  147. //{
  148. // FeedBackValue = (float)Math.Round(pendulumValveData.Pressure*0.1333F, 1);
  149. //}
  150. //else
  151. //{
  152. // FeedBackValue = (float)Math.Round(pendulumValveData.Pressure, 1);
  153. //}
  154. }
  155. }
  156. #endregion
  157. }
  158. }