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

Spatial Light Modulator (SLM) API. More...

#include <MMDevice.h>

Inheritance diagram for MM::SLM:
MM::Device CDeviceBase< MM::SLM, U > CSLMBase< U >

Public Member Functions

virtual DeviceType GetType () const
 
virtual int SetImage (unsigned char *pixels)=0
 Load the image into the SLM device adapter.
 
virtual int SetImage (unsigned int *pixels)=0
 Load a 32-bit image into the SLM device adapter.
 
virtual int DisplayImage ()=0
 Command the SLM to display the loaded image.
 
virtual int SetPixelsTo (unsigned char intensity)=0
 Command the SLM to display one 8-bit intensity.
 
virtual int SetPixelsTo (unsigned char red, unsigned char green, unsigned char blue)=0
 Command the SLM to display one 32-bit color.
 
virtual int SetExposure (double interval_ms)=0
 Command the SLM to turn off after a specified interval.
 
virtual double GetExposure ()=0
 Get the exposure interval of an SLM.
 
virtual unsigned GetWidth ()=0
 Get the SLM width in pixels.
 
virtual unsigned GetHeight ()=0
 Get the SLM height in pixels.
 
virtual unsigned GetNumberOfComponents ()=0
 Get the SLM number of components (colors).
 
virtual unsigned GetBytesPerPixel ()=0
 Get the SLM number of bytes per pixel.
 
virtual int IsSLMSequenceable (bool &isSequenceable) const =0
 Indicate whether or not this SLM device accepts sequences.
 
virtual int GetSLMSequenceMaxLength (long &nrEvents) const =0
 Return the maximum length of a sequence that the hardware can store.
 
virtual int StartSLMSequence ()=0
 Start running a sequence (i.e., start switching between images sent previously, triggered by a TTL or internal clock).
 
virtual int StopSLMSequence ()=0
 Stop running the sequence.
 
virtual int ClearSLMSequence ()=0
 Clear the SLM sequence from the device and the adapter.
 
virtual int AddToSLMSequence (const unsigned char *const pixels)=0
 Add a new 8-bit projection image to the sequence.
 
virtual int AddToSLMSequence (const unsigned int *const pixels)=0
 Add a new 32-bit (RGB) projection image to the sequence.
 
virtual int SendSLMSequence ()=0
 Send the complete sequence to the device.
 
- 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 = SLMDevice
 

Detailed Description

Spatial Light Modulator (SLM) API.

An SLM is a device that can display images. It is expected to represent a rectangular grid (i.e. it has width and height) of pixels that can be either 8 bit or 32 bit. Illumination (light source on or off) is logically independent of displaying the image. Likely the most widely used implementation is the GenericSLM.

Member Function Documentation

◆ AddToSLMSequence() [1/2]

virtual int MM::SLM::AddToSLMSequence ( const unsigned char *const  pixels)
pure virtual

Add a new 8-bit projection image to the sequence.

The image can either be added to a representation of the sequence in the adapter, or it can be directly written to the device.

Parameters
pixelsAn array of 8-bit pixels whose length matches that expected by the SLM.
Returns
errorcode (DEVICE_OK if no error)

◆ AddToSLMSequence() [2/2]

virtual int MM::SLM::AddToSLMSequence ( const unsigned int *const  pixels)
pure virtual

Add a new 32-bit (RGB) projection image to the sequence.

The image can either be added to a representation of the sequence in the adapter, or it can be directly written to the device.

Parameters
pixelsAn array of 32-bit RGB pixels whose length matches that expected by the SLM.
Returns
errorcode (DEVICE_OK if no error)

◆ ClearSLMSequence()

virtual int MM::SLM::ClearSLMSequence ( )
pure virtual

Clear the SLM sequence from the device and the adapter.

If this function is not called in between running two sequences, it is expected that the same sequence will run twice. To upload a new sequence, first call this function, then call AddToSLMSequence(image) as often as needed.

Returns
errorcode (DEVICE_OK if no error)

◆ GetSLMSequenceMaxLength()

virtual int MM::SLM::GetSLMSequenceMaxLength ( long &  nrEvents) const
pure virtual

Return the maximum length of a sequence that the hardware can store.

Parameters
nrEventsmax length of sequence
Returns
errorcode (DEVICE_OK if no error)

◆ GetType()

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

Implements MM::Device.

◆ IsSLMSequenceable()

virtual int MM::SLM::IsSLMSequenceable ( bool &  isSequenceable) const
pure virtual

Indicate whether or not this SLM device accepts sequences.

If the device is sequenceable, it is usually best to add a property through which the user can set "isSequenceable", since only the user knows whether the device is actually connected to a trigger source. If IsSLMSequenceable returns true, the device adapter must also implement the sequencing functions for the SLM.

Parameters
isSequenceablesignals whether other sequence functions will work
Returns
errorcode (DEVICE_OK if no error)

◆ SendSLMSequence()

virtual int MM::SLM::SendSLMSequence ( )
pure virtual

Send the complete sequence to the device.

If the individual images were already sent to the device, there is nothing to be done.

Returns
errorcode (DEVICE_OK if no error)

◆ StartSLMSequence()

virtual int MM::SLM::StartSLMSequence ( )
pure virtual

Start running a sequence (i.e., start switching between images sent previously, triggered by a TTL or internal clock).

Returns
errorcode (DEVICE_OK if no error)

◆ StopSLMSequence()

virtual int MM::SLM::StopSLMSequence ( )
pure virtual

Stop running the sequence.

Returns
errorcode (DEVICE_OK if no error)

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