ButterflyValveViewModel.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 { SetProperty(ref m_SetValue, value); }
  34. }
  35. public int? FeedBackValue
  36. {
  37. get { return m_FeedBackValue; }
  38. set { SetProperty(ref m_FeedBackValue, value); }
  39. }
  40. public string DeviceName
  41. {
  42. get { return m_DeviceName; }
  43. set { SetProperty(ref m_DeviceName, value); }
  44. }
  45. public Dictionary<string, object> RtDataValues
  46. {
  47. get { return m_RtDataValues; }
  48. set { SetProperty(ref m_RtDataValues, value); }
  49. }
  50. #endregion
  51. #region 命令
  52. private DelegateCommand _SetCommand;
  53. public DelegateCommand SetCommand =>
  54. _SetCommand ?? (_SetCommand = new DelegateCommand(OnSet));
  55. #endregion
  56. public ButterflyValveViewModel()
  57. {
  58. m_RtDataKeys = new List<string>();
  59. m_RtDataKeys.Add($"{ModuleName}.PendulumValve.Position");
  60. m_RtDataKeys.Add($"{ModuleName}.PendulumValve.Pressure");
  61. DispatcherTimer timer = new DispatcherTimer();
  62. timer.Interval = TimeSpan.FromSeconds(1);
  63. timer.Tick += timer_Tick;
  64. timer.Start();
  65. }
  66. ~ButterflyValveViewModel()
  67. {
  68. }
  69. #region 命令方法
  70. private void OnSet()
  71. {
  72. if (IsPositionMode == true)
  73. {
  74. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPostion",SetValue);
  75. }
  76. else
  77. {
  78. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetPVPressure",SetValue);
  79. }
  80. }
  81. void timer_Tick(object sender, EventArgs e)
  82. {
  83. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  84. if (IsPositionMode == true)
  85. {
  86. FeedBackValue = (int)RtDataValues[$"{ModuleName}.PendulumValve.Position"];
  87. SetValue = SetValue > 100 ? 100 : SetValue;
  88. }
  89. else
  90. {
  91. FeedBackValue = (int)RtDataValues[$"{ModuleName}.PendulumValve.Pressure"];
  92. }
  93. }
  94. #endregion
  95. }
  96. }