29#define DEVICE_INTERFACE_VERSION 75
59 long long microseconds_;
65 microseconds_(static_cast<long long>(uSecTotal))
68 explicit MMTime(
long sec,
long uSec) :
69 microseconds_(sec * 1'000'000LL + uSec)
80 ret.microseconds_ = us;
86 return MMTime(ms * 1000.0);
96 return fromUs(microseconds_ + other.microseconds_);
101 return fromUs(microseconds_ - other.microseconds_);
106 return microseconds_ > other.microseconds_;
111 return microseconds_ >= other.microseconds_;
116 return microseconds_ < other.microseconds_;
121 return microseconds_ <= other.microseconds_;
126 return microseconds_ == other.microseconds_;
131 return !(*
this == other);
136 return microseconds_ / 1000.0;
141 return static_cast<double>(microseconds_);
145 long long absUs = std::abs(microseconds_);
146 long long seconds = absUs / 1'000'000LL;
147 long long fracUs = absUs - seconds * 1'000'000LL;
148 const char *sign = microseconds_ < 0 ?
"-" :
"";
152 s << sign << seconds <<
'.' <<
153 setfill(
'0') << right << setw(6) << fracUs;
167 startTime_(startTime),
168 interval_(0, 1000*intervalMs)
172 startTime_(startTime),
179 MMTime elapsed = tnow - startTime_;
180 return ( interval_ < elapsed );
446 virtual int SetROI(
unsigned x,
unsigned y,
unsigned xSize,
unsigned ySize) = 0;
450 virtual int GetROI(
unsigned& x,
unsigned& y,
unsigned& xSize,
unsigned& ySize) = 0;
459 const unsigned* widths,
const unsigned* heights,
460 unsigned numROIs) = 0;
461 virtual int GetMultiROI(
unsigned* xs,
unsigned* ys,
unsigned* widths,
462 unsigned* heights,
unsigned* length) = 0;
490 virtual void GetTags(
char* serializedMetadata) = 0;
500 virtual void AddTag(
const char* key,
const char* deviceLabel,
const char* value) = 0;
558 virtual int Fire(
double deltaT) = 0;
577 virtual int Move(
double velocity) = 0;
585 virtual int GetLimits(
double& lower,
double& upper) = 0;
695 virtual int GetLimitsUm(
double& xMin,
double& xMax,
double& yMin,
double& yMax) = 0;
696 virtual int Move(
double vx,
double vy) = 0;
734 virtual int GetStepLimits(
long& xMin,
long& xMax,
long& yMin,
long& yMax) = 0;
812 virtual int SetCommand(
const char* command,
const char* term) = 0;
813 virtual int GetAnswer(
char* txt,
unsigned maxChars,
const char* term) = 0;
814 virtual int Write(
const unsigned char* buf,
unsigned long bufLen) = 0;
815 virtual int Read(
unsigned char* buf,
unsigned long bufLen,
unsigned long& charsRead) = 0;
859 virtual int Process(
unsigned char* buffer,
unsigned width,
unsigned height,
unsigned byteDepth) = 0;
882 virtual int GetLimits(
double& minVolts,
double& maxVolts) = 0;
1019 virtual int SetPixelsTo(
unsigned char red,
unsigned char green,
unsigned char blue) = 0;
1620 const char* answerTimeout,
1621 const char* baudRate,
1622 const char* delayBetweenCharsMs,
1623 const char* handshaking,
1625 const char* stopBits) = 0;
1627 virtual int GetSerialAnswer(
const Device* caller,
const char* portName,
unsigned long ansLength,
char* answer,
const char* term) = 0;
1628 virtual int WriteToSerial(
const Device* caller,
const char* port,
const unsigned char* buf,
unsigned long length) = 0;
1629 virtual int ReadFromSerial(
const Device* caller,
const char* port,
unsigned char* buf,
unsigned long length,
unsigned long& read) = 0;
1707 unsigned width,
unsigned height,
unsigned bytePerPixel,
unsigned nComponents,
1708 const char* serializedMetadata =
nullptr) = 0;
1717 unsigned width,
unsigned height,
unsigned bytePerPixel,
1718 const char* serializedMetadata =
nullptr) = 0;
1726 virtual bool InitializeImageBuffer(
unsigned channels,
unsigned slices,
unsigned int w,
unsigned int h,
unsigned int pixDepth) = 0;
#define MMDEVICE_DEPRECATED
Definition MMDeviceConstants.h:28
Auto-focus device API.
Definition MMDevice.h:823
virtual int SetOffset(double offset)=0
virtual int GetLastFocusScore(double &score)=0
AutoFocus()
Definition MMDevice.h:825
virtual ~AutoFocus()
Definition MMDevice.h:826
static const DeviceType Type
Definition MMDevice.h:830
virtual int GetOffset(double &offset)=0
virtual int FullFocus()=0
virtual int GetContinuousFocusing(bool &state)=0
virtual int AutoSetParameters()=0
virtual DeviceType GetType() const
Definition MMDevice.h:829
virtual int SetContinuousFocusing(bool state)=0
virtual int IncrementalFocus()=0
virtual bool IsContinuousFocusLocked()=0
virtual int GetCurrentFocusScore(double &score)=0
Camera API.
Definition MMDevice.h:300
virtual long GetImageBufferSize() const =0
Return the size in bytes of the image buffer.
virtual int ClearROI()=0
Reset the Region of Interest to full frame.
virtual int GetBinning() const =0
Return the current binning factor.
virtual int GetExposureSequenceMaxLength(long &nrEvents) const =0
virtual ~Camera()
Definition MMDevice.h:303
virtual void SetExposure(double exp_ms)=0
Set exposure in milliseconds.
virtual const unsigned char * GetImageBuffer()=0
Return pixel data.
virtual int SnapImage()=0
Perform exposure and grab a single image.
virtual int StopSequenceAcquisition()=0
Stop an ongoing sequence acquisition.
virtual void GetTags(char *serializedMetadata)=0
Get the metadata tags stored in this device.
virtual unsigned GetImageHeight() const =0
Return image buffer Y-size in pixels.
virtual bool IsCapturing()=0
Indicate whether sequence acquisition is currently running.
virtual int unsigned GetNumberOfChannels() const =0
Return the number of simultaneous channels that camera is capable of.
Camera()
Definition MMDevice.h:302
virtual unsigned GetBitDepth() const =0
Return the bit depth (dynamic range) of the pixel.
virtual int GetChannelName(unsigned channel, char *name)=0
Return the name for each Channel.
virtual int SetROI(unsigned x, unsigned y, unsigned xSize, unsigned ySize)=0
Set the camera Region Of Interest.
virtual int GetMultiROI(unsigned *xs, unsigned *ys, unsigned *widths, unsigned *heights, unsigned *length)=0
virtual int SetMultiROI(const unsigned *xs, const unsigned *ys, const unsigned *widths, const unsigned *heights, unsigned numROIs)=0
virtual const unsigned char * GetImageBuffer(unsigned channelNr)=0
Return pixel data for cameras with multiple channels.
virtual DeviceType GetType() const
Definition MMDevice.h:305
virtual double GetExposure() const =0
Return the current exposure setting in milliseconds.
virtual int IsExposureSequenceable(bool &isSequenceable) const =0
Return whether a camera's exposure time can be sequenced.
virtual int SendExposureSequence() const =0
virtual int GetMultiROICount(unsigned &count)=0
virtual int ClearExposureSequence()=0
virtual int AddToExposureSequence(double exposureTime_ms)=0
virtual bool IsMultiROISet()=0
virtual int StartSequenceAcquisition(long numImages, double interval_ms, bool stopOnOverflow)=0
Start continuous acquisition.
virtual bool SupportsMultiROI()=0
virtual int StartExposureSequence()=0
virtual void AddTag(const char *key, const char *deviceLabel, const char *value)=0
Add new tag or modify the value of an existing one.
virtual unsigned GetNumberOfComponents() const =0
Return the number of components in this image.
virtual int StartSequenceAcquisition(double interval_ms)=0
Start Sequence Acquisition with given interval.
virtual const unsigned int * GetImageBufferAsRGB32()=0
Return pixel data with interleaved RGB pixels in 32 bpp format.
static const DeviceType Type
Definition MMDevice.h:306
virtual void RemoveTag(const char *key)=0
Remove an existing tag from the metadata associated with this device.
virtual int GetROI(unsigned &x, unsigned &y, unsigned &xSize, unsigned &ySize)=0
Return the actual dimensions of the current ROI.
virtual unsigned GetImageWidth() const =0
Return image buffer X-size in pixels.
virtual int StopExposureSequence()=0
virtual int SetBinning(int binSize)=0
Set binning factor.
virtual unsigned GetImageBytesPerPixel() const =0
Return image buffer pixel depth in bytes.
Callback API to the core control module.
Definition MMDevice.h:1583
virtual bool InitializeImageBuffer(unsigned channels, unsigned slices, unsigned int w, unsigned int h, unsigned int pixDepth)=0
Prepare the sequence buffer for the given image size and pixel format.
virtual ~Core()
Definition MMDevice.h:1586
virtual int OnPropertiesChanged(const Device *caller)=0
virtual MM::MMTime GetCurrentMMTime()=0
virtual unsigned long GetClockTicksUs(const Device *caller)=0
virtual int GetSerialAnswer(const Device *caller, const char *portName, unsigned long ansLength, char *answer, const char *term)=0
virtual int InsertImage(const Device *caller, const unsigned char *buf, unsigned width, unsigned height, unsigned bytePerPixel, const char *serializedMetadata=nullptr)=0
Send a grayscale frame to the Core during sequence acquisition.
virtual int OnMagnifierChanged(const Device *caller)=0
Signal changes in magnification.
virtual int AcqFinished(const Device *caller, int statusCode)=0
virtual MM::PortType GetSerialPortType(const char *portName) const =0
virtual int SetSerialCommand(const Device *caller, const char *portName, const char *command, const char *term)=0
virtual int PurgeSerial(const Device *caller, const char *portName)=0
virtual int OnStagePositionChanged(const Device *caller, double pos)=0
Inform the UI when a stage has changed its position.
virtual void GetLoadedDeviceOfType(const Device *caller, MM::DeviceType devType, char *pDeviceName, const unsigned int deviceIterator)=0
Get the names of currently loaded devices of a given type.
virtual int OnExposureChanged(const Device *caller, double newExposure)=0
Inform the UI when the exposure time has changed.
virtual int WriteToSerial(const Device *caller, const char *port, const unsigned char *buf, unsigned long length)=0
virtual int SetSerialProperties(const char *portName, const char *answerTimeout, const char *baudRate, const char *delayBetweenCharsMs, const char *handshaking, const char *parity, const char *stopBits)=0
virtual MM::Hub * GetParentHub(const MM::Device *caller) const =0
virtual int LogMessage(const Device *caller, const char *msg, bool debugOnly) const =0
Log a message (msg) in the Corelog output, labeled with the device name (derived from caller).
virtual int OnXYStagePositionChanged(const Device *caller, double xPos, double yPos)=0
Inform the UI when an XY stage has changed its position.
virtual MM::SignalIO * GetSignalIODevice(const MM::Device *caller, const char *deviceName)=0
virtual int SetDeviceProperty(const char *deviceName, const char *propName, const char *value)=0
virtual int ReadFromSerial(const Device *caller, const char *port, unsigned char *buf, unsigned long length, unsigned long &read)=0
Core()
Definition MMDevice.h:1585
virtual Device * GetDevice(const Device *caller, const char *label)=0
Get a pointer to another device.
virtual int OnShutterOpenChanged(const Device *caller, bool open)=0
Signal that the shutter opened or closed.
virtual int OnPropertyChanged(const Device *caller, const char *propName, const char *propValue)=0
Inform the UI that a property changed.
virtual int OnSLMExposureChanged(const Device *caller, double newExposure)=0
Inform the UI when the SLM exposure time has changed.
virtual int GetFocusPosition(double &pos)=0
virtual int InsertImage(const Device *caller, const unsigned char *buf, unsigned width, unsigned height, unsigned bytePerPixel, unsigned nComponents, const char *serializedMetadata=nullptr)=0
Send a frame to the Core during sequence acquisition.
virtual int GetDeviceProperty(const char *deviceName, const char *propName, char *value)=0
virtual int PrepareForAcq(const Device *caller)=0
Generic device interface.
Definition MMDevice.h:192
virtual int GetProperty(const char *name, char *value) const =0
virtual bool UsesDelay()=0
virtual int GetPropertySequenceMaxLength(const char *propertyName, long &nrEvents) const =0
Return the largest sequence that can be stored in the device.
virtual int GetPropertyUpperLimit(const char *name, double &hiLimit) const =0
virtual int GetPropertyType(const char *name, MM::PropertyType &pt) const =0
virtual MM::DeviceDetectionStatus DetectDevice(void)=0
virtual void SetCallback(Core *callback)=0
virtual void GetDescription(char *description) const =0
virtual bool GetErrorText(int errorCode, char *errMessage) const =0
virtual int Initialize()=0
virtual int StopPropertySequence(const char *propertyName)=0
Stop execution of the sequence.
virtual void GetModuleName(char *moduleName) const =0
virtual void GetLabel(char *name) const =0
virtual int IsPropertySequenceable(const char *name, bool &isSequenceable) const =0
Check whether the given property can be used with sequences.
virtual void SetLabel(const char *label)=0
virtual bool GetPropertyName(unsigned idx, char *name) const =0
virtual bool HasProperty(const char *name) const =0
Device()
Definition MMDevice.h:194
virtual int GetPropertyInitStatus(const char *name, bool &preInit) const =0
virtual int StartPropertySequence(const char *propertyName)=0
Start execution of the sequence.
virtual int ClearPropertySequence(const char *propertyName)=0
Remove previously added sequence.
virtual double GetDelayMs() const =0
virtual void SetParentID(const char *parentId)=0
virtual unsigned GetNumberOfPropertyValues(const char *propertyName) const =0
virtual int AddToPropertySequence(const char *propertyName, const char *value)=0
Add one value to the sequence.
virtual bool GetPropertyValueAt(const char *propertyName, unsigned index, char *value) const =0
virtual int HasPropertyLimits(const char *name, bool &hasLimits) const =0
virtual ~Device()
Definition MMDevice.h:195
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 th...
virtual void SetDelayMs(double delay)=0
virtual void GetParentID(char *parentID) const =0
virtual DeviceType GetType() const =0
virtual void SetModuleName(const char *moduleName)=0
virtual bool SupportsDeviceDetection(void)=0
virtual void GetName(char *name) const =0
virtual unsigned GetNumberOfProperties() const =0
virtual int SetProperty(const char *name, const char *value)=0
virtual int GetPropertyReadOnly(const char *name, bool &readOnly) const =0
virtual int GetPropertyLowerLimit(const char *name, double &lowLimit) const =0
virtual void SetDescription(const char *description)=0
virtual int Shutdown()=0
Shut down (unload) the device.
Galvo API.
Definition MMDevice.h:1161
virtual ~Galvo()
Definition MMDevice.h:1164
virtual int RunSequence()=0
Run a TTL-triggered polygon sequence.
virtual int RunPolygons()=0
Display each pre-loaded polygon in sequence, each illuminated for pulseinterval_us micro-seconds.
virtual int LoadPolygons()=0
Transfer the polygons from the device adapter memory to the Galvo controller.
virtual int GetPosition(double &x, double &y)=0
Return the current position of the two axes (usually the last position that was set,...
virtual int StopSequence()=0
Stop the TTL triggered transitions of drawing polygons started in RunSequence().
virtual double GetXRange()=0
Return the X range of the device in native units.
static const DeviceType Type
Definition MMDevice.h:1167
virtual int SetSpotInterval(double pulseInterval_us)=0
Set the spot interval time.
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 GetChannel(char *channelName)=0
TODO-BRIEF.
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 a...
virtual int DeletePolygons()=0
Delete all polygons previously stored in the device adapter.
virtual int SetPolygonRepetitions(int repetitions)=0
Set the number of times the polygons should be displayed in the RunPolygons function.
Galvo()
Definition MMDevice.h:1163
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 c...
virtual DeviceType GetType() const
Definition MMDevice.h:1166
virtual int SetIlluminationState(bool on)=0
Switch the light source under control of this device on or off.
virtual double GetXMinimum()=0
Return the minimum X value for the device in native units.
Generic Device.
Definition MMDevice.h:291
static const DeviceType Type
Definition MMDevice.h:294
virtual DeviceType GetType() const
Definition MMDevice.h:293
HUB device.
Definition MMDevice.h:1314
virtual ~Hub()
Definition MMDevice.h:1317
Hub()
Definition MMDevice.h:1316
static const DeviceType Type
Definition MMDevice.h:1321
virtual Device * GetInstalledDevice(int devIdx)=0
Return a pointer to the Device with index devIdx.
virtual unsigned GetNumberOfInstalledDevices()=0
Return the number of child Devices after DetectInstalledDevices was called.
virtual void ClearInstalledDevices()=0
Remove all Device instances that were created by DetectInstalledDevices(). Not used.
virtual DeviceType GetType() const
Definition MMDevice.h:1320
virtual int DetectInstalledDevices()=0
Instantiate all available child peripheral devices.
Image processor API.
Definition MMDevice.h:849
ImageProcessor()
Definition MMDevice.h:851
virtual DeviceType GetType() const
Definition MMDevice.h:855
virtual int Process(unsigned char *buffer, unsigned width, unsigned height, unsigned byteDepth)=0
virtual ~ImageProcessor()
Definition MMDevice.h:852
static const DeviceType Type
Definition MMDevice.h:856
Utility class used both MMCore and devices to maintain time intervals in the uniform,...
Definition MMDevice.h:58
static MMTime fromMs(double ms)
Definition MMDevice.h:84
MMTime()
Definition MMDevice.h:62
MMTime operator+(const MMTime &other) const
Definition MMDevice.h:94
bool operator!=(const MMTime &other) const
Definition MMDevice.h:129
double getMsec() const
Definition MMDevice.h:134
bool operator<=(const MMTime &other) const
Definition MMDevice.h:119
bool operator>=(const MMTime &other) const
Definition MMDevice.h:109
std::string toString() const
Definition MMDevice.h:144
MMTime(double uSecTotal)
Definition MMDevice.h:64
bool operator==(const MMTime &other) const
Definition MMDevice.h:124
static MMTime fromUs(long long us)
Definition MMDevice.h:72
MMTime operator-(const MMTime &other) const
Definition MMDevice.h:99
static MMTime fromSeconds(long secs)
Definition MMDevice.h:89
MMTime(long sec, long uSec)
Definition MMDevice.h:68
bool operator>(const MMTime &other) const
Definition MMDevice.h:104
bool operator<(const MMTime &other) const
Definition MMDevice.h:114
double getUsec() const
Definition MMDevice.h:139
Devices that can change magnification of the system.
Definition MMDevice.h:964
virtual ~Magnifier()
Definition MMDevice.h:967
static const DeviceType Type
Definition MMDevice.h:971
virtual double GetMagnification()=0
Magnifier()
Definition MMDevice.h:966
virtual DeviceType GetType() const
Definition MMDevice.h:970
Pressure Pump API.
Definition MMDevice.h:1369
virtual bool RequiresCalibration()=0
Return whether the pressure controller is functional before calibration, or it needs to undergo inter...
virtual DeviceType GetType() const
Definition MMDevice.h:1375
virtual int SetPressureKPa(double pressureKPa)=0
Set the pressure of the pressure controller.
virtual int Stop()=0
Stop the pump.
virtual int GetPressureKPa(double &pressureKPa)=0
Get the pressure of the pressure controller.
PressurePump()
Definition MMDevice.h:1371
virtual int Calibrate()=0
Calibrate the pressure controller.
virtual ~PressurePump()
Definition MMDevice.h:1372
static const DeviceType Type
Definition MMDevice.h:1376
Spatial Light Modulator (SLM) API.
Definition MMDevice.h:987
virtual int StartSLMSequence()=0
Start running a sequence (i.e., start switching between images sent previously, triggered by a TTL or...
virtual int SendSLMSequence()=0
Send the complete sequence to the device.
virtual int GetSLMSequenceMaxLength(long &nrEvents) const =0
Return the maximum length of a sequence that the hardware can store.
virtual int IsSLMSequenceable(bool &isSequenceable) const =0
Indicate whether or not this SLM device accepts sequences.
SLM()
Definition MMDevice.h:989
virtual double GetExposure()=0
Get the exposure interval of an SLM.
static const DeviceType Type
Definition MMDevice.h:993
virtual unsigned GetNumberOfComponents()=0
Get the SLM number of components (colors).
virtual int AddToSLMSequence(const unsigned char *const pixels)=0
Add a new 8-bit projection image to the sequence.
virtual int SetPixelsTo(unsigned char red, unsigned char green, unsigned char blue)=0
Command the SLM to display one 32-bit color.
virtual ~SLM()
Definition MMDevice.h:990
virtual int DisplayImage()=0
Command the SLM to display the loaded image.
virtual int StopSLMSequence()=0
Stop running the sequence.
virtual int SetExposure(double interval_ms)=0
Command the SLM to turn off after a specified interval.
virtual int SetPixelsTo(unsigned char intensity)=0
Command the SLM to display one 8-bit intensity.
virtual unsigned GetHeight()=0
Get the SLM height in pixels.
virtual int SetImage(unsigned int *pixels)=0
Load a 32-bit image into the SLM device adapter.
virtual unsigned GetBytesPerPixel()=0
Get the SLM number of bytes per pixel.
virtual int SetImage(unsigned char *pixels)=0
Load the image into the SLM device adapter.
virtual int AddToSLMSequence(const unsigned int *const pixels)=0
Add a new 32-bit (RGB) projection image to the sequence.
virtual int ClearSLMSequence()=0
Clear the SLM sequence from the device and the adapter.
virtual DeviceType GetType() const
Definition MMDevice.h:992
virtual unsigned GetWidth()=0
Get the SLM width in pixels.
Serial port API.
Definition MMDevice.h:801
virtual int Write(const unsigned char *buf, unsigned long bufLen)=0
virtual ~Serial()
Definition MMDevice.h:804
virtual int SetCommand(const char *command, const char *term)=0
virtual int Read(unsigned char *buf, unsigned long bufLen, unsigned long &charsRead)=0
virtual PortType GetPortType() const =0
static const DeviceType Type
Definition MMDevice.h:808
Serial()
Definition MMDevice.h:803
virtual int GetAnswer(char *txt, unsigned maxChars, const char *term)=0
virtual DeviceType GetType() const
Definition MMDevice.h:807
Shutter API.
Definition MMDevice.h:541
virtual int Fire(double deltaT)=0
Open the shutter for the given duration, then close it again.
Shutter()
Definition MMDevice.h:543
virtual DeviceType GetType() const
Definition MMDevice.h:547
virtual int SetOpen(bool open=true)=0
virtual ~Shutter()
Definition MMDevice.h:544
static const DeviceType Type
Definition MMDevice.h:548
virtual int GetOpen(bool &open)=0
ADC and DAC interface.
Definition MMDevice.h:868
static const DeviceType Type
Definition MMDevice.h:875
virtual int StartDASequence()=0
Start running a sequence (i.e., start switching between voltages sent previously, triggered by a TTL)...
virtual int GetGateOpen(bool &open)=0
virtual int GetSignal(double &volts)=0
virtual int SendDASequence()=0
Send the complete sequence to the device.
virtual int StopDASequence()=0
Stop running the sequence.
virtual int ClearDASequence()=0
Clear the DA sequence from the device and the adapter.
virtual int IsDASequenceable(bool &isSequenceable) const =0
Indicate whether or not this DA device accepts sequences.
virtual int GetLimits(double &minVolts, double &maxVolts)=0
virtual DeviceType GetType() const
Definition MMDevice.h:874
SignalIO()
Definition MMDevice.h:870
virtual int GetDASequenceMaxLength(long &nrEvents) const =0
Return the maximum length of a sequence that the hardware can store.
virtual int SetSignal(double volts)=0
virtual ~SignalIO()
Definition MMDevice.h:871
virtual int SetGateOpen(bool open=true)=0
virtual int AddToDASequence(double voltage)=0
Add a new data point (voltage) to the sequence.
Single axis stage API.
Definition MMDevice.h:565
virtual int IsStageLinearSequenceable(bool &isSequenceable) const =0
Indicate whether the stage can perform linear TTL sequencing.
virtual int SendStageSequence()=0
Signal that we are done sending sequence values so that the adapter can send the whole sequence to th...
virtual int SetAdapterOriginUm(double d)=0
virtual int GetLimits(double &lower, double &upper)=0
virtual int GetStageSequenceMaxLength(long &nrEvents) const =0
virtual int SetStageLinearSequence(double dZ_um, long nSlices)=0
Set up to perform an equally-spaced triggered Z stack.
virtual ~Stage()
Definition MMDevice.h:568
virtual int StopStageSequence()=0
virtual int StartStageSequence()=0
virtual int ClearStageSequence()=0
Remove all values in the sequence.
virtual int GetPositionUm(double &pos)=0
static const DeviceType Type
Definition MMDevice.h:572
virtual bool IsContinuousFocusDrive() const =0
virtual int GetFocusDirection(FocusDirection &direction)=0
Return the focus direction.
virtual int AddToStageSequence(double position)=0
Add one value to the sequence.
virtual int SetPositionSteps(long steps)=0
virtual int UsesOnStagePositionChanged(bool &result) const =0
Stages can use the OnStagePositionChanged callback to signal updates about their position....
virtual int IsStageSequenceable(bool &isSequenceable) const =0
Indicate whether the stage can be sequenced (synchronized by TTLs).
virtual int GetPositionSteps(long &steps)=0
virtual int SetOrigin()=0
virtual int SetRelativePositionUm(double d)=0
virtual int Move(double velocity)=0
virtual int SetPositionUm(double pos)=0
Stage()
Definition MMDevice.h:567
virtual DeviceType GetType() const
Definition MMDevice.h:571
State device API, e.g. filter wheel, objective turret, etc.
Definition MMDevice.h:775
virtual DeviceType GetType() const
Definition MMDevice.h:781
virtual int GetPositionLabel(long pos, char *label) const =0
virtual int SetPosition(const char *label)=0
static const DeviceType Type
Definition MMDevice.h:782
virtual int GetPosition(char *label) const =0
virtual int GetPosition(long &pos) const =0
virtual int GetLabelPosition(const char *label, long &pos) const =0
virtual ~State()
Definition MMDevice.h:778
virtual unsigned long GetNumberOfPositions() const =0
virtual int SetGateOpen(bool open=true)=0
State()
Definition MMDevice.h:777
virtual int SetPositionLabel(long pos, const char *label)=0
virtual int GetGateOpen(bool &open)=0
virtual int SetPosition(long pos)=0
Timeout utility class.
Definition MMDevice.h:163
TimeoutMs(const MMTime startTime, const MMTime interval)
Definition MMDevice.h:171
bool expired(const MMTime tnow)
Definition MMDevice.h:177
TimeoutMs(const MMTime startTime, const unsigned long intervalMs)
Definition MMDevice.h:166
Volumetric Pump API.
Definition MMDevice.h:1432
virtual int Home()=0
Home the pump.
virtual DeviceType GetType() const
Definition MMDevice.h:1438
virtual int GetMaxVolumeUl(double &volUl)=0
Get the maximum volume of the pump in microliters (uL).
virtual int GetVolumeUl(double &volUl)=0
Get the current volume of the pump in microliters (uL).
virtual ~VolumetricPump()
Definition MMDevice.h:1435
virtual int Start()=0
Start dispensing/withdrawing until the minimum or maximum volume has been reached,...
VolumetricPump()
Definition MMDevice.h:1434
static const DeviceType Type
Definition MMDevice.h:1439
virtual bool RequiresHoming()=0
Check whether the pump requires homing before being operational.
virtual int DispenseDurationSeconds(double durSec)=0
Dispense/withdraw for the provided time.
virtual int SetMaxVolumeUl(double volUl)=0
Set the maximum volume of the pump in microliters (uL).
virtual int Stop()=0
Stop the pump.
virtual int IsDirectionInverted(bool &inverted)=0
Check whether the direction of the pump is inverted.
virtual int SetVolumeUl(double volUl)=0
Set the current volume of the pump in microliters (uL).
virtual int GetFlowrateUlPerSecond(double &flowrate)=0
Get the flowrate in microliter (uL) per second.
virtual int DispenseVolumeUl(double volUl)=0
Dispense/withdraw the provided volume.
virtual int SetFlowrateUlPerSecond(double flowrate)=0
Set the flowrate in microliter (uL) per second.
virtual int InvertDirection(bool inverted)=0
Set the direction of the pump.
Dual axis stage API.
Definition MMDevice.h:675
virtual int GetLimitsUm(double &xMin, double &xMax, double &yMin, double &yMax)=0
virtual double GetStepSizeXUm()=0
virtual int ClearXYStageSequence()=0
Remove all values in the sequence.
static const DeviceType Type
Definition MMDevice.h:682
virtual int GetStepLimits(long &xMin, long &xMax, long &yMin, long &yMax)=0
virtual int GetPositionUm(double &x, double &y)=0
virtual DeviceType GetType() const
Definition MMDevice.h:681
virtual int SetYOrigin()=0
Define the current position as Y = 0 (in hardware if possible).
virtual int SetRelativePositionSteps(long x, long y)=0
virtual int SetXOrigin()=0
Define the current position as X = 0 (in hardware if possible).
virtual int GetXYStageSequenceMaxLength(long &nrEvents) const =0
virtual int StopXYStageSequence()=0
virtual int IsXYStageSequenceable(bool &isSequenceable) const =0
Return whether a stage can be sequenced (synchronized by TTLs).
virtual int GetPositionSteps(long &x, long &y)=0
virtual int UsesOnXYStagePositionChanged(bool &result) const =0
XY stages can use the OnXYStagePositionChanged callback to signal updates about their position....
virtual int SetOrigin()=0
Define the current position as the (hardware) origin (0, 0).
virtual int StartXYStageSequence()=0
virtual int SendXYStageSequence()=0
Signal that we are done sending sequence values so that the adapter can send the whole sequence to th...
virtual int SetAdapterOriginUm(double x, double y)=0
virtual int SetPositionUm(double x, double y)=0
virtual double GetStepSizeYUm()=0
virtual int SetPositionSteps(long x, long y)=0
virtual ~XYStage()
Definition MMDevice.h:678
virtual int SetRelativePositionUm(double dx, double dy)=0
XYStage()
Definition MMDevice.h:677
virtual int AddToXYStageSequence(double positionX, double positionY)=0
Add one value to the sequence.
virtual int Move(double vx, double vy)=0
Definition CameraImageMetadata.h:25
FocusDirection
Definition MMDeviceConstants.h:282
PortType
Definition MMDeviceConstants.h:275
PropertyType
Definition MMDeviceConstants.h:258
DeviceType
Definition MMDeviceConstants.h:236
DeviceDetectionStatus
Definition MMDeviceConstants.h:296