MMDevice 70
Public Member Functions | Static Public Attributes | List of all members
MM::Galvo Class Referenceabstract

Galvo API. More...

#include <MMDevice.h>

Inheritance diagram for MM::Galvo:
MM::Device CDeviceBase< MM::Galvo, U > CGalvoBase< U >

Public Member Functions

virtual DeviceType GetType () const
 
virtual int PointAndFire (double x, double y, double time_us)=0
 Move the galvo devices to the requested position, activate the light source, wait for the specified amount of time (in microseconds), and deactivate the light source.
 
virtual int SetSpotInterval (double pulseInterval_us)=0
 Set the spot interval time.
 
virtual int SetPosition (double x, double y)=0
 Set the position of the two axes of the Galvo device in native unit (usually through a voltage that controls the galvo position).
 
virtual int GetPosition (double &x, double &y)=0
 Return the current position of the two axes (usually the last position that was set, although this may be different for Galvo devices that also can be controlled through another source).
 
virtual int SetIlluminationState (bool on)=0
 Switch the light source under control of this device on or off.
 
virtual double GetXRange ()=0
 Return the X range of the device in native units.
 
virtual double GetXMinimum ()=0
 Return the minimum X value for the device in native units.
 
virtual double GetYRange ()=0
 Return the Y range of the device in native units.
 
virtual double GetYMinimum ()=0
 Return the minimum Y value for the device in native units.
 
virtual int AddPolygonVertex (int polygonIndex, double x, double y)=0
 Add a vertex point to a polygon.
 
virtual int DeletePolygons ()=0
 Delete all polygons previously stored in the device adapter.
 
virtual int RunSequence ()=0
 Run a TTL-triggered polygon sequence.
 
virtual int LoadPolygons ()=0
 Transfer the polygons from the device adapter memory to the Galvo controller.
 
virtual int SetPolygonRepetitions (int repetitions)=0
 Set the number of times the polygons should be displayed in the RunPolygons function.
 
virtual int RunPolygons ()=0
 Display each pre-loaded polygon in sequence, each illuminated for pulseinterval_us micro-seconds.
 
virtual int StopSequence ()=0
 Stop the TTL triggered transitions of drawing polygons started in RunSequence().
 
virtual int GetChannel (char *channelName)=0
 TODO-BRIEF.
 
- Public Member Functions inherited from MM::Device
virtual unsigned GetNumberOfProperties () const =0
 
virtual int GetProperty (const char *name, char *value) const =0
 
virtual int SetProperty (const char *name, const char *value)=0
 
virtual bool HasProperty (const char *name) const =0
 
virtual bool GetPropertyName (unsigned idx, char *name) const =0
 
virtual int GetPropertyReadOnly (const char *name, bool &readOnly) const =0
 
virtual int GetPropertyInitStatus (const char *name, bool &preInit) const =0
 
virtual int HasPropertyLimits (const char *name, bool &hasLimits) const =0
 
virtual int GetPropertyLowerLimit (const char *name, double &lowLimit) const =0
 
virtual int GetPropertyUpperLimit (const char *name, double &hiLimit) const =0
 
virtual int GetPropertyType (const char *name, MM::PropertyType &pt) const =0
 
virtual unsigned GetNumberOfPropertyValues (const char *propertyName) const =0
 
virtual bool GetPropertyValueAt (const char *propertyName, unsigned index, char *value) const =0
 
virtual int IsPropertySequenceable (const char *name, bool &isSequenceable) const =0
 Check whether the given property can be used with sequences.
 
virtual int GetPropertySequenceMaxLength (const char *propertyName, long &nrEvents) const =0
 Return the largest sequence that can be stored in the device.
 
virtual int StartPropertySequence (const char *propertyName)=0
 Start execution of the sequence.
 
virtual int StopPropertySequence (const char *propertyName)=0
 Stop execution of the sequence.
 
virtual int ClearPropertySequence (const char *propertyName)=0
 Remove previously added sequence.
 
virtual int AddToPropertySequence (const char *propertyName, const char *value)=0
 Add one value to the sequence.
 
virtual int SendPropertySequence (const char *propertyName)=0
 Signal that we are done sending sequence values so that the adapter can send the whole sequence to the device.
 
virtual bool GetErrorText (int errorCode, char *errMessage) const =0
 
virtual bool Busy ()=0
 
virtual double GetDelayMs () const =0
 
virtual void SetDelayMs (double delay)=0
 
virtual bool UsesDelay ()=0
 
virtual void SetLabel (const char *label)=0
 
virtual void GetLabel (char *name) const =0
 
virtual void SetModuleName (const char *moduleName)=0
 
virtual void GetModuleName (char *moduleName) const =0
 
virtual void SetDescription (const char *description)=0
 
virtual void GetDescription (char *description) const =0
 
virtual int Initialize ()=0
 
virtual int Shutdown ()=0
 Shut down (unload) the device.
 
virtual void GetName (char *name) const =0
 
virtual void SetCallback (Core *callback)=0
 
virtual bool SupportsDeviceDetection (void)=0
 
virtual MM::DeviceDetectionStatus DetectDevice (void)=0
 
virtual void SetParentID (const char *parentId)=0
 
virtual void GetParentID (char *parentID) const =0
 

Static Public Attributes

static const DeviceType Type = GalvoDevice
 

Detailed Description

Galvo API.

A Galvo in Micro-Manager is a two-axis (conveniently labeled x and y) that can illuminate a sample in the microscope. It therefore also has the capability to switch a light source on and off (note that this functionality can be offloaded to a shutter device that can be obtained through a callback). Galvos can illuminate a point, or possibly be directed to illuminate a polygon by scanning the two axis and controlling the light source so that only the area with the polygon is illuminated. Currently known implementations are Utilities-DAGalvo (which uses two DAs to control a Galvo), Democamera-Galvo, ASITiger-ASIScanner, and Rapp. There is no integration with a detector as would be needed for a confocal microscope, and there is also no support for waveforms.

Member Function Documentation

◆ AddPolygonVertex()

virtual int MM::Galvo::AddPolygonVertex ( int  polygonIndex,
double  x,
double  y 
)
pure virtual

Add a vertex point to a polygon.

A galvo device in principle can draw arbitrary polygons. Polygons are added added here point by point. There is nothing in the API that prevents adding polygons in random order, but most implementations so far do not deal with that well (i.e. expect polygons to be added in incremental order). Vertex points are added in order and can not be modified through the API after adding (only way is to delete all polygons and start anew).

Returns
errorcode (DEVICE_OK if no error)

◆ DeletePolygons()

virtual int MM::Galvo::DeletePolygons ( )
pure virtual

Delete all polygons previously stored in the device adapter.

Returns
errorcode (DEVICE_OK if no error)

◆ GetChannel()

virtual int MM::Galvo::GetChannel ( char *  channelName)
pure virtual

TODO-BRIEF.

It is completely unclear what this function is supposed to do. Deprecate?

Returns
errorcode (DEVICE_OK if no error)

◆ GetPosition()

virtual int MM::Galvo::GetPosition ( double &  x,
double &  y 
)
pure virtual

Return the current position of the two axes (usually the last position that was set, although this may be different for Galvo devices that also can be controlled through another source).

Returns
errorcode (DEVICE_OK if no error)

◆ GetType()

virtual DeviceType MM::Galvo::GetType ( ) const
inlinevirtual

Implements MM::Device.

◆ GetXMinimum()

virtual double MM::Galvo::GetXMinimum ( )
pure virtual

Return the minimum X value for the device in native units.

Must be implemented if it is not 0.0.

◆ GetYMinimum()

virtual double MM::Galvo::GetYMinimum ( )
pure virtual

Return the minimum Y value for the device in native units.

Must be implemented if it is not 0.0.

◆ LoadPolygons()

virtual int MM::Galvo::LoadPolygons ( )
pure virtual

Transfer the polygons from the device adapter memory to the Galvo controller.

Should be called before RunPolygons() or RunSequence(). This is mainly an optimization so that the device adapter does not need to transfer each vertex individually. Some Galvo device adapters will do nothing in this function.

Returns
errorcode (DEVICE_OK if no error)

◆ PointAndFire()

virtual int MM::Galvo::PointAndFire ( double  x,
double  y,
double  time_us 
)
pure virtual

Move the galvo devices to the requested position, activate the light source, wait for the specified amount of time (in microseconds), and deactivate the light source.

Returns
errorcode (DEVICE_OK if no error)

◆ RunPolygons()

virtual int MM::Galvo::RunPolygons ( )
pure virtual

Display each pre-loaded polygon in sequence, each illuminated for pulseinterval_us micro-seconds.

Returns
errorcode (DEVICE_OK if no error)

◆ RunSequence()

virtual int MM::Galvo::RunSequence ( )
pure virtual

Run a TTL-triggered polygon sequence.

Presumably the idea of this function is to have the Galvo draw the each polygon in the pre-loaded sequence after its controller receives a TTL trigger. This is not likely to be supported by all Galvo devices. There currently is no API method to query whether Sequences are supported. When the number of TTLs exceeds the number of polygons, the desired behavior is to repeat the sequence from the beginning.

Returns
errorcode (DEVICE_OK if no error)

◆ SetIlluminationState()

virtual int MM::Galvo::SetIlluminationState ( bool  on)
pure virtual

Switch the light source under control of this device on or off.

If light control through a Shutter device is desired, a property should be added that can be set to the name of the lightsource.

Returns
errorcode (DEVICE_OK if no error)

◆ SetPolygonRepetitions()

virtual int MM::Galvo::SetPolygonRepetitions ( int  repetitions)
pure virtual

Set the number of times the polygons should be displayed in the RunPolygons function.

Returns
errorcode (DEVICE_OK if no error)

◆ SetPosition()

virtual int MM::Galvo::SetPosition ( double  x,
double  y 
)
pure virtual

Set the position of the two axes of the Galvo device in native unit (usually through a voltage that controls the galvo position).

Returns
errorcode (DEVICE_OK if no error)

◆ SetSpotInterval()

virtual int MM::Galvo::SetSpotInterval ( double  pulseInterval_us)
pure virtual

Set the spot interval time.

This function seems to be misnamed. Its name suggest that it is the interval between illuminating two consecutive spots, but in practice it is used to set the time a single spot is illuminated (and the time to move between two spots is usually extremely short).

Returns
errorcode (DEVICE_OK if no error)

◆ StopSequence()

virtual int MM::Galvo::StopSequence ( )
pure virtual

Stop the TTL triggered transitions of drawing polygons started in RunSequence().

Returns
errorcode (DEVICE_OK if no error)

The documentation for this class was generated from the following files: