Titration2ManualWindowViewModel.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using LiveCharts;
  2. using Prism.Mvvm;
  3. using System.Linq;
  4. using Prism.Events;
  5. using Prism.Commands;
  6. using System.Windows.Media;
  7. using System.Threading.Tasks;
  8. using SHJX.Service.Common.Event;
  9. using SHJX.Service.Model.EventArgs;
  10. using SHJX.Service.Model.CRUDModules;
  11. using SHJX.Service.Control.Interface;
  12. using SHJX.Service.Model.MethodArgs;
  13. namespace SHJX.Service.Shell.ViewModels.Manual
  14. {
  15. public class Titration2ManualWindowViewModel : BindableBase
  16. {
  17. #region Field
  18. private readonly IManualService _service;
  19. #endregion
  20. #region Properties
  21. public ChartValues<double> SeriesCollection2 { get; init; }
  22. private Titration2Value _titration2DefaultValue;
  23. private Camera2Value _camera2Value;
  24. public Titration2Value Titration2DefaultValue
  25. {
  26. get => _titration2DefaultValue;
  27. set => SetProperty(ref _titration2DefaultValue, value);
  28. }
  29. public Camera2Value camera2Value
  30. {
  31. get => _camera2Value;
  32. set => SetProperty(ref _camera2Value, value);
  33. }
  34. private LiquidAmount _liquidAmountValue;
  35. public LiquidAmount LiquidAmountValue
  36. {
  37. get => _liquidAmountValue;
  38. set => SetProperty(ref _liquidAmountValue, value);
  39. }
  40. /// <summary>
  41. /// 连接名
  42. /// </summary>
  43. private bool _titrationStatus2;
  44. public bool TitrationStatus2
  45. {
  46. get => _titrationStatus2;
  47. set => SetProperty(ref _titrationStatus2, value);
  48. }
  49. /// <summary>
  50. /// 端口连接状态
  51. /// </summary>
  52. private SolidColorBrush _titrationStatusFill2;
  53. public SolidColorBrush TitrationStatusFill2
  54. {
  55. get => _titrationStatusFill2;
  56. set
  57. {
  58. SetProperty(ref _titrationStatusFill2, value);
  59. _titrationStatusFill2.Freeze();
  60. }
  61. }
  62. /// <summary>
  63. /// 端口连接状态
  64. /// </summary>
  65. private Titration2ValueArgs _titrationValue;
  66. public Titration2ValueArgs Titration2Value
  67. {
  68. get => _titrationValue;
  69. set => SetProperty(ref _titrationValue, value);
  70. }
  71. /// <summary>
  72. /// 相机最大曝光值
  73. /// </summary>
  74. private int _maxCameraRange;
  75. public int MaxCameraRange
  76. {
  77. get => _maxCameraRange;
  78. set => SetProperty(ref _maxCameraRange, value);
  79. }
  80. private bool _optionTitration;
  81. public bool OptionTitration
  82. {
  83. get => _optionTitration;
  84. set => SetProperty(ref _optionTitration, value);
  85. }
  86. #endregion
  87. public Titration2ManualWindowViewModel(IEventAggregator ea, IManualService service)
  88. {
  89. _service = service;
  90. SeriesCollection2 = new ChartValues<double>();
  91. Titration2DefaultValue = _service.GetData<Titration2Value>().FirstOrDefault();
  92. camera2Value = _service.GetData<Camera2Value>().FirstOrDefault();
  93. LiquidAmountValue = _service.GetOnceDropLiquidAmount();
  94. TitrationStatus2 = true;
  95. TitrationStatusFill2 = Brushes.Red;
  96. MaxCameraRange = -1;
  97. OptionTitration = false;
  98. Titration2Value = new Titration2ValueArgs();
  99. ea.GetEvent<Graber2ValueEvent>().Subscribe((lists) =>
  100. {
  101. SeriesCollection2.Clear();
  102. SeriesCollection2.AddRange(lists);
  103. });
  104. ea.GetEvent<Titration2StatusEvent>().Subscribe((res) =>
  105. {
  106. TitrationStatus2 = !res;
  107. TitrationStatusFill2 = res ? Brushes.LightGreen : Brushes.Red;
  108. });
  109. ea.GetEvent<Titration2ValueEvent>().Subscribe((value) =>
  110. {
  111. Titration2Value = value;
  112. });
  113. }
  114. #region Command
  115. private DelegateCommand _manualTitrationCommand;
  116. public DelegateCommand ManualTitrationCommand => _manualTitrationCommand ??= new DelegateCommand(ExecuteManualTitrationCommand);
  117. private DelegateCommand _manualTitrationCommandStop;
  118. public DelegateCommand ManualTitrationCommandStop => _manualTitrationCommandStop ??= new DelegateCommand(ExecuteManualTitrationCommandStop);
  119. private DelegateCommand _manualExplosionCommand;
  120. public DelegateCommand ManualExplosionCommand => _manualExplosionCommand ??= new DelegateCommand(ExecuteManualExplosionCommand);
  121. private DelegateCommand _manualcheckParams;
  122. public DelegateCommand ManualcheckParams => _manualcheckParams ??= new DelegateCommand(ExecuteManualcheckParams);
  123. #endregion
  124. #region Execute
  125. private void ExecuteManualTitrationCommand()
  126. {
  127. Task.Factory.StartNew(() =>
  128. {
  129. Titration2Arg arg = new()
  130. {
  131. RangeValue = Titration2DefaultValue.RangeValue,
  132. BeforeWaitTime = Titration2DefaultValue.BeforeWaitTime,
  133. ArriveCheckCount = Titration2DefaultValue.ArriveCheckCount,
  134. IntervalTime = Titration2DefaultValue.IntervalTime,
  135. MaxDropVolume = Titration2DefaultValue.NormalMaxDropVolume,
  136. LiquidAmount = LiquidAmountValue.Amount,
  137. PumpCapacity = LiquidAmountValue.Capacity,
  138. LiquidConvertRatio = LiquidAmountValue.ConvertRatio,
  139. CameraRange = MaxCameraRange,
  140. WhetherQuicklyTitration = OptionTitration,
  141. QuicklyTitrationValue = Titration2DefaultValue.QuicklyTitrationValue,
  142. explosion=camera2Value
  143. };
  144. _service.ManualExecuteTitration2(arg);
  145. });
  146. }
  147. private void ExecuteManualTitrationCommandStop()
  148. {
  149. _service.ManualExecuteTitration2Stop();
  150. }
  151. private void ExecuteManualExplosionCommand()
  152. {
  153. _service.ManualExecuteExplosion2(MaxCameraRange);
  154. }
  155. private void ExecuteManualcheckParams()
  156. {
  157. _service.ManualcheckParams2();
  158. }
  159. #endregion
  160. }
  161. }