public void Stop() { if (_run) { //_cancellationToken.Cancel(); _run = false; #if (!SIMULATOR) HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerLeftOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerRightOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.HeaterPumpOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater1Out, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater2Out, false); //_stirrerLeftPin.Write(GpioPinValue.Low); //_stirrerRightPin.Write(GpioPinValue.Low); //_heaterPumpPin.Write(GpioPinValue.Low); //_heater1Pin.Write(GpioPinValue.Low); //_heater2Pin.Write(GpioPinValue.Low); #endif } }
public void SetValues(IValues values) { var testVal = values as HardwareTestValues; if (testVal != null) { if (!_run) { //#if (!SIMULATOR) HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerLeftOut, testVal.StirrerDirection == StirrerDirection.Left); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerRightOut, testVal.StirrerDirection == StirrerDirection.Right); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.HeaterPumpOut, testVal.PumpOn); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater1Out, testVal.Heater1On); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater2Out, testVal.Heater2On); //_stirrerLeftPin?.Write(testVal.StirrerDirection == StirrerDirection.Left ? GpioPinValue.High : GpioPinValue.Low); //_stirrerRightPin?.Write(testVal.StirrerDirection == StirrerDirection.Right ? GpioPinValue.High : GpioPinValue.Low); //_heaterPumpPin?.Write(testVal.PumpOn ? GpioPinValue.High : GpioPinValue.Low); //_heater1Pin?.Write(testVal.Heater1On ? GpioPinValue.High : GpioPinValue.Low); //_heater2Pin?.Write(testVal.Heater2On ? GpioPinValue.High : GpioPinValue.Low); //#endif } } }
void ProcessStart() { //StirrerDirection tempDirection = StirrerDirection.None; //int tempStirrerSpeed = 0; ////bool sendVesselStateState = false; //double vesselTemperature = 0.0; ////double tempVesselTemperature = 0.0; //double mashTemperature = 0.0; ////double tempMashTemperature = 0.0; //bool heater1On = false; //bool heater2On = false; //bool pump = false; //bool tempHeater1On = false; //bool tempHeater2On = false; //bool tempPump = false; var consumerTask = Task.Factory.StartNew( () => { while (!_cancellationToken.IsCancellationRequested) { //StirrerDirection tempDirection = StirrerDirection.None; //int tempStirrerSpeed = 0; //bool sendVesselStateState = false; double vesselTemperature = 0.0; //double tempVesselTemperature = 0.0; double mashTemperature = 0.0; //double tempMashTemperature = 0.0; bool heater1On = false; bool heater2On = false; bool pump = false; //bool tempHeater1On = false; //bool tempHeater2On = false; //bool tempPump = false; #region Temperature Reader #region Read Vessel Temp vesselTemperature = GetVesselTemperature(); #endregion #region Read Mash Temp mashTemperature = GetMashTemperature(); #endregion #endregion if (_run) { #region Controller pump = true; if (mashTemperature + HYSTERESYSUP >= _targetTemperature) // temp reached { // heater off heater1On = heater2On = false; TargetTemperaturReached?.Invoke(this, mashTemperature); } else if (mashTemperature < _targetTemperature - HYSTERESYSDOWN) { if (vesselTemperature < mashTemperature + VESSELOVERRUN) { // heater on heater1On = heater2On = true; } else { // heater off heater1On = heater2On = false; } } //if (tempHeater1On != heater1On || tempHeater2On != heater2On || tempPump != pump) //{ // //sendVesselStateState = true; // tempHeater1On = heater1On; // tempHeater2On = heater2On; // tempPump = pump; //} #endregion #region Stirrer //if (tempDirection != _stirrerDirection) //{ // //if (_stirrerDirection == StirrerDirection.None) // //{ // // // switch off // //} // //else if (_stirrerDirection == StirrerDirection.Left) // //{ // // // left on // //} // //else // //{ // // // right on // //} // tempDirection = _stirrerDirection; // //sendVesselStateState = true; //} //if (tempStirrerSpeed != _stirrerSpeed) //{ // // set Speed // tempStirrerSpeed = _stirrerSpeed; // //sendVesselStateState = true; //} #endregion #region Set IO's // set io's if (!_emergencyOn) { // set io's as defined //#if (!SIMULATOR) HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerLeftOut, _stirrerDirection == StirrerDirection.Left); //_stirrerLeftPin.Write(_stirrerDirection == StirrerDirection.Left ? GpioPinValue.High : GpioPinValue.Low); //Debug.WriteLine($"Stirrer Left: {_stirrerLeftPin.Read()}"); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerRightOut, _stirrerDirection == StirrerDirection.Right); //_stirrerRightPin.Write(_stirrerDirection == StirrerDirection.Right ? GpioPinValue.High : GpioPinValue.Low); //Debug.WriteLine($"Stirrer Right: {_stirrerRightPin.Read()}"); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.HeaterPumpOut, pump); //_heaterPumpPin.Write(pump ? GpioPinValue.High : GpioPinValue.Low); //Debug.WriteLine($"Pump: {_heaterPumpPin.Read()}"); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater1Out, heater1On); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater2Out, heater2On); //_heater1Pin.Write(heater1On ? GpioPinValue.High : GpioPinValue.Low); //Debug.WriteLine($"Heater 1: {_heater1Pin.Read()}"); //_heater2Pin.Write(heater2On ? GpioPinValue.High : GpioPinValue.Low); //Debug.WriteLine($"Heater 2: {_heater2Pin.Read()}"); //#endif } else { //#if (!SIMULATOR) HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerLeftOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.StirrerRightOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.HeaterPumpOut, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater1Out, false); HardwareController.GetDefault().GetRelaisBoard().SetIO(HardwareDefinition.Heater2Out, false); //_stirrerLeftPin.Write(GpioPinValue.Low); //_stirrerRightPin.Write(GpioPinValue.Low); //_heaterPumpPin.Write(GpioPinValue.Low); //_heater1Pin.Write(GpioPinValue.Low); //_heater2Pin.Write(GpioPinValue.Low); //#endif } #endregion } //if (sendVesselStateState) //{ #region Send Vessel State var vesselValues = new VesselValues() { StirrerDirection = _stirrerDirection, StirrerSpeed = _stirrerSpeed, PumpOn = pump, HeaterLevel1On = heater1On, HeaterLevel2On = heater2On, VesselTemperature = vesselTemperature, MashCurrentTemperature = mashTemperature, MashTargetTemperature = _targetTemperature, EmergencyOn = _emergencyOn }; VesselEvent?.Invoke(this, vesselValues); #endregion //sendVesselStateState = false; //} // speep for x seconds Thread.Sleep(SLEEPTIME); } }, _cancellationToken.Token); }