Ejemplo n.º 1
0
        Int32 CalibrateAxis(ref AxisCalStates calState, Int32 moveToZeroSpeed, Int32 moveFromZeroSpeed, bool axisLimit)
        {
            Int32 speed = 0;

            switch (calState)
            {
            case AxisCalStates.calIdle:
            {
                break;
            }

            case AxisCalStates.MovingToZero:
            {
                if (axisLimit)
                {
                    calState = AxisCalStates.MovingFromZero;
                    speed    = 0;
                }
                else
                {
                    speed = moveToZeroSpeed;
                }
                break;
            }

            case AxisCalStates.MovingFromZero:
            {
                if (axisLimit)
                {
                    speed = moveFromZeroSpeed;
                }
                else
                {
                    calState = AxisCalStates.WaitAfterCal;
                    speed    = 0;
                }
                break;
            }

            case AxisCalStates.WaitAfterCal:
            {
                speed    = 0;
                calState = AxisCalStates.calIdle;
                break;
            }
            }
            return(speed);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Запуск калибровки.
        /// </summary>
        /// <returns>В случае наличия других задач (движение на заданные координаты или уже проводится калибровка) возвращается false и калибровка не начинается. Иначе запускается калибровка и возвращается true</returns>
        public bool StartCalibration()
        {
            if (state == States.Idle)
            {
                SetCoordinates(209000, 205000, -201000, 190000);

                state = States.Calibrating;

                calStateX = AxisCalStates.MovingToZero;
                calStateY = AxisCalStates.MovingToZero;
                calStateZ = AxisCalStates.MovingToZero;
                calStateA = AxisCalStates.MovingToZero;

                timer.Stop();
                timer.Interval = calibrationTimerInterval;
                timer.Start();
                return(true);
            }
            else
            {
                return(false);
            }
        }