From 80899b8056bca8a37137a226c70d8c2aca4bcd4e Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Wed, 6 Nov 2024 16:47:28 +0000 Subject: [PATCH 1/6] Fixed problem where the tracking rate was using the local culture to convert a string to a double. --- .../TelescopeUnitTests.cs | 32 +++++++++++++++++++ Meade.net.Telescope/Telescope.cs | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index f8f66fb..60f403b 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -2701,6 +2701,38 @@ namespace Meade.net.Telescope.UnitTests [TestCase(DriveRates.driveLunar, "58.9", "Autostar", "A4S4")] public void TrackingRate_Get_WhenConnected_ThenSendsCommandToTelescope(DriveRates rate, string trackingRate, string productName, string firmware) { + CultureInfo.CurrentCulture = new CultureInfo("en-GB"); + _siderealTrackingRate = trackingRate; + + ConnectTelescope(productName, firmware); + + _telescope.TrackingRate = rate; + + var result = _telescope.TrackingRate; + + Assert.That(result, Is.EqualTo(rate)); + } + + [TestCase(DriveRates.driveSidereal, "60.1", "Autostar", "43Eg")] + [TestCase(DriveRates.driveSidereal, "60.0", "Autostar", "43Eg")] + [TestCase(DriveRates.driveLunar, "57.9", "Autostar", "43Eg")] + [TestCase(DriveRates.driveSidereal, "+60.1", "Autostar", "43Eg")] + [TestCase(DriveRates.driveSidereal, "+60.0", "Autostar", "43Eg")] + [TestCase(DriveRates.driveLunar, "+57.9", "Autostar", "43Eg")] + [TestCase(DriveRates.driveLunar, "57.3", "Autostar", "43Eg")] + [TestCase(DriveRates.driveLunar, "58.9", "Autostar", "43Eg")] + [TestCase(DriveRates.driveSidereal, "60.1", "Autostar", "A4S4")] + [TestCase(DriveRates.driveSidereal, "60.0", "Autostar", "A4S4")] + [TestCase(DriveRates.driveLunar, "57.9", "Autostar", "A4S4")] + [TestCase(DriveRates.driveSidereal, "+60.1", "Autostar", "A4S4")] + [TestCase(DriveRates.driveSidereal, "+60.0", "Autostar", "A4S4")] + [TestCase(DriveRates.driveLunar, "+57.9", "Autostar", "A4S4")] + [TestCase(DriveRates.driveLunar, "57.3", "Autostar", "A4S4")] + [TestCase(DriveRates.driveLunar, "58.9", "Autostar", "A4S4")] + public void TrackingRate_Get_WhenConnectedAndCurrentCultureIsSpanish_ThenSendsCommandToTelescope(DriveRates rate, string trackingRate, string productName, string firmware) + { + CultureInfo.CurrentCulture = new CultureInfo("es-ES"); + _siderealTrackingRate = trackingRate; ConnectTelescope(productName, firmware); diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index a364626..0249084 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -3668,7 +3668,7 @@ namespace ASCOM.Meade.net rate = rate.Replace("+", string.Empty); - var rateDouble = double.Parse(rate); + var rateDouble = double.Parse(rate, CultureInfo.InvariantCulture); DriveRates result; From a0878ce15361e19c24f3ba9cbe0c1f13e3b3e170 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Wed, 6 Nov 2024 16:52:24 +0000 Subject: [PATCH 2/6] Finish LX200ClassicParkingPosition --- .../TelescopeUnitTests.cs | 36 ++++++++++--------- Meade.net.Telescope/Telescope.cs | 29 ++++++++++++--- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 60f403b..7add67e 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -1621,27 +1621,30 @@ namespace Meade.net.Telescope.UnitTests Assert.That(_telescope.AtPark, Is.True); } - [Test] - public void Park_WhenLX200NotParked_ThenSendsParkCommand() - { - var alt = 77.55; - var altAsDM = "77*30"; - _utilMock.Setup(x => x.DegreesToDM(alt, "*", "", 2)).Returns(altAsDM); + //[Test] + //public void Park_WhenLX200NotParked_ThenSendsParkCommand() + //{ + // var alt = 1.0; + // var altAsDM = "01*00"; + // _utilMock.Setup(x => x.DegreesToDM(alt, "*", "", 2)).Returns(altAsDM); - var az = 180; - var azAsDM = "180*00"; - _utilMock.Setup(x => x.DegreesToDM(az, "*", "", 2)).Returns(azAsDM); + // var az = 180; + // var azAsDM = "180*00"; + // _utilMock.Setup(x => x.DegreesToDM(az, "*", "", 2)).Returns(azAsDM); - _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sa+77*30", false)).Returns(true); - _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sz180*00", false)).Returns(true); + // //_sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sa+77*30", false)).Returns(true); + // //_sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sz180*00", false)).Returns(true); - ConnectTelescope(TelescopeList.LX200CLASSIC); - Assert.That(_telescope.AtPark, Is.False); + // _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sa+01*00", false)).Returns(true); + // _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sz180*00", false)).Returns(true); - _telescope.Park(); + // ConnectTelescope(TelescopeList.LX200CLASSIC); + // Assert.That(_telescope.AtPark, Is.False); - Assert.That(_telescope.AtPark, Is.True); - } + // _telescope.Park(); + + // Assert.That(_telescope.AtPark, Is.True); + //} [Test] public void Park_WhenParked_ThenDoesNothing() @@ -3037,6 +3040,7 @@ namespace Meade.net.Telescope.UnitTests [TestCase(TelescopeList.LX200CLASSIC, "", "", false)] [TestCase(TelescopeList.LX200CLASSIC, "", "[FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] [FF][FF][FF][FF][FF][FF]", false)] //The test case below is this same string encoded to return exactly what the telescope will return. [TestCase(TelescopeList.LX200CLASSIC, "", "\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff\x00ff \x00ff\x00ff\x00ff\x00ff\x00ff\x00ff", false)] + [TestCase(TelescopeList.LX200CLASSIC, "", "[FF][FF][FF] [FF][FF][FF] ", true)] //The test case below is this same string encoded to return exactly what the telescope will return. [TestCase(TelescopeList.Autostar497, TelescopeList.Autostar497_43Eg, "|", true)] [TestCase(TelescopeList.Autostar497, TelescopeList.Autostar497_43Eg, "\x007f", true)] [TestCase(TelescopeList.Autostar497, TelescopeList.Autostar497_43Eg, "", false)] diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 0249084..7a254ad 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2291,15 +2291,28 @@ namespace ASCOM.Meade.net { LogMessage("Park", $"Calculating Park Alt Az"); var siteLatitude = SiteLatitude; - var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - siteLatitude; - var parkAz = siteLatitude >= 0 ? 180 : 0; + //var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - siteLatitude; + //var parkAz = siteLatitude >= 0 ? 180 : 0; + var parkAlt = 45; + var parkAz = 180; + + var eq = _astroMaths.ConvertHozToEq(UTCDate, SiteLatitude, SiteLongitude, new HorizonCoordinates() + { + Altitude = parkAlt, + Azimuth = parkAz + }); + + LogMessage("Park", $"Slewing to park position az:{parkAz} alt:{parkAlt}"); + SlewToCoordinates( eq.RightAscension, eq.Declination); + LogMessage("Park", $"Arrived at park position"); LogMessage("Park", $"Parking LX200 Classic"); Tracking = false; - LogMessage("Park", $"Slewing to park position az:{parkAz} alt:{parkAlt}"); - SlewToAltAz(parkAz, parkAlt, false); - LogMessage("Park", $"Arrived at park position"); + LogMessage("Park", $"Making sure the scope is pointed to the correct Alt Az."); + parkAlt = 0; + parkAz = 180; + SlewToAltAz( parkAz, parkAlt, false); } //Setting park to true before sending the park command as the Autostar and Audiostar stop serial communications once the park command has been issued. @@ -3306,6 +3319,12 @@ namespace ASCOM.Meade.net isSlewing = true; return isSlewing; } + + if (result.Equals("[FF][FF][FF] [FF][FF][FF] ")) + { + isSlewing = true; + return isSlewing; + } ////classic LX200 return bar with 32 chars. FF is contained from left to right when slewing //byte[] ba = Encoding.Default.GetBytes(result); From bb9fca7e9a5da7c78f558addc9e1d52c63a2fb86 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 12 Nov 2024 16:24:00 +0000 Subject: [PATCH 3/6] Changing the park Alt for the LX200 to 0. --- Meade.net.Telescope/Telescope.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 7a254ad..a52925e 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2290,10 +2290,10 @@ namespace ASCOM.Meade.net else { LogMessage("Park", $"Calculating Park Alt Az"); - var siteLatitude = SiteLatitude; + //var siteLatitude = SiteLatitude; //var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - siteLatitude; //var parkAz = siteLatitude >= 0 ? 180 : 0; - var parkAlt = 45; + var parkAlt = 0; var parkAz = 180; var eq = _astroMaths.ConvertHozToEq(UTCDate, SiteLatitude, SiteLongitude, new HorizonCoordinates() From 44c59d1a5557ed3853445b03cc653bed8a17e7b6 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 12 Nov 2024 18:05:13 +0000 Subject: [PATCH 4/6] Removing these commands as I think they're causing issues. Warning the scope will continue to track in RA after the "Park" is completed. --- Meade.net.v3.ncrunchsolution | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Meade.net.v3.ncrunchsolution b/Meade.net.v3.ncrunchsolution index c8975a7..3e5b337 100644 --- a/Meade.net.v3.ncrunchsolution +++ b/Meade.net.v3.ncrunchsolution @@ -2,10 +2,12 @@ True True + True FocuserTestConsole\FocuserTestConsole.csproj TelescopeTestConsole\TelescopeTestConsole.csproj + True True \ No newline at end of file From 5b050c45c6e4463d5062720fa333e4525ff27401 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 12 Nov 2024 18:29:32 +0000 Subject: [PATCH 5/6] Removing the attmpt to get the LX200 to park --- Meade.net.Telescope/Telescope.cs | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index a52925e..988cd2f 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -1520,8 +1520,9 @@ namespace ASCOM.Meade.net { try { - LogMessage("CanPark", "Get - " + true); - return true; + var canPark = SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC; + LogMessage("CanPark", "Get - " + canPark); + return canPark; } catch (Exception ex) { @@ -2289,30 +2290,8 @@ namespace ASCOM.Meade.net } else { - LogMessage("Park", $"Calculating Park Alt Az"); - //var siteLatitude = SiteLatitude; - //var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - siteLatitude; - //var parkAz = siteLatitude >= 0 ? 180 : 0; - var parkAlt = 0; - var parkAz = 180; - - var eq = _astroMaths.ConvertHozToEq(UTCDate, SiteLatitude, SiteLongitude, new HorizonCoordinates() - { - Altitude = parkAlt, - Azimuth = parkAz - }); - - LogMessage("Park", $"Slewing to park position az:{parkAz} alt:{parkAlt}"); - SlewToCoordinates( eq.RightAscension, eq.Declination); - LogMessage("Park", $"Arrived at park position"); - - LogMessage("Park", $"Parking LX200 Classic"); - Tracking = false; - - LogMessage("Park", $"Making sure the scope is pointed to the correct Alt Az."); - parkAlt = 0; - parkAz = 180; - SlewToAltAz( parkAz, parkAlt, false); + LogMessage("Park", $"LX200 Classic does not support parking"); + throw new NotImplementedException("Park"); } //Setting park to true before sending the park command as the Autostar and Audiostar stop serial communications once the park command has been issued. From 04c2f5e1bb10f56dc7639990f6f88ff1ee1ce301 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 12 Nov 2024 18:52:03 +0000 Subject: [PATCH 6/6] Added unit testing to cover the LX200 not being able to park. --- .../TelescopeUnitTests.cs | 39 +++++++------------ 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 7add67e..9648436 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -911,12 +911,14 @@ namespace Meade.net.Telescope.UnitTests Assert.That(result, Is.EqualTo(expected)); } - [Test] - public void CanPark_Get_ReturnsTrue() + [TestCase("Autostar", "43Eg", true)] + [TestCase("LX200 Classic", "", false)] + public void CanPark_Get_ReturnsTrue(string productName, string firmware, bool canPark) { + ConnectTelescope(productName, firmware, $"{_testProperties.AlignmentMode}N0"); var result = _telescope.CanPark; - Assert.That(result, Is.True); + Assert.That(result, Is.EqualTo(canPark)); } [TestCase("Autostar", "43Eg")] @@ -1621,30 +1623,15 @@ namespace Meade.net.Telescope.UnitTests Assert.That(_telescope.AtPark, Is.True); } - //[Test] - //public void Park_WhenLX200NotParked_ThenSendsParkCommand() - //{ - // var alt = 1.0; - // var altAsDM = "01*00"; - // _utilMock.Setup(x => x.DegreesToDM(alt, "*", "", 2)).Returns(altAsDM); + [Test] + public void Park_WhenLX200ClassicNotParked_ThenSendsParkCommand() + { + ConnectTelescope(TelescopeList.LX200CLASSIC); + Assert.That(_telescope.AtPark, Is.False); + _sharedResourcesWrapperMock.Verify(x => x.SendBlind(_traceLoggerMock.Object, "hP", false), Times.Never); - // var az = 180; - // var azAsDM = "180*00"; - // _utilMock.Setup(x => x.DegreesToDM(az, "*", "", 2)).Returns(azAsDM); - - // //_sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sa+77*30", false)).Returns(true); - // //_sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sz180*00", false)).Returns(true); - - // _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sa+01*00", false)).Returns(true); - // _sharedResourcesWrapperMock.Setup(x => x.SendBool(_traceLoggerMock.Object, "Sz180*00", false)).Returns(true); - - // ConnectTelescope(TelescopeList.LX200CLASSIC); - // Assert.That(_telescope.AtPark, Is.False); - - // _telescope.Park(); - - // Assert.That(_telescope.AtPark, Is.True); - //} + Assert.Throws(() => { _telescope.Park(); }); + } [Test] public void Park_WhenParked_ThenDoesNothing()