From acb1533f21511e04bff6f23eb855b1c27698a746 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Wed, 15 Dec 2021 20:23:46 +0000 Subject: [PATCH] Upgraded the tracking rate detection, now detects solar, lunar and sidereal better than before. --- .../TelescopeUnitTests.cs | 8 +++-- Meade.net.Telescope/Telescope.cs | 31 +++++++++++++++---- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 8fcf673..8a94096 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -143,7 +143,7 @@ namespace Meade.net.Telescope.UnitTests _testProperties.TrackingRate = _siderealTrackingRate; _sharedResourcesWrapperMock.Setup(x => x.SendString("GT", false)).Returns(() => _testProperties.TrackingRate); - _sharedResourcesWrapperMock.Setup(x => x.SendBlind("TL", false)).Callback(() => _testProperties.TrackingRate = "lunar"); + _sharedResourcesWrapperMock.Setup(x => x.SendBlind("TL", false)).Callback(() => _testProperties.TrackingRate = "57.9"); _sharedResourcesWrapperMock.Setup(x => x.SendBlind("TQ", false)).Callback(() => _testProperties.TrackingRate = _siderealTrackingRate); _sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => productName); @@ -2778,9 +2778,11 @@ namespace Meade.net.Telescope.UnitTests } [TestCase(DriveRates.driveSidereal, "60.1")] - [TestCase(DriveRates.driveLunar, "60.1")] + [TestCase(DriveRates.driveSolar, "60.0")] + [TestCase(DriveRates.driveLunar, "57.9")] [TestCase(DriveRates.driveSidereal, "+60.1")] - [TestCase(DriveRates.driveLunar, "+60.1")] + [TestCase(DriveRates.driveSolar, "+60.0")] + [TestCase(DriveRates.driveLunar, "+57.9")] public void TrackingRate_Get_WhenConnected_ThenSendsCommandToTelescope(DriveRates rate, string trackingRate) { _siderealTrackingRate = trackingRate; diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 72affd1..e7aae54 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2643,7 +2643,25 @@ namespace ASCOM.Meade.net rate = rate.Replace("+", string.Empty); - DriveRates result = rate == "60.1" ? DriveRates.driveSidereal : DriveRates.driveLunar; + DriveRates result; + + switch (rate) + { + case "60.1": + result = DriveRates.driveSidereal; + break; + case "60.0": + result = DriveRates.driveSolar; + break; + case "57.9": + result = DriveRates.driveLunar; + break; + default: + result = DriveRates.driveKing; + //If this is ever returned it is representing a fail condition. + break; + } + LogMessage("TrackingRate Get", $"{rate} {result}"); @@ -2672,14 +2690,15 @@ namespace ASCOM.Meade.net //:TL# Set Lunar Tracking Rage //Returns: Nothing break; - //case DriveRates.driveSolar: - // SerialPort.Command(":TS#"); + case DriveRates.driveSolar: + SharedResourcesWrapper.SendBlind("TS"); // //:TS# Select Solar tracking rate. [LS Only] // //Returns: Nothing - // break; + break; //case DriveRates.driveKing: - //:TM# Select custom tracking rate [ no-op in Autostar II] - //Returns: Nothing + // SharedResourcesWrapper.SendBlind("TM"); + // //:TM# Select custom tracking rate [ no-op in Autostar II] + // //Returns: Nothing // break; default: throw new ArgumentOutOfRangeException(nameof(value), value, null);