Click or drag to resize

ITelescopeV4MoveAxis Method

Move the telescope in one axis at the given rate.

Namespace: ASCOM.DeviceInterface
Assembly: ASCOM.DeviceInterfaces (in ASCOM.DeviceInterfaces.dll) Version: 7.0.0-rc.0+0
Syntax
void MoveAxis(
	TelescopeAxes Axis,
	double Rate
)

Parameters

Axis  TelescopeAxes
The physical axis about which movement is desired
Rate  Double
The rate of motion (deg/sec) about the specified axis
Exceptions
ExceptionCondition
MethodNotImplementedExceptionIf the method is not implemented.
InvalidValueExceptionIf an invalid axis or rate is given.
NotConnectedExceptionIf the device is not connected
DriverExceptionAn error occurred that is not described by one of the more specific ASCOM exceptions. Include sufficient detail in the message text to enable the issue to be accurately diagnosed by someone other than yourself.
Remarks

This method supports control of the mount about its mechanical axes. The telescope will start moving at the specified rate about the specified axis and continue indefinitely. This method can be called for each axis separately, and have them all operate concurrently at separate rates of motion. Set the rate for an axis to zero to restore the motion about that axis to the rate set by the Tracking property. Tracking motion (if enabled, see note below) is suspended during this mode of operation.

Raises an error if AtPark is true.

MoveAxis(TelescopeAxes, Double) must be implemented if CanMoveAxis(TelescopeAxes) returns True for the given axis.

We see MoveAxis() as being in a different class to the higher level operations because it just says move this axis in this direction at this rate. Like the CommandXXX methods, the driver has no idea what objective the client is trying to achieve and must blindly follow the instructions it is given. In effect the client is now providing the high level functions of the driver / mount control system and is just commandeering the driver to communicate the desired axis movement rate to the mount.

For this reason it is our view that, when MoveAxis() is in effect on any axis, clients should not rely on the Tracking value reported by drivers.Since the client is providing high level control and directing use of MoveAxis(), only the client knows whether the mount is moving to its target coordinates at a fast rate or whether it is tracking a target at some arbitrary multi-axis rate.

A MoveAxis(TelescopeAxes, Double) call with Rate = 0 is required to stop motion and return to the previous tracking state of that axis.

NOTES:
  • The Slewing property must remain whenever any axis has a non-zero MoveAxis rate. E.g. Suppose MoveAxis is used to make both the RA and declination axes move at valid axis rates. If the declination axis rate is then set to zero, Slewing must remain because the RA axis is still moving at a non-zero axis rate.
  • The movement rate must be within the value(s) obtained from a IRate object in the the AxisRates(TelescopeAxes) collection. This is a signed value with negative rates moving in the opposite direction to positive rates.
  • The values specified in AxisRates(TelescopeAxes) are absolute, unsigned values and apply to both directions, determined by the sign used in this command.
  • MoveAxis can be used to simulate a hand-box by initiating motion with the MouseDown event and stopping the motion with the MouseUp event.
  • It may be possible to implement satellite tracking by using the MoveAxis(TelescopeAxes, Double) method to move the scope in the required manner to track a satellite.

ITelescopeV4 clarification - This method must act asynchronously using Slewing as the completion variable. This means that Slewing must remain until the movement rate is cancelled by setting a MoveAxis rate of 0.0 or an error condition occurs.

Revision History
DateVersionDescription
ITelescopeV2Platform 4.0Member added.
ITelescopeV4Platform 7.0Formally defined as operating asynchronously, see note above.
See Also