Added support for being able to have ASCOM see a value for guide rate.

This commit is contained in:
2019-07-19 22:15:41 +01:00
parent d9e551707f
commit e15537e6c3
2 changed files with 51 additions and 13 deletions
@@ -769,10 +769,9 @@ namespace Meade.net.Telescope.UnitTests
[Test]
public void GuideRateDeclination_Get_ThenThrowsException()
{
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { var result = _telescope.GuideRateDeclination; });
var result = _telescope.GuideRateDeclination;
Assert.That(excpetion.Property, Is.EqualTo("GuideRateDeclination"));
Assert.That(excpetion.AccessorSet, Is.False);
Assert.That(result, Is.EqualTo(0.004178074616551509));
}
[Test]
@@ -787,10 +786,9 @@ namespace Meade.net.Telescope.UnitTests
[Test]
public void GuideRateRightAscension_Get_ThenThrowsException()
{
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { var result = _telescope.GuideRateRightAscension; });
var result = _telescope.GuideRateRightAscension;
Assert.That(excpetion.Property, Is.EqualTo("GuideRateRightAscension"));
Assert.That(excpetion.AccessorSet, Is.False);
Assert.That(result, Is.EqualTo(0.004178074616551509));
}
[Test]
@@ -969,7 +967,7 @@ namespace Meade.net.Telescope.UnitTests
var duration = 0;
ConnectTelescope();
_telescope.PulseGuide(direction, 0);
_telescope.PulseGuide(direction, duration);
string d = string.Empty;
switch (direction)
@@ -1003,7 +1001,43 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => "31Ed");
_telescope.Connected = true;
_telescope.PulseGuide(direction, 0);
_telescope.PulseGuide(direction, duration);
string d = string.Empty;
switch (direction)
{
case GuideDirections.guideEast:
d = "e";
break;
case GuideDirections.guideWest:
d = "w";
break;
case GuideDirections.guideNorth:
d = "n";
break;
case GuideDirections.guideSouth:
d = "s";
break;
}
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":RG#"));
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":M{d}#"));
_utilMock.Verify(x => x.WaitForMilliseconds(duration), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":Q{d}#"));
}
[TestCase(GuideDirections.guideEast)]
[TestCase(GuideDirections.guideWest)]
[TestCase(GuideDirections.guideNorth)]
[TestCase(GuideDirections.guideSouth)]
public void PulseGuide_WhenConnectedAndNewerPulseGuidingAvailableButDurationTooLong_ThenSendsOldCommandsAndWaits(GuideDirections direction)
{
var duration = 10000;
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.Autostar497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => "31Ed");
_telescope.Connected = true;
_telescope.PulseGuide(direction, duration);
string d = string.Empty;
switch (direction)
+9 -5
View File
@@ -97,6 +97,10 @@ namespace ASCOM.Meade.net
Initialise();
}
private double _guideRate;
private const double SIDRATE = 0.9972695677; //synodic/solar seconds per sidereal second
private void Initialise()
{
//todo move the TraceLogger out to a factory class.
@@ -107,6 +111,8 @@ namespace ASCOM.Meade.net
IsConnected = false; // Initialise connected to false
_guideRate = 15.0 * (1.0 / 3600.0) / SIDRATE;
LogMessage("Telescope", "Completed initialisation");
}
@@ -903,7 +909,7 @@ namespace ASCOM.Meade.net
get
{
LogMessage("GuideRateDeclination Get", "Not implemented");
throw new PropertyNotImplementedException("GuideRateDeclination", false);
return _guideRate;
}
set
{
@@ -917,7 +923,7 @@ namespace ASCOM.Meade.net
get
{
LogMessage("GuideRateRightAscension Get", "Not implemented");
throw new PropertyNotImplementedException("GuideRateRightAscension", false);
return _guideRate;
}
set
{
@@ -1075,7 +1081,7 @@ namespace ASCOM.Meade.net
break;
}
if (_userNewerPulseGuiding)
if (_userNewerPulseGuiding && duration < 10000)
{
_sharedResourcesWrapper.SendBlind($":Mg{d}{duration:0000}#");
//:MgnDDDD#
@@ -1086,8 +1092,6 @@ namespace ASCOM.Meade.net
//passed in the command.These commands support serial port driven guiding.
//Returns Nothing
//LX200 Not Supported
//todo implement IsPulseGuiding if WaitForMilliseconds is not needed
_utilities.WaitForMilliseconds(duration); //todo figure out if this is really needed
}
else