public void EndProcess() { currProgress = cycleProgressEnum.HOLDING; try{ CycleSideKick.Dispose(); } catch (Exception ex) { } isRunning = false; foreach (var process in cycleProcesses) { process.EndProcess(); } tracker.massDisch = MassDischarged; tracker.endMass = adc.ScaledNums[(int)ADC.ReadingTypes.Mass]; tracker.massChange = tracker.begMass - tracker.endMass; tracker.endRH = adc.ScaledNums[(int)ADC.ReadingTypes.RH]; tracker.endTemp = adc.ScaledNums[(int)ADC.ReadingTypes.Temp]; tracker.endTime = DateTime.Now; machine.FillSensorSwitch -= StartDischarge; machine.TurnAllOff(); cycleStopEvent?.Invoke(); secondDrainCompleteFlag = false; }
private void StartHold() { currProgress = cycleProgressEnum.HOLDING; Console.WriteLine("Hold Step: " + DateTime.Now); machine.TurnOff((int)Machine.OutputPins.Mist); machine.TurnOn((int)Machine.OutputPins.Distribution); machine.TurnOn((int)Machine.OutputPins.Blower); Task.Run(() => { cycleProcesses[(int)processEnum.DrainPump].StartProcess(); }); Task.Run(() => { while ((DateTime.Now.Subtract(cycleStart) < TimeSpan.FromMinutes(10))) { Thread.Sleep(1000); if (!((DrainPump)cycleProcesses[(int)processEnum.DrainPump]).isRunning && !secondDrainCompleteFlag) { CycleSideKick = new System.Timers.Timer(Constants.SidekickMS); CycleSideKick.Elapsed += StopSideKick; CycleSideKick.AutoReset = false; secondDrainCompleteFlag = true; machine.TurnOn((int)Machine.OutputPins.Sidekick); CycleSideKick.Start(); } } StartAeration(); }); }
public AutoCycle(Machine _machine, ADC _adc, List <IProcessButton> _buttons, SummaryTracker _tracker) { machine = _machine; adc = _adc; cycleProcesses = _buttons; tracker = _tracker; adc.OnAverageValues += UpdateEstTime; currProgress = cycleProgressEnum.STANDBY; }
private void RunCycle() { estCycleEnd = DateTime.Now.Add(estTimeLeft); machine.TurnOn((int)Machine.OutputPins.Sidekick); currProgress = cycleProgressEnum.FILLING; tracker.roomVolume = BioShark_Blazor.Pages.Index.roomSize; tracker.begMass = adc.ScaledNums[(int)ADC.ReadingTypes.Mass]; tracker.begRH = adc.ScaledNums[(int)ADC.ReadingTypes.RH]; tracker.begTemp = adc.ScaledNums[(int)ADC.ReadingTypes.Temp]; CycleSideKick = new System.Timers.Timer(Constants.SidekickMS); CycleSideKick.Elapsed += FillMister; CycleSideKick.AutoReset = false; CycleSideKick.Start(); }
private async void StartDischarge() { currProgress = cycleProgressEnum.DISCHARGING; cycleStart = DateTime.Now; // Save the start time for the hold step tracker.startTime = cycleStart; machine.FillSensorSwitch -= StartDischarge; Console.WriteLine("Discharging... Start mass @ " + Math.Round(StartMass, 2)); double TargetMass = machine.targetMass; cycleProcesses[(int)processEnum.RunPump].StartProcess(true); await Task.Run(() => { // Wait until the run pump saves the start mass while (((RunPumpAutoTrigger)(cycleProcesses[(int)processEnum.RunPump])).StartMass <= 0) { } StartMass = ((RunPumpAutoTrigger)(cycleProcesses[(int)processEnum.RunPump])).StartMass; while (MassDischarged < TargetMass && isRunning && StartMass > 0) { MassDischarged = StartMass - adc.ScaledNums[(int)ADC.ReadingTypes.Mass]; Thread.Sleep(500); } // Wait until mass above target while (MassDischarged >= TargetMass && isRunning) { MassDischarged = StartMass - adc.ScaledNums[(int)ADC.ReadingTypes.Mass]; if (adc.ScaledNums[(int)ADC.ReadingTypes.HPHR] > Constants.TargetAmt) { Console.WriteLine("PPM Target Reached"); cycleProcesses[(int)processEnum.RunPump].EndProcess(); StartHold(); break; } else if (MassDischarged > TargetMass *Constants.ExtraMassFactor) { Console.WriteLine("Ending Cycle Early, going to start"); EndProcess(); break; } Thread.Sleep(500); } }); }
private void StartAeration() { currProgress = cycleProgressEnum.AERATING; machine.TurnOff((int)Machine.OutputPins.Blower); machine.TurnOff((int)Machine.OutputPins.Heat); machine.TurnOff((int)Machine.OutputPins.Mist); machine.TurnOff((int)Machine.OutputPins.MistFan); machine.TurnOn((int)Machine.OutputPins.Cat); cycleProcesses[(int)processEnum.LROsc].StartProcess(); while (((LROscillator)cycleProcesses[(int)processEnum.LROsc]).isRunning) { Thread.Sleep(1000); } EndProcess(); }