//private
void Thermocycler::AdvanceToNextStep() {
  m_previous_step = m_current_step;
  m_current_step = m_program->GetNextStep();
  if (m_current_step == NULL)
    return;
  
  //update eta calc params
  if (m_previous_step == NULL || m_previous_step->GetTemp() != m_current_step->GetTemp()) {
    m_is_ramping = true;
    m_ramp_start_time = millis();
    m_ramp_start_temp = GetPlateTemp();
  } else {
    m_cycle_start_time = millis(); //next step starts immediately
  }
  
  CalcPlateTarget();
  SetPlateControlStrategy();
}
Exemple #2
0
void Thermocycler::PrepareStep() {
  //update eta calc params
  if (ipPreviousStep == NULL || ipPreviousStep->GetTemp() != ipCurrentStep->GetTemp()) {
    iRamping = true;
    iRampElapsedTimeMs = 0;
    iRampStartTemp = GetPlateTemp();
  }
  else {
    iCycleElapsedTimeMs = 0; //next step starts immediately
  }
  // Switch cycle to display
  ProgramComponent *pComp = ipProgram->GetComponent(ipProgram->GetCurrentComponentIndex());
  if (pComp->GetType() == ProgramComponent::ECycle) {
      ipDisplayCycle = (Cycle*) pComp;
  }
  CalcPlateTarget();
  SetPlateControlStrategy();
}
//private
void Thermocycler::AdvanceToNextStep() {
  ipPreviousStep = ipCurrentStep;
  ipCurrentStep = ipProgram->GetNextStep();
  if (ipCurrentStep == NULL)
    return;
  
  //update eta calc params
  if (ipPreviousStep == NULL || ipPreviousStep->GetTemp() != ipCurrentStep->GetTemp()) {
    iRamping = true;
    iRampStartTime = millis();
    iRampStartTemp = GetPlateTemp();
  } else {
    iCycleStartTime = millis(); //next step starts immediately
  }
  
  CalcPlateTarget();
  SetPlateControlStrategy();
}