Example #1
0
        /// ************************************************************************************************
        /// <summary>
        /// Starts the calibration process
        /// </summary>
        /// <param name="sModuleID">The module identifier.</param>
        /// <param name="ucMode">The calibration mode : Offset/Offset+Volume.</param>
        /// <param name="wNbCycles">The number of cycles.</param>
        /// <param name="wInterCycle">The inter cycle time in ms.</param>
        /// <param name="fOffsetMax">The offset maximum.</param>
        /// <param name="fVolumeLeak">The volume leak.</param>
        /// <param name="fVolumePressure">The volume pressure.</param>
        /// <param name="fVolumeMin">The volume minimum.</param>
        /// <param name="fVolumeMax">The volume maximum.</param>
        /// <returns>true : succed, false : Error</returns>
        /// ************************************************************************************************
        public bool StartCal(short sModuleID, MODE_AUTO_CAL ucMode, ushort wNbCycles, ushort wInterCycle, float fOffsetMax,
                             float fVolumeLeak = 0, float fVolumePressure = 0, float fVolumeMin = 0, float fVolumeMax = 0)
        {
            bool bRet = false;

            if ((sModuleID > 0) && !m_F28.Equals(null))  //  && (m_F28 != Nothing))
            {
                m_wNbCycles       = wNbCycles;
                m_wInterCycle     = wInterCycle;
                m_fOffsetMax      = fOffsetMax;
                m_fVolumeLeak     = fVolumeLeak;
                m_fVolumePressure = fVolumePressure;
                m_fVolumeMin      = fVolumeMin;
                m_fVolumeMax      = fVolumeMax;

                m_sModuleId = sModuleID;
                m_ucMode    = ucMode;
                m_wError    = 0;

                m_ucPhase  = CAL_AUTO_PHASES.AUTO_START_OFFSET;
                m_bRunning = true;

                bRet = true;
            }

            return(bRet);
        }
Example #2
0
        /// ************************************************************************************************
        /// /// <summary>
        /// Stops the calibration process
        /// </summary>
        /// <returns>true : command sent with success, false : No send or error </returns>
        /// ************************************************************************************************
        public bool StopCal()
        {
            short sRet = F28LightCtrl.F28_FAIL;

            if ((m_sModuleId > 0) && (m_ucPhase != CAL_AUTO_PHASES.AUTO_IDDLE) && !m_F28.Equals(null))
            {
                sRet = m_F28.StopAutoCal(m_sModuleId);
            }

            m_ucPhase  = CAL_AUTO_PHASES.AUTO_IDDLE;
            m_bRunning = false;

            return((sRet == F28LightCtrl.F28_OK) ? true : false);
        }
Example #3
0
        /// ************************************************************************************************
        /// <summary>
        /// Continue the volume calibration
        /// </summary>
        /// <param name="bForward">if set to <c>true : continue volume calibration</c> [b forward].</param>
        /// <returns></returns>
        /// ************************************************************************************************
        public bool RunCalContinue(bool bForward)
        {
            bool bRet = false;

            if (bForward)
            {
                bRet      = true;
                m_ucPhase = CAL_AUTO_PHASES.AUTO_START_VOLUME;
            }
            else
            {
                m_wError = (ushort)m_ucPhase;

                // 1.501 If abort cal process -> Send F28_StopAutoCal
                StopCal();

                m_ucPhase  = CAL_AUTO_PHASES.AUTO_IDDLE;
                m_bRunning = false;

                //StopCal();
            }
            return(bRet);
        }
Example #4
0
        /// ************************************************************************************************
        /// <summary>
        /// Runs the calibration process.
        /// </summary>
        /// <returns>True  : EOC calibration, False : Running</returns>
        /// ************************************************************************************************
        public bool RunCal()
        {
            short sRet;

            bool bReturn = false;

            switch (m_ucPhase)
            {
            case CAL_AUTO_PHASES.AUTO_START_OFFSET:         // Start auto Cal
                if (m_ucMode == MODE_AUTO_CAL.OFFSET)
                {
                    sRet = m_F28.StartAutoCalOffsetOnly(m_sModuleId, m_wNbCycles, m_wInterCycle, m_fOffsetMax);
                }
                else
                {
                    sRet = m_F28.StartAutoCalOffset(m_sModuleId, m_wNbCycles, m_wInterCycle, m_fOffsetMax);
                }

                if (sRet == F28LightCtrl.F28_OK)
                {
                    m_ucPhase = CAL_AUTO_PHASES.AUTO_WAIT_EOC_OFFSET;
                }
                else
                {
                    m_wError  = (ushort)m_ucPhase;
                    m_ucPhase = CAL_AUTO_PHASES.AUTO_END;
                }
                break;

            case CAL_AUTO_PHASES.AUTO_WAIT_EOC_OFFSET:      // Wait EOC Offset
                if (m_F28.GetEOCOffset(m_sModuleId) > 0)
                {
                    if (m_ucMode == MODE_AUTO_CAL.OFFSET)
                    {
                        m_wError  = 0;    //' Pas d'erreur
                        m_ucPhase = CAL_AUTO_PHASES.AUTO_END;
                    }
                    else
                    {
                        m_wError  = (ushort)m_ucPhase;
                        m_ucPhase = CAL_AUTO_PHASES.AUTO_WAIT_MASTER_LEAK;
                    }
                }
                break;

            case CAL_AUTO_PHASES.AUTO_WAIT_MASTER_LEAK:     // Waiting master leak

                // Wait validation from user
                // Do nothing

                break;

            case CAL_AUTO_PHASES.AUTO_START_VOLUME:         // Start auto volume
                if (m_F28.StartAutoCalVolume(m_sModuleId, m_wNbCycles, m_wInterCycle,
                                             m_fVolumeLeak, m_fVolumePressure, m_fVolumeMin, m_fVolumeMax) == F28LightCtrl.F28_OK)
                {
                    m_ucPhase = CAL_AUTO_PHASES.AUTO_WAIT_EOC_VOLUME;
                }
                else
                {
                    m_wError  = (ushort)m_ucPhase;
                    m_ucPhase = CAL_AUTO_PHASES.AUTO_END;
                }
                break;

            case CAL_AUTO_PHASES.AUTO_WAIT_EOC_VOLUME:      // Wait EOC Auto volume
                if (m_F28.GetEOCVolume(m_sModuleId) > 0)
                {
                    m_wError  = 0;     // Pas d'erreur
                    m_ucPhase = CAL_AUTO_PHASES.AUTO_END;
                }
                break;

            case CAL_AUTO_PHASES.AUTO_END:                // End of auto calibration
                m_wError   = (ushort)m_ucPhase;
                m_ucPhase  = CAL_AUTO_PHASES.AUTO_IDDLE;
                m_bRunning = false;
                bReturn    = true;
                break;

            case CAL_AUTO_PHASES.AUTO_IDDLE:          // Ready do nothing

                // Do nothing
                break;
            }
            return(bReturn);
        }