
ICameraV4 Interface
- class Camera
Bases:
ASCOM.DeviceInterface
ASCOM Standard ICamera V4 Interface
Methods
- Camera.AbortExposure()
Abort the current exposure, if any, and returns the camera to Idle state.
- Returns:
Nothing
- Raises:
MethodNotImplementedException – If
CanAbortExposure
is False.InvalidOperationException – If abort is not currently possible (e.g. during download).
NotConnectedException – If the device is not connected
DriverException – An 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. Includes hardware or communication errors.
Attention
May throw a
MethodNotImplementedException
ifCanAbortExposure
is false.Note
Unlike
StopExposure()
this method simply discards any partially-acquired image data and returns the camera to idle.Must throw an
InvalidOperationException
if camera is not idle and abort is unsuccessful (or not possible, e.g. during download).Must throw a
DriverException
if hardware or communications error occurs.Must not throw an exception if the camera is already idle.
- Camera.Action(ActionName: str, ActionParameters)
Added in version 2: Recommended over (now) deprecated
CommandBlind()
,CommandBool()
, andCommandString()
as more flexible extension mechanic.Invoke the specified device-specific custom action
- Parameters:
ActionName (str) – A name from
SupportedActions
that represents the action to be carried out.ActionParameters (str) – List of required arguments or empty string if none are required.
- Returns:
Action response. The meaning of returned strings is set by the driver author. See notes below.
- Return type:
string
- Raises:
MethodNotImplementedException – If no actions at all are supported
ActionNotImplementedException – If the driver does not support the requested ActionName. The supported action names are listed in
SupportedActions
.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
Must be implemented but may throw
MethodNotImplementedException
if no custom actions are supported.This method, combined with
SupportedActions
, is the supported mechanic for adding non-standard functionality.Note
Action names must be case insensitive, so for example SelectWheel, selectwheel and SELECTWHEEL all refer to the same action.
An example of a string response: Suppose filter wheels start to appear with automatic wheel changers; new actions could be QueryWheels and SelectWheel. The former returning a formatted list of wheel names and the second taking a wheel name and making the change, returning appropriate values to indicate success or failure.
- Camera.CommandBlind(Command: str, Raw: bool)
Added in version 2: Member added as part of common interface elements.
Deprecated since version 4: Use the more flexible
Action()
andSupportedActions
mechanic. See Notes below.Transmit an arbitrary string to the device and does not wait for a response.
- Parameters:
Command (str) – The literal command string to be transmitted.
Raw (bool) – If True, command is transmitted ‘as-is’. If False, then protocol framing characters may be added prior to transmission.
- Returns:
Nothing
- Raises:
MethodNotImplementedException – If the method is not implemented
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Deprecated, may result in
MethodNotImplementedException
Note
The CommandXXX methods are a historic mechanic that provides clients with direct and unimpeded access to change device hardware configuration. While highly enabling for clients, this mechanic is inherently risky because clients can fundamentally change hardware operation without the driver being aware that a change is taking / has taken place.
The newer
Action
andSupportedActions
mechanic provides discrete, named, functions that can deliver any functionality required.They do need driver authors to make provision for them within the driver, but this approach is much lower risk than using the CommandXXX methods because it enables the driver to resolve conflicts between standard device interface commands and extended commandsprovided as Actions.The driver is always aware of what is happening and can adapt more effectively to client needs.
- Camera.CommandBool(Command: str, Raw: bool)
Added in version 2: Member added as part of common interface elements.
Deprecated since version 4: Use the more flexible
Action()
andSupportedActions
mechanic. See Notes below.Transmit an arbitrary string to the device and wait for a boolean response.
- Parameters:
Command (str) – The literal command string to be transmitted.
Raw (bool) – If True, command is transmitted ‘as-is’. If False, then protocol framing characters may be added prior to transmission.
- Returns:
True/False response from the command
- Return type:
boolean
- Raises:
MethodNotImplementedException – If the method is not implemented
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Deprecated, may result in
MethodNotImplementedException
Note
The CommandXXX methods are a historic mechanic that provides clients with direct and unimpeded access to change device hardware configuration. While highly enabling for clients, this mechanic is inherently risky because clients can fundamentally change hardware operation without the driver being aware that a change is taking / has taken place.
The newer
Action
andSupportedActions
mechanic provides discrete, named, functions that can deliver any functionality required.They do need driver authors to make provision for them within the driver, but this approach is much lower risk than using the CommandXXX methods because it enables the driver to resolve conflicts between standard device interface commands and extended commandsprovided as Actions.The driver is always aware of what is happening and can adapt more effectively to client needs.
- Camera.CommandString(Command: str, Raw: bool)
Added in version 2: Member added as part of common interface elements.
Deprecated since version 4: Use the more flexible
Action()
andSupportedActions
mechanic. See Notes below.Transmit an arbitrary string to the device and wait for a string response.
- Parameters:
Command (str) – The literal command string to be transmitted.
Raw (bool) – If True, command is transmitted ‘as-is’. If False, then protocol framing characters may be added prior to transmission.
- Returns:
String response from the command
- Return type:
string
- Raises:
MethodNotImplementedException – If the method is not implemented
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Deprecated, may result in
MethodNotImplementedException
Note
The CommandXXX methods are a historic mechanic that provides clients with direct and unimpeded access to change device hardware configuration. While highly enabling for clients, this mechanic is inherently risky because clients can fundamentally change hardware operation without the driver being aware that a change is taking / has taken place.
The newer
Action
andSupportedActions
mechanic provides discrete, named, functions that can deliver any functionality required.They do need driver authors to make provision for them within the driver, but this approach is much lower risk than using the CommandXXX methods because it enables the driver to resolve conflicts between standard device interface commands and extended commandsprovided as Actions.The driver is always aware of what is happening and can adapt more effectively to client needs.
- async Camera.Connect()
Added in version 4: Preferred asynchronous connection mechanic. See Important section below.
Connect to the device asynchronously. Use this to connect to a device rather than setting
Connected
to True.
- Returns:
Nothing
- Raises:
DriverException – An 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. Includes communication errors.
Important
Non-Blocking. On return,
Connecting
must be True unless already connected. Connection has successfully completed whenConnecting
becomes (or is) False.This is a mandatory method and must not throw a
MethodNotConnectedException
.Use this to connect to a device rather than setting
Connected
to True.
- async Camera.Disconnect()
Added in version 4: Preferred asynchronous connection mechanic. See Important section below.
Disconnect from the device asynchronously. Use this to disconnect from a device rather than setting
Connected
to False.
- Returns:
Nothing
- Raises:
DriverException – An 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. Includes communication errors.
Important
Non-Blocking. On return,
Connecting
must be True unless already disconnected. Disconnect has successfully completed whenConnecting
becomes (or is) False.This is a mandatory method and must not throw a
MethodNotImplementedException
.Use this to disconnect from a device rather than setting
Connected
to False.
- async Camera.PulseGuide(Direction: GuideDirections, Duration: int)
Activates the Camera’s guiding signals, via physical cable(s) connected to the mount, to instruct the mount to move in a particular direction for a given period of time. This duplicates the function of
Telescope.PulseGuide()
. See What Does PulseGuide() Do? I’m Confused..Non-blocking: Returns with
IsPulseGuiding
False. See Notes.
- Parameters:
Direction (enum) – The direction of the move. See
GuideDirections
and Notes on meaning of direction.Duration (int) – duration of the guide move, milliseconds
- Returns:
Nothing
- Raises:
MethodNotImplementedException – If the camera does not support pulse guiding (
CanPulseGuide
property is False)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
May throw a
MethodNotImplemented
exception if the camera does not support pulse guiding (CanPulseGuide
property is False)Note
Asynchronous: The method returns as soon pulse-guiding operation has been successfully started with
IsPulseGuiding
property True. However, you may find thatIsPulseGuiding
is False when you get around to checking it if the ‘pulse’ is short. This is still a success if you get False back and not an exception.Some older cameras have implemented this as a Synchronous (blocking) operation.
Directions are nominal and may depend on exact mount wiring.
guideNorth
must be oppositeguideSouth
, andguideEast
must be oppositeguideWest
.In addition,
GuideDirections
for North and South have varying interpretations by German Equatorial mounts. Some GEM mounts interpret North to be the same rotation direction of the declination axis regardless of their pointing state (“side of the pier”). Others truly implement North and South by reversing the dec-axis rotation depending on their pointing state. Apps must be prepared for either behavior.This duplicates the function of
Telescope.PulseGuide()
but with physical connections (“guider cables”). See What Does PulseGuide() Do? I’m Confused.
- Camera.SetupDialog()
Launches a configuration dialogue box for the driver. The call will not return until the user clicks OK or cancels manually.
Please note that this method is only valid for COM drivers. Alpaca devices should provide configuration through the Alpaca HTML endpoints and should not implement a SetupDialog endpoint.
- Returns:
Nothing
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
MethodNotImplementedException
Note
Blocking It is permissible that the configuration dialog is modal, and for the driver not to respond to other calls while this dialog is open.
- async Camera.StartExposure(Duration: float, Light: bool)
Start an exposure. Non-blocking: Returns with
ImageReady
= False if exposure has successfully been started. UseImageReady
to check when the exposure is complete and ready for access viaImageArray
. See Note.
- Parameters:
Duration (float) – The duration of exposure in seconds.
Light (bool) – True for light frame, False for dark frame (ignored if no shutter)
- Returns:
Nothing
- Raises:
InvalidValueException – If
Duration
parameter, or any ofBinX
,BinY
,StartX
,StartY
,NumX
, andNumY
have invalid or incompatible combinations of values.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
If your device throws an
InvalidValueException
here, it is vital that the error message explains which of the binning, subframe, orSubExposureDuration
values are illegal or combine to produce an illegal combination. Help your user solve the problem!Attention
Must be implemented, must not throw a
MethodNotImplementedException
.Note
Asynchronous (non-blocking): Use
ImageReady
to determine if the exposure has been successfully completed and the image data is ready for access via viaImageArray
. Refer toImageReady
for additional info.The combination of values for
BinX
,BinY
,StartX
, andStartY
must be checked when a call to StartExposure() is received. If any of these values is illegal, or if a limitation is imposed byCanAsymmetricBin
being False. If any of these conditions exist, an appropriate exception must be thrown as described above.A dark frame or bias exposure may be shorter than the
ExposureMin
value and for a bias frame can be zero. Check the value ofLight
and allow exposures down to 0 seconds ifLight
is false. If the hardware will not support an exposure duration of zero then, for dark and bias frames, set it to the minimum that is possible.Some applications will set an exposure time of zero for bias frames so it’s important that the driver allows this.
- async Camera.StopExposure()
Stop the current exposure, if any, and make available the image data already acquired. Non-blocking: Returns with
ImageReady
= False if and exposure is actually in progress. UseImageReady
to check when the exposure has been stopped and existing image data is ready for access viaImageArray
. See Note.
- Returns:
Nothing
- Raises:
MethodNotImplementedException – If the camera cannot stop an in-progress exposure and save the already-acquired image data (
CanStopExposure
is False)InvalidOperationException – If
CanAsymmetricBin
is False, yetBinX
.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Optional, may throw a
MethodNotImplementedException
.Note
Asynchronous (non-blocking): Use
ImageReady
to determine if the exposure has been successfully stopped and the image data is ready for access via viaImageArray
. Refer toImageReady
for additional info.Unlike
AbortExposure()
this method must cut an exposure short while preserving the image data acquired so far, making it available to the client.If an exposure is in progress, the readout process is initiated. Ignored if readout is already in process.
Must not raise an exception if the camera is idle.
Properties
- property Camera.BayerOffsetX: Integer
Added in version 2: For color imaging
- Returns:
The X offset of the Bayer colour matrix, as defined in property
SensorType
- Return type:
Integer
- Raises:
PropertyNotImplementedException – If the camera is monochrome. See first Note.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented by colour cameras, monochrome cameras must throw a
PropertyNotImplementedException
.Note
Since monochrome cameras don’t have a Bayer colour matrix by definition, such cameras must throw a
PropertyNotImplementedException
. Colour cameras must always return a value and must not throw aPropertyNotImplementedException
.The value returned will be in the range 0 to M-1 where M is the X-width of the Bayer matrix. The offset is relative to the 0,0 pixel in the sensor array, and does not change to reflect subframe settings.
- property Camera.BayerOffsetY: Integer
Added in version 2: For color imaging
- Returns:
The Y offset of the Bayer colour matrix, as defined in property
SensorType
- Return type:
Integer
- Raises:
PropertyNotImplementedException – If the camera is monochrome. See first Note.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented by colour cameras, monochrome cameras must throw a
PropertyNotImplementedException
.Note
Since monochrome cameras don’t have a Bayer colour matrix by definition, such cameras must throw a
PropertyNotImplementedException
. Colour cameras must always return a value and must not throw aPropertyNotImplementedException
.The value returned will be in the range 0 to M-1 where M is the Y-width of the Bayer matrix. The offset is relative to the 0,0 pixel in the sensor array, and does not change to reflect subframe settings.
- property Camera.BinX: Integer
Read/Write Gets or sets the binning factor for the X axis, also returns the current value.
- Returns:
The binning factor for the X axis.
- Return type:
Integer
- Raises:
InvalidValueException – An invalid binning value is written to the property See Notes.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Should default to 1 when the camera connection is established.
If
CanAsymmetricBin
is False, then the binning values must be the same. Setting this property must result inBinY
being the same value.Camera does not check for compatible subframe values when this property is set; rather they are checked upon
StartExposure()
.
- property Camera.BinY: Integer
Read/Write Gets or sets binning factor for the Y axis, also returns the current value.
- Returns:
The binning factor for the Y axis.
- Return type:
Integer
- Raises:
InvalidValueException – An invalid binning value is written to the property See Notes.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Should default to 1 when the camera connection is established.
If
CanAsymmetricBin
is False, then the binning values must be the same. Setting this property must result inBinX
being the same value.Camera does not check for compatible subframe values when this property is set; rather they are checked upon
StartExposure()
.
- property Camera.CameraState: enum CameraStates
Current operational state of the camera. See State Transition Diagram for Camera.CameraState.
- Returns:
The camera’s operational state
- Return type:
enum
CameraStates
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
- property Camera.CameraXSize: Integer
- Returns:
The width of the camera sensor in unbinned pixels
- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
- property Camera.CameraYSize: Integer
- Returns:
The height of the camera sensor in unbinned pixels
- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
- property Camera.CanAbortExposure: Boolean
- Returns:
True if the camera can abort exposures with
AbortExposure()
, else False. See Note.- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
Some cameras support
AbortExposure()
, which allows the exposure to be terminated before the exposure timer completes, with the image being discarded. Returns True ifAbortExposure()
is available, False if not. See alsoCanStopExposure
and “StopExposure()
- property Camera.CanAsymmetricBin: Boolean
- Returns:
True if the camera supports asymmetric binning, else False. See Note.
- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
- property Camera.CanFastReadout: Boolean
Added in version 2: For imaging mode support
- Returns:
True if the camera supports a fast readout mode. If this is False then the camera may offer
ReadoutModes
.- Return type:
Boolean
Deprecation Notice
FastReadout
is an obsolete mechanic for controlling camera mode(s). TheReadoutMode
mechanic should be used.
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
If the camera offers
ReadoutMode
andReadoutModes
, then this property must be False.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.CanGetCoolerPower: Boolean
- Returns:
True if the camera’s cooler power level is available via
CoolerPower
, else False.- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
- property Camera.CanPulseGuide: Boolean
- Returns:
True if the camera supports pulse guiding with electrical “guider cables” via
PulseGuide()
, else False.- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
Returns true if the camera can directly send auto-guider pulses to the telescope mount via an electrical connection (“guider cables”).
This does not provide any indication of whether the auto-guider cable is actually connected.
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
The action is analogous to the function of
Telescope.CanPulseGuide
. See What Does PulseGuide() Do? I’m Confused..
- property Camera.CanSetCCDTemperature: Boolean
- Returns:
True if the camera’s cooler temperature can be controlled via
SetCCDTemperature
, else False.- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
If True, the camera’s cooler setpoint can be adjusted. If False, the camera either uses open-loop cooling or does not have the ability to adjust temperature from software, and setting the
SetCCDTemperature
property has no effect.
- property Camera.CanStopExposure: Boolean
- Returns:
True if the camera can stop exposures via
StopExposure()
else False.- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
Some cameras support
StopExposure()
, which allows the exposure to be terminated before the exposure timer completes, but will still read out the image. Returns True ifStopExposure()
is available, False if not. See alsoAbortExposure()
andCanAbortExposure
- property Camera.CCDTemperature: Float
- Returns:
The current CCD cooler temperature in degrees Celsius.
- Return type:
float
- Raises:
InvalidOperationException – If data unavailable.
PropertyNotImplementedException – If not supported (can’t report cooler temperature)
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
- property Camera.Connected: boolean
Changed in version 4: Writing to change connection state superseded by asynchronous
Connect()
,Disconnect()
, andConnecting
.Read/Write Gets or sets the connected state of the device. Writing is deprecated, use the newer
Connect()
andDisconnect()
methods, and the newerConnecting
property. See Notes below.Set True to connect to the device hardware. Set False to disconnect from the device hardware. You can also read the property to check whether it is connected. This reports the current hardware state. See Notes below.
- Returns:
True if connected to the hardware, else false.
- Return type:
boolean
- Raises:
DriverException – An 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. Includes communication errors.
Deprecation Notice
Property-write is deprecated as of Camera V4. Starting with Platform 7 and the interface revisions contained therein, writing to Connected is discouraged. To connect and disconnect, use the newer non-blocking
Connect()
andDisconnect()
methods, with the newConnecting
property serving as the completion property.Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
Do not use a
NotConnectedException
here, that exception is for use in other methods that require a connection in order to succeed.The Connected property sets and reports the state of connection to the device hardware. For a hub this means that Connected will be True when the first driver connects and will only be set to False when all drivers have disconnected. A second driver may find that Connected is already True and setting Connected to False does not report Connected as False. This is not an error because the physical state is that the hardware connection is still True.
Multiple calls setting Connected to True or False will not cause an error.
- property Camera.Connecting: Boolean
Added in version 4: Preferred asynchronous connection mechanic. See Notes below.
- Returns:
Returns True while the device is undertaking an asynchronous connect or disconnect operation.
- Return type:
boolean
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This is the correct property for determing when the non-blocking methods
Connect()
orDisconnect()
have completed. Completion is whenConnecting
becomes False after calling either of these methods.
- property Camera.CoolerOn: Boolean
Read/Write Turns the camera cooler on and off and returns the current cooler on/off state.
- Returns:
The current cooler on/off state.
- Return type:
Boolean
- Raises:
PropertyNotImplementedException – If not supported (can’t report cooler temperature)
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Warning
For some cameras, turning the cooler off when the cooler is operating at high delta-T (typically >20C below ambient) may result in thermal shock. Repeated thermal shock may lead to damage to the sensor or cooler stack. Please consult the documentation supplied with the camera for further information.
- property Camera.CoolerPower: Float
- Returns:
The current cooler power level in percent.
- Return type:
Float
- Raises:
PropertyNotImplementedException – If not supported (can’t report cooler temperature)
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Must return zero if
CoolerOn
is False.
- property Camera.Description: String
- Returns:
Description of the device such as manufacturer and model number. Any ASCII characters may be used.
- Return type:
string
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This describes the device, not the driver. See the
DriverInfo
property for information on the ASCOM driver.The description length must be a maximum of 64 characters so that it can be used in FITS image headers, which are limited to 80 characters including the header name.
- property Camera.DeviceState: List[StateValue]
Added in version 4: To allow reduction of status polling
- Returns:
List of
StateValue
objects representing the operational properties of this device. See What is the “read all” feature and what are its rules?.- Return type:
List
- This device must return the following operational properties if they are known:
Note
For more info see What is the “read all” feature and what are its rules?.
- property Camera.DriverInfo: String
Added in version 2: Member added.
- Returns:
Descriptive and version information about the ASCOM driver
- Return type:
string
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This string may contain line endings and may be hundreds to thousands of characters long.It is intended to display detailed information on the ASCOM driver, including version and copyright data. See the
Description
property for information on the device itself. To get the driver version in a parse-able string, use theDriverVersion
property.
- property Camera.DriverVersion: String
Added in version 2: Member added.
- Returns:
String containing only the major and minor version of the driver.
- Return type:
string
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This must be in the form “n.n”. It should not to be confused with the
InterfaceVersion
property, which is the version of this specification supported by the driver.On systems with a comma as the decimal point you may need to make accommodations to parse the value.
- property Camera.ElectronsPerADU: Float
- Returns:
The gain of the camera in photoelectrons per A/D unit in its current modes. See Notes and MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
- Return type:
Float
- Raises:
PropertyNotImplementedException – If this property is not available for the camera.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
At run-time, a change to
Binx
,BinY
,Gain
,Offset
, orReadoutMode
which results in this value changing must be reflected immediately in this property’s value. Similarly, if a change via the camera’sSetupDialog()
settings changes the value, this property must be updated immediately.See MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
- property Camera.ExposureMax: Float
Added in version 3: Member added.
- Returns:
The maximum exposure time (seconds) supported by
StartExposure()
.- Return type:
Float
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.ExposureMin: Float
Added in version 3: Member added.
- Returns:
The minimum exposure time (seconds) supported by
StartExposure()
.- Return type:
Float
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This must be a non-zero number representing the shortest possible exposure time supported by the camera model.
For bias frame acquisition an even shorter exposure may be possible; please see
StartExposure()
for more information.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.ExposureResolution: Float
Added in version 3: Member added.
- Returns:
The smallest increment in exposure time (seconds) supported by
StartExposure()
.- Return type:
Float
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This can be used, for example, to specify the resolution of a user interface “spin control” used to dial in the exposure time.
The duration provided to
StartExposure()
does not have to be an exact multiple of this number; the driver must choose the closest available value.In some cases the resolution may not be constant over the full range of exposure times; in this case the smallest increment must be chosen by the driver.
A value of 0.0 shall indicate that there is no minimum resolution except that imposed by the resolution of the float data type.
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.FastReadout: Boolean
Added in version 2: For imaging mode support
Read/Write Enables the camera’s FastReadout mode if available, and gets the current state of FastReadout mode. See Notes.
- Returns:
True if the camera is in FastReadout mode, else False if it is in normal mode (in which
ReadoutModes
may be active).- Return type:
Boolean
Deprecation Notice
FastReadout
is an obsolete mechanic for controlling camera mode(s). TheReadoutMode
mechanic should be used henceforth.
- Raises:
PropertyNotImplementedException – If FastReadout is not supported (
CanFastReadout
is False)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Some older cameras have a single “fast mode” intended for use in focusing. When set to True, the camera will operate in Fast mode; when False, the camera will operate normally. This property, if implemented, must default to False.
This mode mechanic is deprecated, and is includeed only for older cameras and drivers. The
ReadoutMode
mechanic should be used henceforth.
- property Camera.FullWellCapacity: Float
- Returns:
The maximum number of photoelectrons that can be held by a single pixel in the camera’s current modes. See See Notes below and MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
- Return type:
Float
- Raises:
PropertyNotImplementedException – If this property is not available for the camera.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
At run-time, a change to
Binx
,BinY
,Gain
,Offset
, orReadoutMode
which results in this value changing must be reflected immediately in this property’s value. Similarly, if a change via the camera’sSetupDialog()
settings changes the value, this property must be updated immediately.See MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.Gain: Integer
Added in version 2: Member added.
Read/Write Gets or sets the current gain value or gains index per its current gain-setting operating mode (see description below)
- Returns:
The current gain value or gains index
- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Gain
is not supported at all ()neither Gains Index nor Gain Value mode is supported).InvalidValueException – If the supplied value is not valid
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
If the camera can support several different operating modes where gain and other parameters are different, it is better to use
ReadoutMode
andReadoutModes
to change all parameters in one go. If this approach is used, Gain and any other affected parameters must be kept in sync with operational values established by the readout mode.Gain Modes Description
The
Gain
property is used to adjust the gain setting of the camera and has two modes of operation:
Gains Index: The
Gain
property is the selected gain’s index within theGains
array of textual gain names.
The
Gains
property returns a 0-based array of string gain names which should describe available gain settings e.g. “ISO 200”, “ISO 1600”
GainMin
andGainMax
will throw aPropertyNotImplementedException
.Gain Value: The
Gain
property is a direct numeric representation of the camera’s gain.
In this mode the
GainMin
andGainMax
properties must return integers specifying the valid range for Gain.The
Gains
array property will throw aPropertyNotImplementedException
.A driver can support none, one or both gain modes depending on the camera’s capabilities. However, only one mode can be active at any one moment because both modes share the Gain property to return the gain value. Your application can determine which mode is operational by reading the
GainMin
,GainMax
property and thisGain
property. If a property can be read then its associated mode is active, if it throws aPropertyNotImplementedException
then the mode is not active.Note
If a driver supports both modes the astronomer must be able to select the required mode through the driver Setup dialogue.
During driver initialisation the driver must set Gain to a valid value.
- property Camera.GainMax: Integer
Added in version 2: Member added.
- Returns:
The maximum gain value that this camera supports in Gain Value mode (see Notes and
Gain
)- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Gain
is not supported at all or if the camera is operating in the Gains Index mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Gain Value mode
- When
Gain
is operating in Gain Value mode:
GainMax
must return the camera’s highest validGain
setting
GainMax
must be equal to or greater thanGainMin
The
Gains
property must throwPropertyNotImplementedException
Note
GainMin
andGainMax
act together; either both must return values, or both must throwPropertyNotImplementedException
.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.GainMin: Integer
Added in version 2: Member added.
- Returns:
The minimum gain value that this camera supports in Gain Value mode (see notes and
Gain
)- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Gain
is not supported at all or if the camera is operating in the Gains Index mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Gain Value mode
- When
Gain
is operating in Gain Value mode:
GainMin
must return the camera’s lowest validGain
setting
GainMin
must be equal to or less thanGainMax
The
Gains
property must throwPropertyNotImplementedException
Note
GainMin
andGainMax
act together; either both must return values, or both must throwPropertyNotImplementedException
.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.Gains: Array[String]
Added in version 2: Member added.
- Returns:
Array (0-based) of Gain names supported by the camera when in Gains Index mode (see Notes and
Gain
)- Return type:
Array of strings
- Raises:
PropertyNotImplementedException – If
Gain
is not supported at all or if the camera is operating in the Gain Value mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Gains Index mode
- When
Gain
is operating in the Gains Index mode:
The
Gains
property must return a 0-based array of available gain setting names.The
GainMax
andGainMin
properties must throwPropertyNotImplementedException
.Note
Typically the application software will display the returned gain names in a drop list, from which the astronomer can select the desired gain’s name. The application can then configure the selected gain by setting the camera’s
Gain
property to the array index of the selected gain name.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.HasShutter: Boolean
- Returns:
If True, indicates that the camera has a mechanical shutter, else False.
- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
.Note
If
HasShutter
is False, theStartExposure()
method must ignore theLight
parameter.
- property Camera.HeatSinkTemperature: Float
- Returns:
The current heat sink (aka “ambient”) temperature (deg C).
- Return type:
Float
- Raises:
PropertyNotImplementedException – If the camera has no cooler.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
- property Camera.ImageArray: Array (multi-dimensional see below)
- Returns:
Array containing the exposure pixel values in ADU. See notes for array dimensionality and row vs column ordering, and
SensorType
- Return type:
Integer ADU values
- Raises:
InvalidOperationException – If no image data is available (
ImageReady
is False)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
The array will have dimensions of
NumX
byNumY
as set at the timeStartExposure()
was called. Full color images will include a “plane” for each color, with the additional plane index following theX
andY
indices. See below for details.This is a synchronous call and clients should be prepared for it to take a long time to complete when large images are being transferred.
Drivers written in C++ must return the image as a SafeArray.
Developers of Alpaca camera devices are strongly advised to implement the ImageBytes mechanic, which is specified in the Alpaca API Reference, to ensure fast image transfer to the client.
Array shaping and ordering - Monochrome and Bayer
The returned two dimensional array that supports monochrome and Bayer matrix colour sensors is specified with width as its first dimension and height as its second, rightmost, dimension. From an infrastructure perspective, the .NET CLR and C like languages store arrays in memory using row major order, which means that the rightmost array index changes most rapidly.
For an array
Array[X, Y]
it is the Y index that changes most rapidly, leading to a memory layout that looks like this:![]()
On the other hand, the
ImageArray
property is specified to returnArray[NumX, NumY]
whereX
represents width (horizontal lines) andY
represents height (vertical columns). For theImageArray
array, the rightmost dimension is defined as the image height, hence, when stored in memory, the height index will change most rapidly. This means that, from an application perspective, values are held in memory in column major order![]()
despite being stored in row major order from an infrastructure perspective. We considered the application view to have primacy and thus consider the returned array to be column major in structure, regardless of the form in which it is stored in memory.
Bayer Matrix Color Images
In the following definitions,
R
= red,G
= green,B
= blue,C
= cyan,M
= magenta,Y
= yellow. The Bayer matrix is defined withX
increasing from left to right, andY
increasing from top to bottom. The pattern repeats everyN
xM
pixels for the entire pixel array, whereN
is the height of the Bayer matrix, andM
is the width.
SensοrType
RGGB
indicates the following matrix![]()
SensοrType
CMYG
indicates the following matrix![]()
SensοrType
CMYG2
indicates the following matrix![]()
SensοrType
LRGB
indicates the following matrix (Kodak TRUESENSE)![]()
The alignment of the array may be modified by
BayerOffsetX
andBayerOffsetY
. The offset is measured from the 0,0 position in the sensor array to the upper left corner of the Bayer matrix table. Please note that the Bayer offset values are not affected by subframe settings.For example CMYG2 sensor has a Bayer matrix offset as shown below,
BayerOffsetX
is 0 andBayerOffsetY
is 1![]()
Array Shaping and Ordering - Multi-Plane Color Images (non-Bayer)
Full color images contain multiple “planes”, each of which specifies the pixel data for a single color. In
ImageArray
the third or rightmost index selects the plane. For an RGB image the planes (in order) areR=0
,G=1
, andB=2
. For an LRGB image the planes areL=0
,R=1
,G=2
, andB=3
.
- property Camera.ImageArrayVariant: Array[COM-Variant]
This property is used only in Windows ASCOM/COM drivers. Alpaca drivers and stand-alone (Alpaca) cameras must raise
PropertyNotImplementedException
.
- Returns:
Array containing the exposure pixel values in ADU.
- Return type:
Windows COM Variant ADU values.
- Raises:
PropertyNotImplementedException – Unless the driver is for ASCOM/COM on Windows OS
InvalidOperationException – If no image data is available (
ImageReady
is False)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
This property is included here for completeness, however it is unique and useful only within Windows COM (C#, Visual Basic). For more information see the documentation for ASCOM libraries in the Windows Platform.
Note
This is a synchronous call and clients should be prepared for it to take a long time to complete when large images are being transferred.
Drivers written in C++ must return the image as a SafeArray.
See the description of
Camera.ImageArray
above for details.ImageArrayVariant
differs only in the binary form of the individual array elements (COM-Variant instead of Integer).
- property Camera.ImageReady: Boolean
- Returns:
True if the requested exposure has completed and
Camera.ImageArray
contains the image reeady to be reads via that property.- Return type:
Boolean
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
If
ImageReady
returns a valid False or True value, then the non-blocking process of acquiring an image is proceeding normally or has been successful.
ImageReady
will be False immediately upon return fromStartExposure()
. It will remain False until the exposure has been successfully completed and an image is ready for retrieval viaCamera.ImageArray
.
- property Camera.InterfaceVersion: Short
Added in version 2: Member added.
- Returns:
ASCOM Device interface definition version that this device supports. Should return 4 for this interface version.
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This is a single “short” integer indicating the version of this specific ASCOM universal interface definition. For ICameraV4, this must be 4. It should not to be confused with the
DriverVersion
property, which is the major.minor version of the driver for this device.Clients can detect legacy V1 drivers by trying to read this property. If the driver raises an error, it is a V1 driver. V1 did not specify this property. A driver may also return a value of 1.In other words, a raised error or a return value of 1 indicates that the driver is a V1 driver.
- property Camera.IsPulseGuiding: Boolean
- Returns:
Indicates that the camera is currently executing a
PulseGuide()
operation. This duplicates the function ofTelescope.IsPulseGuiding
, except for hardware “guider cables”. See What Does PulseGuide() Do? I’m Confused.- Return type:
Boolean
- Raises:
PropertyNotImplementedException – If the camera does not support pulse guiding (
CanPulseGuide
is False)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
If
IsPulseGuiding
returns a valid True or False value, then the process of pulse-guiding is proceeding normally or has completed successfully, respectively.
IsPulseGuiding
will be True immediately upon return fromPulseGuide()
. It will remain True until the requested pulse-guide interval has elapsed, and the pulse-guiding operation has been successfully completed. IfPulseGuide()
returns withIsPulseGuiding = False
, then you can assume that the operation succeeded with a very short pulse-guide interval.This duplicates the function of
Telescope.IsPulseGuiding
except using hardware “guider cables”. See What Does PulseGuide() Do? I’m Confused.
- property Camera.LastExposureDuration: Float
- Returns:
The actual duration of the last exposure in seconds
- Return type:
Float
- Raises:
PropertyNotImplementedException – If the camera doesn’t support this feature
InvalidOperationException – If no image has yet been successfully acquired.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
This may differ from the exposure duration requested due to shutter latency, camera timing precision, etc.
- property Camera.LastExposureStartTime: String
Changed in version 2: (Platform 6.3) Clarified that the value must be in UTC.
- Returns:
UTC start time of the last exposure in FITS standard format ISO-8601, UTC.
- Return type:
String
- Raises:
PropertyNotImplementedException – If the camera doesn’t support this feature
InvalidOperationException – If no image has yet been successfully acquired.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Reports the actual exposure UTC start date/time in the FITS-standard / ISO-8601
CCYY-MM-DDThh:mm:ss[.sss…]
format.This must be the actual time at which the camera started to collect photons. This may differ from the time at which
StartExposure()
was called, due to shutter latency, camera timing precision, etc.
- property Camera.MaxADU: Integer
- Returns:
The maximum possible ADU value that the camera can produce in its current mode. See MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented; must not throw a
PropertyNotImplementedException
.See MaxADU, ElectronsPerADU, and FullWellCapacity in the Camera Interface.
- property Camera.MaxBinX: Integer
- Returns:
The maximum supported X binning value of the camera in its current modes.
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
If
CanAsymmetricBin
= False, returns the maximum allowed binning factor. IfCanAsymmetricBin
= True, returns the maximum allowed binning factor for the X axis.
- property Camera.MaxBinY: Integer
- Returns:
The maximum supported Y binning value of the camera in its current modes.
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
If
CanAsymmetricBin
= False, returns the same value asMaxBinX
. IfCanAsymmetricBin
= True, returns the maximum allowed binning factor for the Y axis.
- property Camera.Name: String
Added in version 2: Member added.
- Returns:
The short name of the driver, for display purposes.
- Return type:
string
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
The
Description
property is used to return info about the device rather than the driver.
- property Camera.NumX: Integer
Read/Write Set or return the current (sub)frame width. Combined with
StartX
> 0 to specify a subframe in the X dimension.
- Returns:
The current X size of the image in binned pixels
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
If binning is active, value is in binned pixels.
Immediately after completing an exposure,
NumX
will be the X dimension ofImageArray
.Must default to
CameraXSize
withStartX
= 0 andBinX
= 1 (full frame unbinned) on initial camera startup.Warning
No error check is performed for incompatibilty with binning and subframe settings and capabilities when this property is changed. If these values are incompatible, the driver must throw an InvalidValueException from a subsequent call to
StartExposure()
.
- property Camera.NumY: Integer
Read/Write Set or return the current (sub)frame width. Combined with
StartY
> 0 to specify a subframe in the Y dimension.
- Returns:
The current Y size of the image in binned pixels
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
If binning is active, value is in binned pixels.
Immediately after completing an exposure, ‘’NumY’’ will be the Y dimension of
ImageArray
.Must default to
CameraYSize
withStartY
= 0 andBinY
= 1 (full frame unbinned) on initial camera startup.Warning
No error check is performed for incompatibilty with binning and subframe settings and capabilities. If these values are incompatible, the driver must throw an InvalidValueException from a subsequent call to
StartExposure()
.
- property Camera.Offset: Integer
Added in version 3: Member added.
Read/Write Gets or sets the current offset value or offsets index per its current offset-setting operating mode (see description below)
- Returns:
The current offset value or Offsets index
- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Offset
is not supported at all (neither Offsets Index nor Offset Value mode is supported.)InvalidValueException – If the supplied value is not valid
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Important
If the camera can support several different operating modes where Offset and other parameters are different, it is better to use
ReadoutMode
andReadoutModes
to change all parameters in one go. If this approach is used, Gain and any other affected parameters must be kept in sync with operational values established by the readout mode.Offset Modes Description
The
Offset
property is used to adjust the offset setting of the camera and has two modes of operation:
Offsets Index: The
Offset
property is the selected offset’s index within theOffsets
array of textual offset names.
The
Offsets
property returns a 0-based array of string offset names which should describe available offset settings.
OffsetMin
andOffsetMax
will throw aPropertyNotImplementedException
.Offset Value: The
Offset
property is a direct numeric representation of the camera’s offset.
OffsetMin
andOffsetMax
properties must return integers specifying the valid range for Offset value.The
Offsets
array property will throw aPropertyNotImplementedException
.A driver can support none, one or both offset modes depending on the camera’s capabilities. However, only one mode can be active at any one moment because both modes share the Offset property to return the offset value. Your application can determine which mode is operational by reading the
OffsetMin
,OffsetMax
property and thisOffset
property. If a property can be read then its associated mode is active, if it throws aPropertyNotImplementedException
then the mode is not active.Note
If a driver supports both modes the astronomer must be able to select the required mode through the driver Setup dialogue.
During driver initialisation the driver must set Offset to a valid value.
- property Camera.OffsetMax: Integer
Added in version 3: Member added.
- Returns:
The maximum offset value that this camera supports in Offset Value mode (see notes and
Offset
)- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Offset
is not supported at all or if the camera is operating in the Offsets Index mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Offsets Value mode
- When
Offset
is operating in Offsets-Value mode:
OffsetMax
must return the camera’s highest validOffset
setting
OffsetMax
must be equal to or greater thanOffsetMin
The
Offsets
property must throwPropertyNotImplementedException
Note
OffsetMin
andOffsetMax
act together and that either both must return values, or both must throwPropertyNotImplementedException
.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.OffsetMin: Integer
Added in version 3: Member added.
- Returns:
Minimum offset value that this camera supports in Offset Value mode (see notes and
Offset
)- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
Offset
is not supported at all or if the camera is operating in the Offsets Index mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Offset Value mode
- When
Offset
is operating in Offset Value mode:
OffsetMin
must return the camera’s lowest validOffset
setting
OffsetMin
must be equal to or less thanOffsetMax
The
Offsets
property must throwPropertyNotImplementedException
Note
OffsetMin
andOffsetMax
act together and that either both must return values, or both must throwPropertyNotImplementedException
.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.Offsets: Array[String]
Added in version 3: Member added.
- Returns:
Array (0-based) of Offset names supported by the camera when in Gains Index mode (see Notes and
Offset
)- Return type:
Array of strings
- Raises:
PropertyNotImplementedException – If
Offset
is not supported at all or if the camera is operating in the Offsets Value mode.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
For Offsets-Index mode
- When
Offset
is operating in the Offsets Index mode:
The
Offsets
property returns a 0-based array of available offset setting names.The
OffsetMax
andOffsetMin
properties will throwPropertyNotImplementedException
.Note
Typically the application software will display the returned offset names in a drop list, from which the astronomer can select the desired offset’s name. The application can then configure the selected offset by setting the camera’s
Offset
property to the array index of the selected offset name.It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.PercentCompleted: Integer
Added in version 2: Member added.
- Returns:
The percentage completeness (0% - 100%) of the current exposure in progress
- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
PercentCompleted
is not supportedInvalidOperationException – Thrown when
CameraState
is inappropriate for readingPercentCompleted
(see Note below)NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
If valid, returns an integer between 0 and 100, where 0 indicates 0% progress (function just started) and 100 indicates 100% progress (i.e. completion).
At the discretion of the device,
PercentCompleted
may optionally be valid whenCameraState
is in any or all of the following states:
cameraExposing
cameraWaiting
cameraReading
cameraDownload
In all other states an InvalidOperationException must be raised.
Typically the application user interface will show a progress bar based on the
PercentCompleted
value.
- property Camera.PixelSizeX: Float
- Returns:
The physical width (microns) of the camera sensor elements.
- Return type:
Float
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
Value must be greater than 0 microns
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.PixelSizeY: Float
- Returns:
The physical height (microns) of the camera sensor elements.
- Return type:
Float
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
Value must be greater than 0 microns
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.ReadoutMode: Integer
Added in version 2: Member added.
ReadoutModes are provided so the camera can offer a simple way to select combinations of gain, offset, analog-to-digital converter bit depth, and other operational parameters. Often the specific combinations of these parameters is chosen by the camera maker to support a specific usage of the camera. Each combination is given a name for
ReadoutModes
, for example “High Gain”, “Low Gain”, “Fast”, etc. The index in this array is written toReadoutMode
to select the mode to use. The nameReadoutMode
is historical and should be construed to mean simply “mode”. See the Notes below.Read/Write Gets or sets the index of the current camera readout mode in
ReadoutModes
array.
- Returns:
The index in
ReadoutModes
array of the currently active camera readout mode.- Return type:
Integer
- Raises:
PropertyNotImplementedException – If
CanFastReadout
is True.InvalidValueException – If the supplied value is not valid (index out of range)
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented if
CanFastReadout
is false, must throw aPropertyNotImplementedException
ifCanFastReadout
is True. Please note that theFastReadout
mechanic is now deprecated and should not be used in any new cameras.Note
ReadoutMode
is an index into the arrayReadoutModes
, and selects the desired readout mode for the camera. Defaults to 0 if not set.It is strongly recommended, but not required, that cameras make the 0-index mode suitable for standard imaging operations, since it is the default.
The name
ReadoutMode
is historical, meaning a mode of reading the pixel data from the sensor. We can’t change the name, but with the advent of newer CMOS cameras, multiple combinations of gain, offset, analog-to-digital converter bit depth, and other operational parameters exist. Thus this property has been generalized to cover these combinations as modes.Important
The
ReadoutMode
may interact withGain
and/orOffset
of the camera; if so, the camera must ensure that the two properties do not conflict if both are used.
- property Camera.ReadoutModes: Array[String]
Added in version 2: Member added.
ReadoutModes are provided so the camera can offer a simple way to select combinations of gain, offset, analog-to-digital converter bit depth, and other operational parameters. Often the specific combinations of these parameters is chosen by the camera maker to support a specific usage of the camera. Each combination is given a name for
ReadoutModes
, for example “High Gain”, “Low Gain”, “Fast”, etc. This array contains these names.
- Returns:
Array (0-based) of ReadoutMode names supported by the camera (see notes and
ReadoutMode
)- Return type:
Array of Strings (0-based)
- Raises:
PropertyNotImplementedException – If
CanFastReadout
is true.NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented if
CanFastReadout
is False, must throw aPropertyNotImplementedException
ifCanFastReadout
is True.Note
Readout modes may be available from the camera, and if so then
CanFastReadout
must be False. The two camera mode selection schemes are mutually exclusive.This property provides an array of strings, each of which is the name of an available readout mode of the camera. At least one string will be present in the list. Your application may use this list to present to the user a drop-list of mode names. The choice of available modes made available is entirely at the discretion of the camera.
The default readout mode (on startup) must be
ReadoutModes[0]
. The device should reserve this for “standard” imaging operations since it is the power-up default.To select a mode, set
ReadoutMode
to the index of the desired mode inReadoutModes
. The index is zero-based.Applications should only read this property while a connection to the camera is actually established. Drivers often support multiple cameras with different capabilities, which are not known until the connection is made. If the available readout modes are not known because no connection has been established, this property shall throw A
NotConnectedException
.
- property Camera.SensorName: String
Added in version 2: Member added.
- Returns:
The name of the sensor used within the camera. See Notes
- Return type:
String
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Mandatory, must return an empty string if the sensor’s name is not known.
Note
Returns the name (data sheet part number) of the sensor, e.g. ICX285. The format is to be exactly as shown on manufacturer data sheet, subject to the following rules:
All letters shall be upper-case.
Spaces shall not be included.
Any extra suffixes that define region codes, package types, temperature range, coatings, grading, colour/monochrome, etc. shall not be included.
For colour sensors, if a suffix differentiates different Bayer matrix encodings, it shall be included.
The property must return an empty string if the sensor name is not known
Examples:
ICX285AL-F shall be reported as ICX285
KAF-8300-AXC-CD-AA shall be reported as KAF-8300
The most common usage of this property is to select approximate colour balance parameters to be applied to the Bayer matrix of one-shot colour sensors. Application authors should assume that an appropriate IR cut-off filter is in place for colour sensors.
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.SensorType: enum SensorType
Added in version 2: Member added.
- Returns:
The type of sensor within the camera
- Return type:
enum
SensοrType
- Raises:
PropertyNotImplementedException – If the sensor type is unknown or the device just doesn’t support this.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Note
See
ImageArray
for details on array shaping for various sensor types.Please note that additional type values may be defined in future updates of the standard, as new Bayer matrices may be created by sensor manufacturers in the future. If this occurs, then a new enumeration value shall be defined. The pre-existing enumeration values shall not change.
It is recommended that this property be retrieved only after a connection is established with the camera hardware, to ensure that the driver is aware of the capabilities of the specific camera model.
- property Camera.SetCCDTemperature: Float
Read/Write Get or set the camera’s cooler setpoint (degrees Celsius).
- Returns:
The camera’s cooler temperature setpoint (degrees Celsius)
- Return type:
Float
- Raises:
InvalidValueException – If an attempt is made to set a value that is outside the camera’s valid temperature setpoint range.
PropertyNotImplementedException – If
CanSetCCDTemperature
is FalseNotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Setting this property must be short-lived because it is only expected to establish the new setpoint and must not block until the setpoint has been reached or otherwise wait for any actual temperature changes.
Note
This method should be short-lived because it is only expected to ‘set’ the new set point and must not block until the set point has been reached.
The driver must throw an
InvalidValueException
if an attempt is made to setSetCCDTemperatureoutside
the valid range for the camera. As an assistance to driver authors, to protect equipment and prevent harm to individuals, Conform will report an issue if it is possible to setSetCCDTemperature
below -280C or above +100C.Camera hardware and/or driver should perform cooler ramping to prevent thermal shock and potential damage to the CCD array or cooler stack, however a property-write to
SetCCDTemperature
must not wait for any temperature changes.
- property Camera.StartX: Integer
Read/Write Set or return the current X-axis start position in binned pixels.
Subframe Feature: To set the camera to use a subframe on the sensor, first set the binning, then set
StartX
,NumX
,StartY
, andNumY
to establish the binned area on the sensor to use for subsequent exposures. Each time an exposure completes,NumX
andNumY
will describe the dimensions ofImageArray
.
- Returns:
The current X-axis start position on the sensor in binned pixels.
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
No error check is performed for incompatibilty with binning values and restrictions If these values are incompatible, you will receive an
InvalidValueException
from a subsequent call toStartExposure()
.Note
If binning is active, value is in binned pixels.
Defaults to 0 with
NumX
=CameraXSize
(full frame) on initial camera startup.
- property Camera.StartY: Integer
Read/Write Set or return the current Y-axis start position in binned pixels.
Subframe Feature: To set the camera to use a subframe on the sensor, first set the binning, then set
StartX
,NumX
,StartY
, andNumY
to establish the binned area on the sensor to use for subsequent exposures. Each time an exposure completes,NumX
andNumY
will describe the dimensions ofImageArray
.
- Returns:
The current Y-axis start position on the sensor in binned pixels.
- Return type:
Integer
- Raises:
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
No error check is performed for incompatibilty with binning values and restrictions If these values are incompatible, you will receive an
InvalidValueException
from a subsequent call toStartExposure()
.Note
If binning is active, value is in binned pixels.
Defaults to 0 with
NumY
=CameraYSize
(full frame) on initial camera startup.
- property Camera.SubExposureDuration: Float
Added in version 3: Member added.
(Read/Write) Sets the camera’s sub-exposure interval (seconds)
On-Board Subexposure Feature: This feature was added to Camera V3 to support CMOS cameras which can provide high dynamic range images via stacking of short duration images. It allows applications to avoid downloading and storing large image frames only to stack them on the client system resulting in a single image. Instead the camera may stack the short-duration images on-board and return the stacked result in
ImageArray
, saving both storage on the client system and transfer time of the subframes.
- Returns:
The camera’s sub-exposure interval (seconds)
- Return type:
Float
- Raises:
PropertyNotImplementedException – If the camera does not support on-board stacking with user-supplied sub-exposure interval.
InvalidValueException – The supplied duration is not valid (negative or zero). See notes for other conditiopns.
NotConnectedException – If the device is not connected
DriverException – An 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. Includes communication errors.
Attention
This is an optional property and can throw a
PropertyNotImplementedException
.Note
This property provides for a camera to divide an exposure interval (as given to
StartExposure()
) into separate sub-exposures, then stack them internally, returning the final exposure to the client. This is often required with CMOS sensors to get the best dynamic range.The
SubExposureDuration
must be checked against theDuration
paremeter at the time of a call toStartExposure()
. If the value makes no sense (longer thanDuration
or possibly an odd fraction ofDuration
), thenStartExposure()
must throwInvalidValueException
. See notes forStartExposure()
.
- property Camera.SupportedActions: COM: ArrayList of String elements, Alpaca: Array of String
Added in version 2: Recommended over (now) deprecated
CommandBlind()
,CommandBool()
, andCommandString()
as more flexible extension mechanic.Returns the list of custom action names supported by this driver, to be used with
Action()
,
- Returns:
The list of custom action names supported by this driver
- Return type:
COM: ArrayList of String elements, Alpaca: Array of String
- Raises:
DriverException – An 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. Includes communication errors.
Attention
Must be implemented, must not throw a
PropertyNotImplementedException
Note
This method, combined with
Action()
, is the supported mechanic for adding non-standard functionality.SupportedActions is a “discovery” mechanism that enables clients to know which Actions a device supports without having to exercise the Actions themselves. This mechanism is necessary because there could be people / equipment safety issues if actions are called unexpectedly or out of a defined process sequence. It follows from this that SupportedActions must return names that match the spelling of custom action names exactly, without additional descriptive text. However, returned names may use any casing because the
ActionName
parameter ofAction()
is case insensitive.
Enumerated Constants
- Camera.CameraStates: Integer
Current condition of the Camera. See State Transition Diagram for Camera.CameraState. Valid values are as follows:
Symbol
Val
Description
cameraIdle
0
At idle state, available to start exposure
cameraWaiting
1
Exposure started but waiting (for shutter, trigger, filter wheel, etc.)
cameraExposing
2
Exposure currently in progress
cameraReading
3
Sensor array is being read out (digitized)
cameraDownloading
4
Downloading data to host
cameraError
5
Camera error condition serious enough to prevent further operations
- Camera.GuideDirections: Integer
The direction in which the guide-rate motion is to be made. See What Does PulseGuide() Do? I’m Confused.
Symbol
Val
Description
guideNorth
0
North (+ declination)
guideSouth
1
South (- declination)
guideEast
2
East (+ right ascension)
guideWest
3
West (- right ascension)
- Camera.SensοrType: Integer
Type of sensor in the Camera.
Symbol
Val
Description
Monochrome
0
Single-plane monochrome
Color
1
Multiple-plane Color
RGGB
2
Single-plane Bayer matrix RGGB
CMYG
3
Single-plane Bayer matrix CMYG
CMYG2
4
Single-plane Bayer matrix CMYG2
LRGB
5
Single-plane Bayer matrix LRGB