//----------------------------- 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(); }
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); }