Beispiel #1
0
//-----------------------------
        protected override void OnHandshakeRouting()
        {
            base.OnHandshakeRouting();
            Thread.Sleep(10);

            RAStepper.OnHandshake();
            DEStepper.OnHandshake();

            GetDETurning();   //  перенести в TFStepper
            GetRATurning();

            GetNavMicrostep();  //  перенести в TFStepper
            GetDailyMicrostep();
            GetNavSpeed();
            GetDailySpeedRA();
            GetDailySpeedDE();
            GetNavSpeedMin();
            GetNavSpeedMax();

            UpdatePosition();
            GetReleaseTime();
        }
Beispiel #2
0
        protected override bool ParseCommand(byte[] cmd, int cmdlen)
        {
            if (base.ParseCommand(cmd, cmdlen))
            {
                return(true);
            }

            switch ((byte)cmd[0])
            {
            case (byte)MounterCmd.FOCUSER_GET_POSITION:
            {
                int pos = GetIntFormArray(cmd, 2);
                switch ((MOTOR)cmd[1])
                {
                case MOTOR.RA:
                    RAStepper.SetPosition(pos);

                    fPosRA_EQ = -pos / fGearRatioRA;
                    if (fIsTimeRunning)
                    {
                        TimeSpan t = (DateTime.Now).Subtract(fOffset);
                        fPosRA_EQ = fPosRA_EQ + t.TotalSeconds * EARTH_TURN_SEC;
                    }
                    if (Math.Abs(fPosRA_EQ) > 24)
                    {
                        fPosRA_EQ = fPosRA_EQ - Math.Truncate(fPosRA_EQ / 24) * 24;
                    }
                    if (fPosRA_EQ < 0)
                    {
                        fPosRA_EQ = fPosRA_EQ + 24;
                    }
                    break;

                case MOTOR.DE:
                    DEStepper.SetPosition(pos);
                    fPosDE_EQ = 90 - Math.Abs(pos) / fGearRatioDE;
                    break;
                }
                return(true);
            }

            case (byte)FocuserCmd.FOCUSER_GET_RELAESE_TIME:
            case (byte)FocuserCmd.FOCUSER_SET_RELAESE_TIME:
            {
                SetReleaseTime(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 1, 1)));
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_SET_DROTATION:
            case (byte)MounterCmd.MOUNTER_GET_DROTATION:
            {
                switch ((MOTOR)cmd[1])
                {
                case MOTOR.RA:
                    SetRATurning(Convert.ToBoolean(cmd[2]));
                    break;

                case MOTOR.DE:
                    SetDETurning(Convert.ToBoolean(cmd[2]));
                    break;
                }
                return(true);
            }

            case (byte)MounterCmd.FOCUSER_GO_TO_POSITION:
            {
                string s = GetStringFormArray(cmd, cmdlen - 1, 1);
                if (s.CompareTo("0") == 0)
                {
                    OnGotoWaitEvent.Set();
                    fIsNewPositionMoving = false;
                }
                else
                {
                    OnGotoWaitEvent.Reset();
                    fIsNewPositionMoving = true;
                }
                if ((OnGotoEvent != null) && (fParent.Parent != null))
                {
                    fParent.Parent.BeginInvoke(OnGotoEvent);
                }
                return(true);
            }

            case (byte)MounterCmd.FOCUSER_SET_MICROSTEP:
            case (byte)MounterCmd.FOCUSER_GET_MICROSTEP:
            {
                switch ((MODES)cmd[1])
                {
                case MODES.NAVIGATION:
                    SetNavMicrostep(cmd[2]);
                    break;

                case MODES.DAILY:
                    SetDailyMicrostep(cmd[2]);;
                    break;
                }
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_GET_NAV_SPEED:
            case (byte)MounterCmd.MOUNTER_SET_NAV_SPEED:
            {
                SetNavSpeed(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 1, 1)));
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_GET_DAILY_SPEED:
            case (byte)MounterCmd.MOUNTER_SET_DAILY_SPEED:
            {
                switch ((MOTOR)cmd[1])
                {
                case MOTOR.RA:
                    SetDailySpeedRA(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 2, 2)));
                    break;

                case MOTOR.DE:
                    SetDailySpeedDE(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 2, 2)));
                    break;
                }
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_GET_NAV_MAX_SPEED:
            case (byte)MounterCmd.MOUNTER_SET_NAV_MAX_SPEED:
            {
                SetNavSpeedMin(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 1, 1)));
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_GET_NAV_MIN_SPEED:
            case (byte)MounterCmd.MOUNTER_SET_NAV_MIN_SPEED:
            {
                SetNavSpeedMax(Convert.ToInt32(GetStringFormArray(cmd, cmdlen - 1, 1)));
                return(true);
            }

            case (byte)MounterCmd.MOUNTER_STOP:
            {
                OnStopWaitEvent.Set();
                break;         //
            }
            }
            ;

            if (RAStepper.OnCommand(cmd, cmdlen))
            {
                return(true);
            }
            if (DEStepper.OnCommand(cmd, cmdlen))
            {
                return(true);
            }

            return(false);
        }