20 namespace ZI_MFLITasks
332 "Determines which signal input to use",
true, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType::Voltage };
334 "Demodulator of the lock-in amplifier to read out",
true, 0, 0, std::numeric_limits<uint8_t>::max(), 1, 0 };
336 "Trigger channel to use for external trigger modes",
true, 1, 1, std::numeric_limits<uint8_t>::max(), 1, 0 };
363 constexpr
static auto Name() noexcept {
return "ZI MFLI"; }
371 virtual std::chrono::milliseconds
GetTaskQueueDelay()
const override {
return std::chrono::milliseconds(200); }
400 void ResetImpl(dispatch_tag<LockinAmplifier>)
override final;
410 std::atomic<DynExpHardware::ZILabOneHardwareAdapter::SignalInputType>
SignalInput;
Defines DynExp's core module as an interface between the UI and DynExp objects.
Implementation of a hardware adapter to control Zurich Instruments MFLI hardware.
Defines a meta instrument for a lock-in amplifier.
UnitType
Units which can be used for data stream instruments.
@ Ampere
Electric current in Ampere (A)
@ Volt
Voltage in Volt (V)
Configurator class for LockinAmplifier.
Data class for LockinAmplifier.
Parameter class for LockinAmplifier.
Defines a task for deinitializing an instrument within an instrument inheritance hierarchy....
Defines a task for initializing an instrument within an instrument inheritance hierarchy....
Defines a task for updating an instrument within an instrument inheritance hierarchy....
Meta instrument for a lock-in amplifier based on the data stream meta instrument.
ZI_MFLIConfigurator()=default
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
virtual ~ZI_MFLIConfigurator()=default
virtual void SetSamplingRate(double SamplingRate) noexcept override
Setter for the lock-in amplifier's sampling rate in samples/s.
LockinAmplifierDefs::SignalType Signal
virtual void SetTriggerMode(LockinAmplifierDefs::TriggerModeType TriggerMode) noexcept override
Setter for the lock-in amplifier's trigger mode.
LockinAmplifierDefs::TriggerModeType TriggerMode
size_t NumFailedStatusUpdateAttempts
virtual bool IsOverloaded() const noexcept override
Indicates whether the lock-in amplifier's physical signal input is overloaded by e....
virtual double GetOscillatorFrequency() const noexcept override
Indicates the oscillator frequency the lock-in amplifier demodulates the measured signal at.
virtual double GetSamplingRate() const noexcept override
Getter for the lock-in amplifier's sampling rate in samples/s.
virtual std::pair< double, double > GetInputLoad() const noexcept override
Indicates the load at the lock-in amplifier's physical signal input in negative and positive directio...
virtual double GetSensitivity() const noexcept override
Getter for the lock-in amplifier's sensitivity/amplification setting.
virtual double GetTimeConstant() const noexcept override
Getter for the time constant in seconds of the lock-in amplifier's low-poss filter.
virtual LockinAmplifierDefs::SignalType GetSignalType() const noexcept override
Getter for the lock-in amplifier's signal coordinate type to write to the data stream.
double OscillatorFrequency
virtual void SetTimeConstant(double TimeConstant) noexcept override
Setter for the time constant in seconds of the lock-in amplifier's low-poss filter.
virtual double GetAcquisitionProgress() const noexcept override
Determines the progress of the current data acquisition.
virtual void SetTriggerEdge(LockinAmplifierDefs::TriggerEdgeType TriggerEdge) noexcept override
Setter for the lock-in amplifier's trigger edge.
double AcquisitionProgress
virtual double GetPhase() const noexcept override
Getter for the phase in rad of the lock-in amplifier's demodulator.
void ResetImpl(dispatch_tag< LockinAmplifierData >) override final
virtual uint8_t GetFilterOrder() const noexcept override
Getter for the filter order/quality of the lock-in amplifier's low-poss filter.
virtual bool IsEnabled() const noexcept override
Returns true if the lock-in amplifier's demodulator is enabled, false otherwise.
virtual void ResetImpl(dispatch_tag< ZI_MFLIData >)
DynExp::LinkedObjectWrapperContainer< DynExpHardware::ZILabOneHardwareAdapter > HardwareAdapter
virtual ~ZI_MFLIData()=default
virtual LockinAmplifierDefs::TriggerModeType GetTriggerMode() const noexcept override
Getter for the lock-in amplifier's trigger mode.
virtual void SetFilterOrder(uint8_t FilterOrder) noexcept override
Setter for the filter order/quality of the lock-in amplifier's low-poss filter.
LockinAmplifierDefs::TriggerEdgeType TriggerEdge
virtual void SetSignalType(LockinAmplifierDefs::SignalType SignalType) noexcept override
Setter for the lock-in amplifier's signal coordinate type to write to the data stream.
virtual void SetPhase(double Phase) noexcept override
Setter for the phase in rad of the lock-in amplifier's demodulator.
ZI_MFLIData(size_t BufferSizeInSamples=1)
virtual void SetEnable(uint8_t Enable) noexcept override
Enables (pass true) or disables (pass false) the lock-in amplifier's demodulator.
virtual void SetSensitivity(double Sensitivity) noexcept override
Setter for the lock-in amplifier's sensitivity/amplification setting.
virtual LockinAmplifierDefs::TriggerEdgeType GetTriggerEdge() const noexcept override
Getter for the lock-in amplifier's trigger edge.
void ConfigureParamsImpl(dispatch_tag< LockinAmplifierParams >) override final
Called by DynExp::ParamsBase::ConfigureParams() as a starting point for the tag dispatch mechanism to...
Param< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInput
ZI_MFLIParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
static Util::TextValueListType< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInputTypeStrList()
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
virtual ~ZI_MFLIParams()=default
Param< ParamsConfigDialog::NumberType > Demodulator
Param< ParamsConfigDialog::NumberType > TriggerChannel
Param< DynExp::ObjectLink< DynExpHardware::ZILabOneHardwareAdapter > > HardwareAdapter
virtual void ConfigureParamsImpl(dispatch_tag< ZI_MFLIParams >)
AutoAdjustPhaseTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
AutoAdjustSensitivityTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
ClearDataTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual void ExitFuncImpl(dispatch_tag< ExitTask >, DynExp::InstrumentInstance &Instance)
ExitTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
void ExitFuncImpl(dispatch_tag< LockinAmplifierTasks::ExitTask >, DynExp::InstrumentInstance &Instance) override final
Deinitializes the respective instrument within the instrument inheritance hierarchy....
ForceTriggerTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual void InitFuncImpl(dispatch_tag< InitTask >, DynExp::InstrumentInstance &Instance)
InitTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
void InitFuncImpl(dispatch_tag< LockinAmplifierTasks::InitTask >, DynExp::InstrumentInstance &Instance) override final
Initializes the respective instrument within the instrument inheritance hierarchy....
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
ReadTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
SetEnableTask(bool Enable, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
SetFilterOrderTask(uint8_t FilterOrder, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
SetPhaseTask(double Phase, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
SetSamplingRateTask(double SamplingRate, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
SetSensitivityTask(double Sensitivity, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
LockinAmplifierDefs::SignalType SignalType
SetSignalTypeTask(LockinAmplifierDefs::SignalType SignalType, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
SetTimeConstantTask(double TimeConstant, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
SetTriggerEdgeTask(LockinAmplifierDefs::TriggerEdgeType TriggerEdge, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
LockinAmplifierDefs::TriggerEdgeType TriggerEdge
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
LockinAmplifierDefs::TriggerModeType TriggerMode
SetTriggerModeTask(LockinAmplifierDefs::TriggerModeType TriggerMode, uint8_t TriggerChannel, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
StartTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
StopTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
virtual DynExp::TaskResultType RunChild(DynExp::InstrumentInstance &Instance) override
Runs the task. Override RunChild() to define a derived task's action(s). Any exception leaving RunChi...
virtual void UpdateFuncImpl(dispatch_tag< UpdateTask >, DynExp::InstrumentInstance &Instance)
UpdateTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
void UpdateFuncImpl(dispatch_tag< LockinAmplifierTasks::UpdateTask >, DynExp::InstrumentInstance &Instance) override final
Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() ...
virtual ~ZI_MFLITaskBase()
ZI_MFLITaskBase(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
auto GetUsedSignalInput() const noexcept
const DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput
auto GetUsedDemodulator() const noexcept
const uint8_t UsedDemodulator
virtual void SetPhase(double Phase, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the phase of the lock-in amplifier's demodulator.
virtual void SetTriggerMode(LockinAmplifierDefs::TriggerModeType TriggerMode, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's trigger mode.
virtual std::unique_ptr< DynExp::UpdateTaskBase > MakeUpdateTask() const override
Factory function for an update task (UpdateTaskBase). Override to define the desired update task in d...
virtual void ClearData(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enqueues a task to clear the underlying hardware adapter's buffer.
virtual void SetEnable(bool Enable, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enables or disables the lock-in amplifier's demodulator.
virtual std::unique_ptr< DynExp::InitTaskBase > MakeInitTask() const override
Factory function for an init task (InitTaskBase). Override to define the desired initialization task ...
virtual std::chrono::milliseconds GetTaskQueueDelay() const override
Specifies in which time intervals the instrument's task queue runs to handle pending tasks.
virtual void AutoAdjustPhase(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Makes the lock-in amplifier automatically set its demodulator's phase.
virtual void SetFilterOrder(uint8_t FilterOrder, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the filter order/quality of the lock-in amplifier's low-poss filter.
constexpr static auto Name() noexcept
virtual Util::OptionalBool HasFinished() const override
Determines whether the underlying hardware adapter finished data acquisition or writing data.
virtual void ForceTrigger(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Forces (starts) the data acquisition ignoring the trigger.
virtual void SetSamplingRate(double SamplingRate, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's sampling rate.
virtual void ApplyFromParamsImpl(dispatch_tag< LockinAmplifier >) const override
Refer to ApplyFromParams(). Using tag dispatch mechanism to ensure that ApplyFromParamsImpl() of ever...
ZI_MFLI(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
virtual std::string GetName() const override
Returns the name of this Object type.
std::atomic< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInput
virtual void AutoAdjustSensitivity(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Makes the lock-in amplifier automatically set its sensitivity/amplification.
virtual std::unique_ptr< DynExp::ExitTaskBase > MakeExitTask() const override
Factory function for an exit task (ExitTaskBase). Override to define the desired deinitialization tas...
virtual void SetSignalType(LockinAmplifierDefs::SignalType SignalType, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's signal coordinate type to read out.
virtual void Start(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enqueues a task to make the underlying hardware adapter start data acquisition or writing data.
virtual const char * GetSensitivityUnitString() const noexcept override
Determines the unit of the lock-in amplifier's sensitivity/amplification setting and returns a human-...
virtual void Stop(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enqueues a task to make the underlying hardware adapter stop data acquisition or writing data.
virtual void ReadData(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enqueues a task to read data from the hardware to the data stream. The default implementation does no...
void ResetImpl(dispatch_tag< LockinAmplifier >) override final
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl() of every de...
virtual void SetTimeConstant(double TimeConstant, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the time constant of the lock-in amplifier's low-poss filter.
virtual void SetTriggerEdge(LockinAmplifierDefs::TriggerEdgeType TriggerEdge, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's trigger edge.
virtual void ResetImpl(dispatch_tag< ZI_MFLI >)
virtual DataStreamInstrumentData::UnitType GetValueUnit() const noexcept override
Determines which unit corresponds to the values managed by this DataStreamInstrument instance....
virtual Util::OptionalBool IsRunning() const override
Determines whether the underlying hardware adapter is running a data acquisition or writing data.
virtual void SetSensitivity(double Sensitivity, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's sensitivity/amplification.
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Refer to DynExp::ParamsBase::dispatch_tag.
Refer to DynExp::ParamsBase::dispatch_tag.
Base class for instruments. Instruments comprise virtual devices (meta instruments) and physial devic...
Configurator class for InstrumentBase.
Data structure to contain data which is synchronized in between different threads....
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a InstrumentBase instance. Refer to RunnableInstance.
Parameter class for InstrumentBase.
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Refer to ParamsBase::dispatch_tag.
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
const DynExpCore & Core
Reference to DynExp's core.
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Base class for all tasks being processed by instruments. The class must not contain public virtual fu...
std::function< void(const TaskBase &, ExceptionContainer &)> CallbackType
Type of a callback function which is invoked when a task has finished, failed or has been aborted....
TaskBase(CallbackType CallbackFunc=nullptr) noexcept
Constructs an instrument task.
const CallbackType CallbackFunc
This callback function is called after the task has finished (either successfully or not) with a refe...
Defines the return type of task functions.
Refer to DynExp::ParamsBase::dispatch_tag.
Data type which stores an optional bool value (unknown, false, true). The type evaluates to bool whil...
TriggerEdgeType
Type to determine at which edge of a trigger signal to trigger. Not a strongly-typed enum to allow us...
SignalType
Type specifying different signal coordinates a lock-in amplifier can record. Not a strongly-typed enu...
TriggerModeType
Type to determine the trigger mode. Not a strongly-typed enum to allow using the enumeration in a Dyn...
DynExp's instrument namespace contains the implementation of DynExp instruments which extend DynExp's...
constexpr auto HardwareAdapter
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
size_t ItemIDType
ID type of objects/items managed by DynExp.
std::vector< std::pair< TextType, ValueType > > TextValueListType
Type of a list containing key-value pairs where key is a text of type Util::TextType.
Accumulates include statements to provide a precompiled header.