Added a check to ensure that pulse guide commands fail when the scope is slewing or already being moved on the same axes.
This commit is contained in:
@@ -1322,6 +1322,40 @@ namespace Meade.net.Telescope.UnitTests
|
|||||||
_utilMock.Verify( x => x.WaitForMilliseconds(duration), Times.Once);
|
_utilMock.Verify( x => x.WaitForMilliseconds(duration), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase(GuideDirections.guideEast)]
|
||||||
|
[TestCase(GuideDirections.guideWest)]
|
||||||
|
[TestCase(GuideDirections.guideNorth)]
|
||||||
|
[TestCase(GuideDirections.guideSouth)]
|
||||||
|
public void PulseGuide_WhenSlewingAndPulseGuideAttempted_ThenThrowsExpectedException(GuideDirections direction)
|
||||||
|
{
|
||||||
|
_sharedResourcesWrapperMock.Setup(x => x.SendString("#:D#")).Returns("|");
|
||||||
|
|
||||||
|
var duration = 0;
|
||||||
|
ConnectTelescope();
|
||||||
|
|
||||||
|
var exception = Assert.Throws<InvalidOperationException>(() => { _telescope.PulseGuide(direction, duration); });
|
||||||
|
|
||||||
|
Assert.That(exception.Message, Is.EqualTo("Unable to PulseGuide whilst slewing to target."));
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase(GuideDirections.guideEast, TelescopeAxes.axisPrimary)]
|
||||||
|
[TestCase(GuideDirections.guideWest, TelescopeAxes.axisPrimary)]
|
||||||
|
[TestCase(GuideDirections.guideNorth, TelescopeAxes.axisSecondary)]
|
||||||
|
[TestCase(GuideDirections.guideSouth, TelescopeAxes.axisSecondary)]
|
||||||
|
public void PulseGuide_WhenMovingAxisAndPulseGuideAttempted_ThenThrowsExpectedException(GuideDirections direction, TelescopeAxes axes)
|
||||||
|
{
|
||||||
|
_sharedResourcesWrapperMock.Setup(x => x.SendString("#:D#")).Returns("");
|
||||||
|
|
||||||
|
var duration = 0;
|
||||||
|
ConnectTelescope();
|
||||||
|
|
||||||
|
_telescope.MoveAxis(axes, 1);
|
||||||
|
|
||||||
|
var exception = Assert.Throws<InvalidOperationException>(() => { _telescope.PulseGuide(direction, duration); });
|
||||||
|
|
||||||
|
Assert.That(exception.Message, Is.EqualTo("Unable to PulseGuide while moving same axis."));
|
||||||
|
}
|
||||||
|
|
||||||
[TestCase(GuideDirections.guideEast)]
|
[TestCase(GuideDirections.guideEast)]
|
||||||
[TestCase(GuideDirections.guideWest)]
|
[TestCase(GuideDirections.guideWest)]
|
||||||
[TestCase(GuideDirections.guideNorth)]
|
[TestCase(GuideDirections.guideNorth)]
|
||||||
|
|||||||
@@ -1415,6 +1415,15 @@ namespace ASCOM.Meade.net
|
|||||||
LogMessage("PulseGuide", $"pulse guide direction {direction} duration {duration}");
|
LogMessage("PulseGuide", $"pulse guide direction {direction} duration {duration}");
|
||||||
CheckConnected("PulseGuide");
|
CheckConnected("PulseGuide");
|
||||||
|
|
||||||
|
if (IsSlewingToTarget())
|
||||||
|
throw new InvalidOperationException("Unable to PulseGuide whilst slewing to target.");
|
||||||
|
|
||||||
|
if (_movingPrimary && (direction == GuideDirections.guideEast || direction == GuideDirections.guideWest))
|
||||||
|
throw new InvalidOperationException("Unable to PulseGuide while moving same axis.");
|
||||||
|
|
||||||
|
if (_movingSecondary && (direction == GuideDirections.guideNorth || direction == GuideDirections.guideSouth))
|
||||||
|
throw new InvalidOperationException("Unable to PulseGuide while moving same axis.");
|
||||||
|
|
||||||
var coordinatesBeforeMove = GetTelescopeRaAndDec();
|
var coordinatesBeforeMove = GetTelescopeRaAndDec();
|
||||||
|
|
||||||
if (_userNewerPulseGuiding && duration < 10000)
|
if (_userNewerPulseGuiding && duration < 10000)
|
||||||
@@ -1928,6 +1937,12 @@ namespace ASCOM.Meade.net
|
|||||||
if (MovingAxis())
|
if (MovingAxis())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
return IsSlewingToTarget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsSlewingToTarget()
|
||||||
|
{
|
||||||
CheckConnected("Slewing Get");
|
CheckConnected("Slewing Get");
|
||||||
|
|
||||||
var result = _sharedResourcesWrapper.SendString("#:D#");
|
var result = _sharedResourcesWrapper.SendString("#:D#");
|
||||||
@@ -1946,7 +1961,6 @@ namespace ASCOM.Meade.net
|
|||||||
LogMessage("Slewing Get", $"Result = {isSlewing}");
|
LogMessage("Slewing Get", $"Result = {isSlewing}");
|
||||||
return isSlewing;
|
return isSlewing;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void SyncToAltAz(double azimuth, double altitude)
|
public void SyncToAltAz(double azimuth, double altitude)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user