private void OperateTwoPump() { var speed = GetPumpSpeed(); var direction = GetDirection(); if (speed.value - _prevSpeed.value > 50) { _prevSpeed = speed; _prevSpeed.value = speed.value / 2; return; } if (PumpingSpeed != 0) { var sp = _speedGradeItems.Where(x => Math.Abs(PumpingSpeed - x.value) < 0.05).OrderByDescending(y => y.value).FirstOrDefault(); _portInput.AddSpeed(direction == Direction.Clockwise ? GetPumpSpeed(PumpingSpeed).Speed : sp?.Speed); _portOutput.AddSpeed(direction == Direction.CounterClockwise ? GetPumpSpeed(PumpingSpeed).Speed : sp?.Speed); StartPump(true); StartPump(false); return; } if (!_isPumpActive || speed.value == 0 || (direction == Direction.Stop)) { StopPump(true); StopPump(false); return; } switch (direction) { case Direction.Clockwise: _portInput.AddSpeed(speed.Speed); StartPump(true); _portOutput.AddSpeed("0.5 "); StopPump(false); SetInputSpeed?.Invoke(speed.Speed); SetOutputSpeed?.Invoke("0"); break; case Direction.CounterClockwise: _portOutput?.AddSpeed(speed.Speed); StartPump(false); _portInput.AddSpeed("0.5 "); StopPump(true); SetInputSpeed?.Invoke("0"); SetOutputSpeed?.Invoke(speed.Speed); break; default: StopPump(false); StopPump(true); SetInputSpeed?.Invoke("0"); SetOutputSpeed?.Invoke("0"); break; } _prevSpeed = speed; }
public PumpDriver() { _isPumpActive = false; PumpingSpeed = 0f; _prevSpeed = new SpeedGradeItem() { Different = 0, Speed = "0.0 ", value = 0 }; }
private void OperatePump() { var speed = GetPumpSpeed().value > _prevSpeed.value ? GetNextSpeed(_prevSpeed.value) : GetPrevSpeed(_prevSpeed.value); if (!_isPumpActive) { StopPump(true); return; } if (speed == _prevSpeed) { if (Math.Abs(double.Parse(speed.Speed.Trim(), CultureInfo.InvariantCulture)) < 0.001) { StopPump(true); } } else { _portInput?.AddSpeed(speed.Speed); SetInputSpeed?.Invoke(speed.Speed); } var direction = GetDirection(); switch (direction) { case Direction.Stop: //_pumpSerial.AddStopPump(); StopPump(true); break; case Direction.Clockwise: _portInput?.AddClockwiseDirection(); break; case Direction.CounterClockwise: _portInput?.AddCounterClockwiseDirection(); break; default: throw new ArgumentOutOfRangeException(); } if (speed.value != 0) { StartPump(true); } _prevSpeed = speed; }