diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 0ca288e..b9cbcc1 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -1374,25 +1374,27 @@ namespace ASCOM.Meade.net Declination = Declination }; - string d = string.Empty; - switch (direction) - { - case GuideDirections.guideEast: - d = "e"; - break; - case GuideDirections.guideNorth: - d = "n"; - break; - case GuideDirections.guideSouth: - d = "s"; - break; - case GuideDirections.guideWest: - d = "w"; - break; - } + if (_userNewerPulseGuiding && duration < 10000) { + string d = string.Empty; + switch (direction) + { + case GuideDirections.guideEast: + d = "e"; + break; + case GuideDirections.guideNorth: + d = "n"; + break; + case GuideDirections.guideSouth: + d = "s"; + break; + case GuideDirections.guideWest: + d = "w"; + break; + } + LogMessage("PulseGuide", "Using new pulse guiding technique"); _sharedResourcesWrapper.SendBlind($"#:Mg{d}{duration:0000}#"); //:MgnDDDD# @@ -1407,32 +1409,59 @@ namespace ASCOM.Meade.net } else { - LogMessage("PulseGuide", "Using old pulse guiding technique"); - _sharedResourcesWrapper.Lock(() => + string d = string.Empty; + switch (direction) { - _sharedResourcesWrapper.SendBlind("#:RG#"); //Make sure we are at guide rate - //:RG# Set Slew rate to Guiding Rate (slowest) - //Returns: Nothing - _sharedResourcesWrapper.SendBlind($"#:M{d}#"); - //:Me# Move Telescope East at current slew rate - //Returns: Nothing - //:Mn# Move Telescope North at current slew rate - //Returns: Nothing - //:Ms# Move Telescope South at current slew rate - //Returns: Nothing - //:Mw# Move Telescope West at current slew rate - //Returns: Nothing - _utilities.WaitForMilliseconds(duration); - _sharedResourcesWrapper.SendBlind($"#:Q{d}#"); - //:Qe# Halt eastward Slews - //Returns: Nothing - //:Qn# Halt northward Slews - //Returns: Nothing - //:Qs# Halt southward Slews - //Returns: Nothing - //:Qw# Halt westward Slews - //Returns: Nothing - }); + 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; + } + + + + //LogMessage("PulseGuide", "Using old pulse guiding technique"); + //_sharedResourcesWrapper.Lock(() => + //{ + // _sharedResourcesWrapper.SendBlind("#:RG#"); //Make sure we are at guide rate + // //:RG# Set Slew rate to Guiding Rate (slowest) + // //Returns: Nothing + // _sharedResourcesWrapper.SendBlind($"#:M{d}#"); + // //:Me# Move Telescope East at current slew rate + // //Returns: Nothing + // //:Mn# Move Telescope North at current slew rate + // //Returns: Nothing + // //:Ms# Move Telescope South at current slew rate + // //Returns: Nothing + // //:Mw# Move Telescope West at current slew rate + // //Returns: Nothing + // _utilities.WaitForMilliseconds(duration); + // _sharedResourcesWrapper.SendBlind($"#:Q{d}#"); + // //:Qe# Halt eastward Slews + // //Returns: Nothing + // //:Qn# Halt northward Slews + // //Returns: Nothing + // //:Qs# Halt southward Slews + // //Returns: Nothing + // //:Qw# Halt westward Slews + // //Returns: Nothing + //}); } var coordinatesAfterMove = new EquatorialCoordinates @@ -1451,7 +1480,7 @@ namespace ASCOM.Meade.net CheckConnected("RightAscension Get"); var result = _sharedResourcesWrapper.SendString("#:GR#"); //:GR# Get Telescope RA - //Returns: HH: MM.T# or HH:MM:SS# + //Returns: HH:MM.T# or HH:MM:SS# //Depending which precision is set for the telescope double rightAscension = _utilities.HMSToHours(result); diff --git a/TelescopeTestConsole/Program.cs b/TelescopeTestConsole/Program.cs index d794cbc..7b8c2d5 100644 --- a/TelescopeTestConsole/Program.cs +++ b/TelescopeTestConsole/Program.cs @@ -9,6 +9,9 @@ #define UseChooser using System; +using System.Linq; +using System.Threading; +using ASCOM.DeviceInterface; using ASCOM.DriverAccess; namespace ASCOM.Meade.net @@ -18,17 +21,17 @@ namespace ASCOM.Meade.net public static void Main() { // Uncomment the code that's required -#if UseChooser +//#if UseChooser // choose the device - string id = Telescope.Choose("ASCOM.MeadeGeneric.Telescope"); + string id = Telescope.Choose("ASCOM.Meade.net.Telescope"); if (string.IsNullOrEmpty(id)) return; // create this device Telescope device = new Telescope(id); -#else +//#else // this can be replaced by this code, it avoids the chooser and creates the driver class directly. - ASCOM.DriverAccess.Telescope device = new ASCOM.DriverAccess.Telescope("ASCOM.Meade.net.Telescope"); -#endif + //ASCOM.DriverAccess.Telescope device = new ASCOM.DriverAccess.Telescope("ASCOM.Meade.net.Telescope"); +//#endif // now run some tests, adding code to your driver so that the tests will pass. // these first tests are common to all drivers. @@ -50,9 +53,46 @@ namespace ASCOM.Meade.net //Console.WriteLine($"Ra {device.RightAscension}"); //Console.WriteLine($"Dec {device.Declination}"); - Console.WriteLine($"Altitude {device.Altitude}"); - Console.WriteLine($"Azimuth {device.Azimuth}"); - + //Console.WriteLine($"Altitude {device.Altitude}"); + //Console.WriteLine($"Azimuth {device.Azimuth}"); + + var seconds = 10; + + Console.WriteLine($"Slewing tests 10 second in each direction"); + Console.WriteLine($"test 1"); + device.MoveAxis(TelescopeAxes.axisPrimary, 4); + Thread.Sleep(seconds * 1000); + device.MoveAxis(TelescopeAxes.axisPrimary, 0); + Console.WriteLine($"test 2"); + device.MoveAxis(TelescopeAxes.axisPrimary, -4); + Thread.Sleep(seconds * 1000); + device.MoveAxis(TelescopeAxes.axisPrimary, 0); + + Console.WriteLine($"test 3"); + device.MoveAxis(TelescopeAxes.axisSecondary, 4); + Thread.Sleep(seconds * 1000); + device.MoveAxis(TelescopeAxes.axisSecondary, 0); + + Console.WriteLine($"test 4"); + device.MoveAxis(TelescopeAxes.axisSecondary, -4); + Thread.Sleep(seconds * 1000); + device.MoveAxis(TelescopeAxes.axisSecondary, 0); + Console.WriteLine($"Slewing tests complete"); + + + seconds = 120; + + Console.WriteLine($"Guiding for {seconds} seconds!"); + + foreach( var direction in Enum.GetValues(typeof(GuideDirections)).Cast()) + { + Console.WriteLine($"{direction.ToString()}"); + device.PulseGuide(direction, seconds* 1000); + } + Console.WriteLine($"Guiding Finished"); + + + device.Connected = false; Console.WriteLine("Press Enter to finish"); Console.ReadLine();