ButterflyValveViewModel.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using MECF.Framework.Common.DataCenter;
  2. using MECF.Framework.Common.OperationCenter;
  3. using Prism.Commands;
  4. using Prism.Mvvm;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Threading;
  11. namespace Venus_MainPages.ViewModels
  12. {
  13. public class ButterflyValveViewModel : BindableBase
  14. {
  15. #region 私有字段
  16. private string ModuleName = "PMA";
  17. private string m_DeviceName = "PendulumValve";
  18. private bool m_IsPositionMode;
  19. private int m_SetValue;
  20. private int? m_FeedBackValue;
  21. private List<string> m_RtDataKeys;
  22. private Dictionary<string, object> m_RtDataValues;
  23. #endregion
  24. #region 属性
  25. public bool IsPositionMode
  26. {
  27. get { return m_IsPositionMode; }
  28. set { SetProperty(ref m_IsPositionMode, value); }
  29. }
  30. public int SetValue
  31. {
  32. get { return m_SetValue; }
  33. set
  34. {
  35. if (value > 1000)
  36. {
  37. value = 1000;
  38. }
  39. if (value < 0)
  40. {
  41. value = 0;
  42. }
  43. SetProperty(ref m_SetValue, value);
  44. }
  45. }
  46. public int? FeedBackValue
  47. {
  48. get { return m_FeedBackValue; }
  49. set { SetProperty(ref m_FeedBackValue, value); }
  50. }
  51. public string DeviceName
  52. {
  53. get { return m_DeviceName; }
  54. set { SetProperty(ref m_DeviceName, value); }
  55. }
  56. public Dictionary<string, object> RtDataValues
  57. {
  58. get { return m_RtDataValues; }
  59. set { SetProperty(ref m_RtDataValues, value); }
  60. }
  61. #endregion
  62. #region 命令
  63. private DelegateCommand _SetCommand;
  64. public DelegateCommand SetCommand =>
  65. _SetCommand ?? (_SetCommand = new DelegateCommand(OnSet));
  66. #endregion
  67. public ButterflyValveViewModel()
  68. {
  69. m_RtDataKeys = new List<string>();
  70. m_RtDataKeys.Add($"{ModuleName}.PendulumValve.Position");
  71. m_RtDataKeys.Add($"{ModuleName}.PendulumValve.Pressure");
  72. DispatcherTimer timer = new DispatcherTimer();
  73. timer.Interval = TimeSpan.FromSeconds(1);
  74. timer.Tick += timer_Tick;
  75. timer.Start();
  76. }
  77. #region 命令方法
  78. private void OnSet()
  79. {
  80. if (IsPositionMode == true)
  81. {
  82. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion",SetValue);
  83. }
  84. else
  85. {
  86. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure",SetValue);
  87. }
  88. }
  89. void timer_Tick(object sender, EventArgs e)
  90. {
  91. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  92. if (IsPositionMode == true)
  93. {
  94. FeedBackValue = (int)RtDataValues[$"{ModuleName}.PendulumValve.Position"];
  95. ////SetValue = (SetValue > 1000||SetValue<0) ? 0 : SetValue;
  96. //if (SetValue > 1000)
  97. //{
  98. //SetValue = 1000;
  99. //}
  100. }
  101. else
  102. {
  103. FeedBackValue = (int)RtDataValues[$"{ModuleName}.PendulumValve.Pressure"];
  104. }
  105. }
  106. #endregion
  107. }
  108. }