| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- using LiveCharts;
- using Prism.Mvvm;
- using System.Linq;
- using Prism.Events;
- using Prism.Commands;
- using System.Windows.Media;
- using System.Threading.Tasks;
- using SHJX.Service.Common.Event;
- using SHJX.Service.Model.EventArgs;
- using SHJX.Service.Model.CRUDModules;
- using SHJX.Service.Control.Interface;
- using SHJX.Service.Model.MethodArgs;
- namespace SHJX.Service.Shell.ViewModels.Manual
- {
- public class TitrationManualWindowViewModel : BindableBase
- {
- #region Field
- private readonly IManualService _service;
- #endregion
- #region Properties
- public ChartValues<double> SeriesCollection { get; init; }
- private TitrationValue _titrationDefaultValue;
- private CameraValue _cameraValue;
- public TitrationValue TitrationDefaultValue
- {
- get => _titrationDefaultValue;
- set => SetProperty(ref _titrationDefaultValue, value);
- }
- public CameraValue cameraValue
- {
- get => _cameraValue;
- set => SetProperty(ref _cameraValue, value);
- }
- private LiquidAmount _liquidAmountValue;
- public LiquidAmount LiquidAmountValue
- {
- get => _liquidAmountValue;
- set => SetProperty(ref _liquidAmountValue, value);
- }
- /// <summary>
- /// 连接名
- /// </summary>
- private bool _titrationStatus;
- public bool TitrationStatus
- {
- get => _titrationStatus;
- set => SetProperty(ref _titrationStatus, value);
- }
- /// <summary>
- /// 端口连接状态
- /// </summary>
- private SolidColorBrush _titrationStatusFill;
- public SolidColorBrush TitrationStatusFill
- {
- get => _titrationStatusFill;
- set
- {
- SetProperty(ref _titrationStatusFill, value);
- _titrationStatusFill.Freeze();
- }
- }
- /// <summary>
- /// 端口连接状态
- /// </summary>
- private TitrationValueArgs _titrationValue;
- public TitrationValueArgs TitrationValue
- {
- get => _titrationValue;
- set => SetProperty(ref _titrationValue, value);
- }
- /// <summary>
- /// 相机最大曝光值
- /// </summary>
- private int _maxCameraRange;
- public int MaxCameraRange
- {
- get => _maxCameraRange;
- set => SetProperty(ref _maxCameraRange, value);
- }
- private bool _optionTitration;
- public bool OptionTitration
- {
- get => _optionTitration;
- set => SetProperty(ref _optionTitration, value);
- }
- #endregion
- public TitrationManualWindowViewModel(IEventAggregator ea, IManualService service)
- {
- _service = service;
- SeriesCollection = new ChartValues<double>();
- TitrationDefaultValue = _service.GetData<TitrationValue>().FirstOrDefault();
- cameraValue = _service.GetData<CameraValue>().FirstOrDefault();
- LiquidAmountValue = _service.GetOnceDropLiquidAmount();
- TitrationStatus = true;
- TitrationStatusFill = Brushes.Red;
- MaxCameraRange = -1;
- OptionTitration = false;
- TitrationValue = new TitrationValueArgs();
- ea.GetEvent<GraberValueEvent>().Subscribe((lists) =>
- {
- SeriesCollection.Clear();
- SeriesCollection.AddRange(lists);
- });
- ea.GetEvent<TitrationStatusEvent>().Subscribe((res) =>
- {
- TitrationStatus = !res;
- TitrationStatusFill = res ? Brushes.LightGreen : Brushes.Red;
- });
- ea.GetEvent<TitrationValueEvent>().Subscribe((value) =>
- {
- TitrationValue = value;
- });
- }
- #region Command
- private DelegateCommand _manualTitrationCommand;
- public DelegateCommand ManualTitrationCommand => _manualTitrationCommand ??= new DelegateCommand(ExecuteManualTitrationCommand);
- private DelegateCommand _manualTitrationCommandStop;
- public DelegateCommand ManualTitrationCommandStop => _manualTitrationCommandStop ??= new DelegateCommand(ExecuteManualTitrationCommandStop);
- private DelegateCommand _manualExplosionCommand;
- public DelegateCommand ManualExplosionCommand => _manualExplosionCommand ??= new DelegateCommand(ExecuteManualExplosionCommand);
- private DelegateCommand _manualcheckParams;
- public DelegateCommand ManualcheckParams => _manualcheckParams ??= new DelegateCommand(ExecuteManualcheckParams);
- #endregion
- #region Execute
- private void ExecuteManualTitrationCommand()
- {
- Task.Factory.StartNew(() =>
- {
- TitrationArg arg = new()
- {
- RangeValue = TitrationDefaultValue.RangeValue,
- BeforeWaitTime = TitrationDefaultValue.BeforeWaitTime,
- ArriveCheckCount = TitrationDefaultValue.ArriveCheckCount,
- IntervalTime = TitrationDefaultValue.IntervalTime,
- MaxDropVolume = TitrationDefaultValue.NormalMaxDropVolume,
- LiquidAmount = LiquidAmountValue.Amount,
- PumpCapacity = LiquidAmountValue.Capacity,
- LiquidConvertRatio = LiquidAmountValue.ConvertRatio,
- CameraRange = MaxCameraRange,
- WhetherQuicklyTitration = OptionTitration,
- QuicklyTitrationValue = TitrationDefaultValue.QuicklyTitrationValue,
- explosion = cameraValue
- };
- _service.ManualExecuteTitration(arg);
- });
- }
- private void ExecuteManualTitrationCommandStop()
- {
- _service.ManualExecuteTitrationStop();
- }
- private void ExecuteManualExplosionCommand()
- {
- _service.ManualExecuteExplosion(MaxCameraRange);
- }
- private void ExecuteManualcheckParams()
- {
- _service.ManualcheckParams();
- }
- #endregion
- }
- }
|