diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 25f49a3..1bd772b 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -1356,6 +1356,29 @@ namespace Meade.net.Telescope.UnitTests Assert.That(exception.Message, Is.EqualTo("Unable to PulseGuide while moving same axis.")); } + [TestCase(GuideDirections.guideEast)] + [TestCase(GuideDirections.guideWest)] + [TestCase(GuideDirections.guideNorth)] + [TestCase(GuideDirections.guideSouth)] + public void PulseGuide_WhenConnectedAndNewerPulseGuidingNotAvailable_ThenIsSlewingRespondsFalse(GuideDirections direction) + { + var duration = 0; + _sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => TelescopeList.Autostar497); + _sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => TelescopeList.Autostar497_30Ee); + + var isSlewing = true; + _utilMock.Setup(x => x.WaitForMilliseconds(duration)).Callback(() => + { + isSlewing = _telescope.Slewing; + }); + + _telescope.Connected = true; + + _telescope.PulseGuide(direction, duration); + + Assert.That(isSlewing, Is.False); + } + [TestCase(GuideDirections.guideEast)] [TestCase(GuideDirections.guideWest)] [TestCase(GuideDirections.guideNorth)] diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index f1d55f0..8a41f33 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -134,7 +134,8 @@ namespace ASCOM.Meade.net } private double _guideRate; - + private bool _isGuiding = false; + private void Initialise() { //todo move the TraceLogger out to a factory class. @@ -1459,28 +1460,36 @@ namespace ASCOM.Meade.net } else { - switch (direction) + _isGuiding = true; + try { - case GuideDirections.guideEast: - MoveAxis(TelescopeAxes.axisPrimary, 1); - _utilities.WaitForMilliseconds(duration); - MoveAxis(TelescopeAxes.axisPrimary, 0); - break; - case GuideDirections.guideNorth: - MoveAxis(TelescopeAxes.axisSecondary, 1); - _utilities.WaitForMilliseconds(duration); - MoveAxis(TelescopeAxes.axisSecondary, 0); - break; - case GuideDirections.guideSouth: - MoveAxis(TelescopeAxes.axisSecondary, -1); - _utilities.WaitForMilliseconds(duration); - MoveAxis(TelescopeAxes.axisSecondary, 0); - break; - case GuideDirections.guideWest: - MoveAxis(TelescopeAxes.axisPrimary, -1); - _utilities.WaitForMilliseconds(duration); - MoveAxis(TelescopeAxes.axisPrimary, 0); - break; + switch (direction) + { + case GuideDirections.guideEast: + MoveAxis(TelescopeAxes.axisPrimary, 1); + _utilities.WaitForMilliseconds(duration); + MoveAxis(TelescopeAxes.axisPrimary, 0); + break; + case GuideDirections.guideNorth: + MoveAxis(TelescopeAxes.axisSecondary, 1); + _utilities.WaitForMilliseconds(duration); + MoveAxis(TelescopeAxes.axisSecondary, 0); + break; + case GuideDirections.guideSouth: + MoveAxis(TelescopeAxes.axisSecondary, -1); + _utilities.WaitForMilliseconds(duration); + MoveAxis(TelescopeAxes.axisSecondary, 0); + break; + case GuideDirections.guideWest: + MoveAxis(TelescopeAxes.axisPrimary, -1); + _utilities.WaitForMilliseconds(duration); + MoveAxis(TelescopeAxes.axisPrimary, 0); + break; + } + } + finally + { + _isGuiding = false; } } @@ -1924,6 +1933,9 @@ namespace ASCOM.Meade.net private bool MovingAxis() { + if (_isGuiding) + return false; + return _movingPrimary || _movingSecondary; } @@ -1945,6 +1957,9 @@ namespace ASCOM.Meade.net { CheckConnected("Slewing Get"); + if (_isGuiding) + return false; + var result = _sharedResourcesWrapper.SendString("#:D#"); //:D# Requests a string of bars indicating the distance to the current target location. //Returns: