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

#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
 
virtual int SetSpotInterval (double pulseInterval_us)=0
 
virtual int SetPosition (double x, double y)=0
 
virtual int GetPosition (double &x, double &y)=0
 
virtual int SetIlluminationState (bool on)=0
 
virtual double GetXRange ()=0
 
virtual double GetXMinimum ()=0
 
virtual double GetYRange ()=0
 
virtual double GetYMinimum ()=0
 
virtual int AddPolygonVertex (int polygonIndex, double x, double y)=0
 
virtual int DeletePolygons ()=0
 
virtual int RunSequence ()=0
 
virtual int LoadPolygons ()=0
 
virtual int SetPolygonRepetitions (int repetitions)=0
 
virtual int RunPolygons ()=0
 
virtual int StopSequence ()=0
 
virtual int GetChannel (char *channelName)=0
 
- 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
 
virtual int GetPropertySequenceMaxLength (const char *propertyName, long &nrEvents) const =0
 
virtual int StartPropertySequence (const char *propertyName)=0
 
virtual int StopPropertySequence (const char *propertyName)=0
 
virtual int ClearPropertySequence (const char *propertyName)=0
 
virtual int AddToPropertySequence (const char *propertyName, const char *value)=0
 
virtual int SendPropertySequence (const char *propertyName)=0
 
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
 
 MM_DEPRECATED (virtual HDEVMODULE GetModuleHandle() const)=0
 
 MM_DEPRECATED (virtual void SetModuleHandle(HDEVMODULE hLibraryHandle))=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
 
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

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

Deletes all polygons previously stored in the device adapater.

Returns
errorcode (DEVICE_OK if no error)

◆ GetChannel()

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

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

Returns 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)

◆ GetXMinimum()

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

Minimum X value for the device in native units Must be implemented if it is not 0.0

◆ GetXRange()

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

X range of the device in native units.

◆ GetYMinimum()

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

Minimum Y value for the device in native units. Must be implemented if it is not 0.0.

◆ GetYRange()

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

Y range of the device in native units.

◆ LoadPolygons()

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

Transfers 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

Moves the galvo devices to the requested position, activates the light source, waits for the specified amount of time (in microseconds), and deactivates the light source.

Returns
errorcode (DEVICE_OK if no error)

◆ RunPolygons()

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

Displays 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

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

Switches 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

Sets 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

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

Returns
errorcode (DEVICE_OK if no error)

◆ SetSpotInterval()

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

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

Stops 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: