DynExp
Highly flexible laboratory automation for dynamically changing experiments.
Loading...
Searching...
No Matches
ZI_MFLI.h
Go to the documentation of this file.
1// This file is part of DynExp.
2
9#pragma once
10
11#include "stdafx.h"
12#include "DynExpCore.h"
15
16namespace DynExpInstr
17{
18 class ZI_MFLI;
19
20 namespace ZI_MFLITasks
21 {
36
38 {
39 public:
42
43 private:
44 void InitFuncImpl(dispatch_tag<LockinAmplifierTasks::InitTask>, DynExp::InstrumentInstance& Instance) override final;
46 };
47
49 {
50 public:
53
54 private:
55 void ExitFuncImpl(dispatch_tag<LockinAmplifierTasks::ExitTask>, DynExp::InstrumentInstance& Instance) override final;
57 };
58
60 {
61 public:
64
65 private:
66 void UpdateFuncImpl(dispatch_tag<LockinAmplifierTasks::UpdateTask>, DynExp::InstrumentInstance& Instance) override final;
68 };
69
79
89
99
109
122
132
145
155
168
181
195
208
221
234
247
257 }
258
260 {
262
263 public:
264 ZI_MFLIData(size_t BufferSizeInSamples = 1) : LockinAmplifierData(BufferSizeInSamples) {}
265 virtual ~ZI_MFLIData() = default;
266
267 virtual double GetSensitivity() const noexcept override { return Sensitivity; }
268 virtual void SetSensitivity(double Sensitivity) noexcept override { this->Sensitivity = Sensitivity; }
269 virtual double GetPhase() const noexcept override { return Phase; }
270 virtual void SetPhase(double Phase) noexcept override { this->Phase = Phase; }
271 virtual double GetTimeConstant() const noexcept override { return TimeConstant; }
272 virtual void SetTimeConstant(double TimeConstant) noexcept override { this->TimeConstant = TimeConstant; }
273 virtual uint8_t GetFilterOrder() const noexcept override { return FilterOrder; }
274 virtual void SetFilterOrder(uint8_t FilterOrder) noexcept override { this->FilterOrder = FilterOrder; }
275 virtual LockinAmplifierDefs::TriggerModeType GetTriggerMode() const noexcept override { return TriggerMode; }
277 virtual LockinAmplifierDefs::TriggerEdgeType GetTriggerEdge() const noexcept override { return TriggerEdge; }
279 virtual LockinAmplifierDefs::SignalType GetSignalType() const noexcept override { return Signal; }
280 virtual void SetSignalType(LockinAmplifierDefs::SignalType SignalType) noexcept override { Signal = SignalType; }
281 virtual double GetSamplingRate() const noexcept override { return SamplingRate; }
282 virtual void SetSamplingRate(double SamplingRate) noexcept override { this->SamplingRate = SamplingRate; }
283 virtual bool IsEnabled() const noexcept override { return Enable; }
284 virtual void SetEnable(uint8_t Enable) noexcept override { this->Enable = Enable; }
285
286 virtual bool IsOverloaded() const noexcept override { return Overload; }
287 virtual std::pair<double, double> GetInputLoad() const noexcept override { return std::make_pair(NegInputLoad, PosInputLoad); }
288 virtual double GetOscillatorFrequency() const noexcept override { return OscillatorFrequency; }
289 virtual double GetAcquisitionProgress() const noexcept override { return AcquisitionProgress; }
290
292
293 private:
294 void ResetImpl(dispatch_tag<LockinAmplifierData>) override final;
296
297 // Reflecting parameters
298 double Sensitivity{};
299 double Phase{}; // in rad
300 double TimeConstant{}; // in s
301 uint8_t FilterOrder{};
305 double SamplingRate{}; // in samples/s
306 bool Enable{};
307
308 // Other
309 bool Overload{};
310 double NegInputLoad{};
311 double PosInputLoad{};
314
316 };
317
319 {
320 public:
322
324 virtual ~ZI_MFLIParams() = default;
325
326 virtual const char* GetParamClassTag() const noexcept override { return "ZI_MFLIParams"; }
327
329 "HardwareAdapter", "ZI LabOne instance", "Underlying hardware adapter of this instrument", DynExpUI::Icons::HardwareAdapter };
331 *this, SignalInputTypeStrList(), "SignalInput", "Input signal type",
332 "Determines which signal input to use", true, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType::Voltage };
333 Param<ParamsConfigDialog::NumberType> Demodulator = { *this, "Demodulator", "Demodulator",
334 "Demodulator of the lock-in amplifier to read out", true, 0, 0, std::numeric_limits<uint8_t>::max(), 1, 0 };
335 Param<ParamsConfigDialog::NumberType> TriggerChannel = { *this, "TriggerChannel", "Trigger channel",
336 "Trigger channel to use for external trigger modes", true, 1, 1, std::numeric_limits<uint8_t>::max(), 1, 0 };
337
338 private:
341 };
342
344 {
345 public:
348
350 virtual ~ZI_MFLIConfigurator() = default;
351
352 private:
353 virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore& Core) const override { return DynExp::MakeParams<ZI_MFLIConfigurator>(ID, Core); }
354 };
355
357 {
358 public:
362
363 constexpr static auto Name() noexcept { return "ZI MFLI"; }
364
365 ZI_MFLI(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType&& Params);
366 virtual ~ZI_MFLI() {}
367
368 virtual std::string GetName() const override { return Name(); }
369
370 // ZI MFLI does not like polling data too frequently...
371 virtual std::chrono::milliseconds GetTaskQueueDelay() const override { return std::chrono::milliseconds(200); }
372
373 // Further information about the instrument
375 virtual const char* GetSensitivityUnitString() const noexcept override { return SignalInput == DynExpHardware::ZILabOneHardwareAdapter::SignalInputType::Current ? "A" : "V"; }
376
377 virtual Util::OptionalBool HasFinished() const override;
378 virtual Util::OptionalBool IsRunning() const override;
379
380 // Tasks
381 virtual void ReadData(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::ReadTask>(SignalInput, UsedDemodulator, CallbackFunc); }
382 virtual void ClearData(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::ClearDataTask>(SignalInput, UsedDemodulator, CallbackFunc); }
383 virtual void Start(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::StartTask>(SignalInput, UsedDemodulator, CallbackFunc); }
384 virtual void Stop(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::StopTask>(SignalInput, UsedDemodulator, CallbackFunc); }
385
386 virtual void SetSensitivity(double Sensitivity, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetSensitivityTask>(Sensitivity, SignalInput, UsedDemodulator, CallbackFunc); }
387 virtual void AutoAdjustSensitivity(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::AutoAdjustSensitivityTask>(SignalInput, UsedDemodulator, CallbackFunc); }
388 virtual void SetPhase(double Phase, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetPhaseTask>(Phase, SignalInput, UsedDemodulator, CallbackFunc); }
389 virtual void AutoAdjustPhase(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::AutoAdjustPhaseTask>(SignalInput, UsedDemodulator, CallbackFunc); }
390 virtual void SetTimeConstant(double TimeConstant, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetTimeConstantTask>(TimeConstant, SignalInput, UsedDemodulator, CallbackFunc); }
391 virtual void SetFilterOrder(uint8_t FilterOrder, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetFilterOrderTask>(FilterOrder, SignalInput, UsedDemodulator, CallbackFunc); }
392 virtual void SetTriggerMode(LockinAmplifierDefs::TriggerModeType TriggerMode, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetTriggerModeTask>(TriggerMode, TriggerChannel, SignalInput, UsedDemodulator, CallbackFunc); }
393 virtual void SetTriggerEdge(LockinAmplifierDefs::TriggerEdgeType TriggerEdge, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetTriggerEdgeTask>(TriggerEdge, SignalInput, UsedDemodulator, CallbackFunc); }
394 virtual void SetSignalType(LockinAmplifierDefs::SignalType SignalType, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetSignalTypeTask>(SignalType, SignalInput, UsedDemodulator, CallbackFunc); }
395 virtual void SetSamplingRate(double SamplingRate, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetSamplingRateTask>(SamplingRate, SignalInput, UsedDemodulator, CallbackFunc); }
396 virtual void SetEnable(bool Enable, DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::SetEnableTask>(Enable, SignalInput, UsedDemodulator, CallbackFunc); }
397 virtual void ForceTrigger(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const override { MakeAndEnqueueTask<ZI_MFLITasks::ForceTriggerTask>(SignalInput, UsedDemodulator, CallbackFunc); }
398
399 private:
400 void ResetImpl(dispatch_tag<LockinAmplifier>) override final;
402
403 virtual void ApplyFromParamsImpl(dispatch_tag<LockinAmplifier>) const override;
404
405 virtual std::unique_ptr<DynExp::InitTaskBase> MakeInitTask() const override { return DynExp::MakeTask<ZI_MFLITasks::InitTask>(SignalInput, UsedDemodulator); }
406 virtual std::unique_ptr<DynExp::ExitTaskBase> MakeExitTask() const override { return DynExp::MakeTask<ZI_MFLITasks::ExitTask>(SignalInput, UsedDemodulator); }
407 virtual std::unique_ptr<DynExp::UpdateTaskBase> MakeUpdateTask() const override { return DynExp::MakeTask<ZI_MFLITasks::UpdateTask>(SignalInput, UsedDemodulator); }
408
409 // atomic since used in GetValueUnit().
410 std::atomic<DynExpHardware::ZILabOneHardwareAdapter::SignalInputType> SignalInput;
411
414 };
415}
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)
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.
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...
Definition ZI_MFLI.h:353
virtual ~ZI_MFLIConfigurator()=default
virtual void SetSamplingRate(double SamplingRate) noexcept override
Setter for the lock-in amplifier's sampling rate in samples/s.
Definition ZI_MFLI.h:282
LockinAmplifierDefs::SignalType Signal
Definition ZI_MFLI.h:304
virtual void SetTriggerMode(LockinAmplifierDefs::TriggerModeType TriggerMode) noexcept override
Setter for the lock-in amplifier's trigger mode.
Definition ZI_MFLI.h:276
LockinAmplifierDefs::TriggerModeType TriggerMode
Definition ZI_MFLI.h:302
size_t NumFailedStatusUpdateAttempts
Definition ZI_MFLI.h:315
virtual bool IsOverloaded() const noexcept override
Indicates whether the lock-in amplifier's physical signal input is overloaded by e....
Definition ZI_MFLI.h:286
virtual double GetOscillatorFrequency() const noexcept override
Indicates the oscillator frequency the lock-in amplifier demodulates the measured signal at.
Definition ZI_MFLI.h:288
virtual double GetSamplingRate() const noexcept override
Getter for the lock-in amplifier's sampling rate in samples/s.
Definition ZI_MFLI.h:281
virtual double GetSensitivity() const noexcept override
Getter for the lock-in amplifier's sensitivity/amplification setting.
Definition ZI_MFLI.h:267
virtual double GetTimeConstant() const noexcept override
Getter for the time constant in seconds of the lock-in amplifier's low-poss filter.
Definition ZI_MFLI.h:271
virtual LockinAmplifierDefs::SignalType GetSignalType() const noexcept override
Getter for the lock-in amplifier's signal coordinate type to write to the data stream.
Definition ZI_MFLI.h:279
virtual void SetTimeConstant(double TimeConstant) noexcept override
Setter for the time constant in seconds of the lock-in amplifier's low-poss filter.
Definition ZI_MFLI.h:272
virtual double GetAcquisitionProgress() const noexcept override
Determines the progress of the current data acquisition.
Definition ZI_MFLI.h:289
virtual void SetTriggerEdge(LockinAmplifierDefs::TriggerEdgeType TriggerEdge) noexcept override
Setter for the lock-in amplifier's trigger edge.
Definition ZI_MFLI.h:278
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...
Definition ZI_MFLI.h:287
virtual double GetPhase() const noexcept override
Getter for the phase in rad of the lock-in amplifier's demodulator.
Definition ZI_MFLI.h:269
void ResetImpl(dispatch_tag< LockinAmplifierData >) override final
Definition ZI_MFLI.cpp:242
virtual uint8_t GetFilterOrder() const noexcept override
Getter for the filter order/quality of the lock-in amplifier's low-poss filter.
Definition ZI_MFLI.h:273
virtual bool IsEnabled() const noexcept override
Returns true if the lock-in amplifier's demodulator is enabled, false otherwise.
Definition ZI_MFLI.h:283
virtual void ResetImpl(dispatch_tag< ZI_MFLIData >)
Definition ZI_MFLI.h:295
DynExp::LinkedObjectWrapperContainer< DynExpHardware::ZILabOneHardwareAdapter > HardwareAdapter
Definition ZI_MFLI.h:291
virtual ~ZI_MFLIData()=default
virtual LockinAmplifierDefs::TriggerModeType GetTriggerMode() const noexcept override
Getter for the lock-in amplifier's trigger mode.
Definition ZI_MFLI.h:275
virtual void SetFilterOrder(uint8_t FilterOrder) noexcept override
Setter for the filter order/quality of the lock-in amplifier's low-poss filter.
Definition ZI_MFLI.h:274
LockinAmplifierDefs::TriggerEdgeType TriggerEdge
Definition ZI_MFLI.h:303
virtual void SetSignalType(LockinAmplifierDefs::SignalType SignalType) noexcept override
Setter for the lock-in amplifier's signal coordinate type to write to the data stream.
Definition ZI_MFLI.h:280
virtual void SetPhase(double Phase) noexcept override
Setter for the phase in rad of the lock-in amplifier's demodulator.
Definition ZI_MFLI.h:270
ZI_MFLIData(size_t BufferSizeInSamples=1)
Definition ZI_MFLI.h:264
virtual void SetEnable(uint8_t Enable) noexcept override
Enables (pass true) or disables (pass false) the lock-in amplifier's demodulator.
Definition ZI_MFLI.h:284
virtual void SetSensitivity(double Sensitivity) noexcept override
Setter for the lock-in amplifier's sensitivity/amplification setting.
Definition ZI_MFLI.h:268
virtual LockinAmplifierDefs::TriggerEdgeType GetTriggerEdge() const noexcept override
Getter for the lock-in amplifier's trigger edge.
Definition ZI_MFLI.h:277
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...
Definition ZI_MFLI.h:326
void ConfigureParamsImpl(dispatch_tag< LockinAmplifierParams >) override final
Called by DynExp::ParamsBase::ConfigureParams() as a starting point for the tag dispatch mechanism to...
Definition ZI_MFLI.h:339
Param< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInput
Definition ZI_MFLI.h:330
ZI_MFLIParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
Definition ZI_MFLI.h:323
static Util::TextValueListType< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInputTypeStrList()
Definition ZI_MFLI.cpp:265
virtual ~ZI_MFLIParams()=default
Param< ParamsConfigDialog::NumberType > Demodulator
Definition ZI_MFLI.h:333
Param< ParamsConfigDialog::NumberType > TriggerChannel
Definition ZI_MFLI.h:335
Param< DynExp::ObjectLink< DynExpHardware::ZILabOneHardwareAdapter > > HardwareAdapter
Definition ZI_MFLI.h:328
virtual void ConfigureParamsImpl(dispatch_tag< ZI_MFLIParams >)
Definition ZI_MFLI.h:340
AutoAdjustPhaseTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:149
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...
Definition ZI_MFLI.cpp:161
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...
Definition ZI_MFLI.cpp:143
AutoAdjustSensitivityTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:126
ClearDataTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:83
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...
Definition ZI_MFLI.cpp:107
virtual void ExitFuncImpl(dispatch_tag< ExitTask >, DynExp::InstrumentInstance &Instance)
Definition ZI_MFLI.h:56
ExitTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
Definition ZI_MFLI.h:51
void ExitFuncImpl(dispatch_tag< LockinAmplifierTasks::ExitTask >, DynExp::InstrumentInstance &Instance) override final
Deinitializes the respective instrument within the instrument inheritance hierarchy....
Definition ZI_MFLI.cpp:20
ForceTriggerTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:251
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...
Definition ZI_MFLI.cpp:233
virtual void InitFuncImpl(dispatch_tag< InitTask >, DynExp::InstrumentInstance &Instance)
Definition ZI_MFLI.h:45
InitTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
Definition ZI_MFLI.h:40
void InitFuncImpl(dispatch_tag< LockinAmplifierTasks::InitTask >, DynExp::InstrumentInstance &Instance) override final
Initializes the respective instrument within the instrument inheritance hierarchy....
Definition ZI_MFLI.cpp:8
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...
Definition ZI_MFLI.cpp:94
ReadTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:73
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...
Definition ZI_MFLI.cpp:224
SetEnableTask(bool Enable, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:238
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...
Definition ZI_MFLI.cpp:179
SetFilterOrderTask(uint8_t FilterOrder, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:172
SetPhaseTask(double Phase, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:136
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...
Definition ZI_MFLI.cpp:152
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...
Definition ZI_MFLI.cpp:215
SetSamplingRateTask(double SamplingRate, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:225
SetSensitivityTask(double Sensitivity, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:113
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...
Definition ZI_MFLI.cpp:134
LockinAmplifierDefs::SignalType SignalType
Definition ZI_MFLI.h:219
SetSignalTypeTask(LockinAmplifierDefs::SignalType SignalType, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:212
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...
Definition ZI_MFLI.cpp:206
SetTimeConstantTask(double TimeConstant, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:159
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...
Definition ZI_MFLI.cpp:170
SetTriggerEdgeTask(LockinAmplifierDefs::TriggerEdgeType TriggerEdge, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:199
LockinAmplifierDefs::TriggerEdgeType TriggerEdge
Definition ZI_MFLI.h:206
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...
Definition ZI_MFLI.cpp:197
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...
Definition ZI_MFLI.cpp:188
LockinAmplifierDefs::TriggerModeType TriggerMode
Definition ZI_MFLI.h:192
SetTriggerModeTask(LockinAmplifierDefs::TriggerModeType TriggerMode, uint8_t TriggerChannel, DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:185
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...
Definition ZI_MFLI.cpp:116
StartTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:93
StopTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator, CallbackType CallbackFunc) noexcept
Definition ZI_MFLI.h:103
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...
Definition ZI_MFLI.cpp:125
virtual void UpdateFuncImpl(dispatch_tag< UpdateTask >, DynExp::InstrumentInstance &Instance)
Definition ZI_MFLI.h:67
UpdateTask(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
Definition ZI_MFLI.h:62
void UpdateFuncImpl(dispatch_tag< LockinAmplifierTasks::UpdateTask >, DynExp::InstrumentInstance &Instance) override final
Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() ...
Definition ZI_MFLI.cpp:40
ZI_MFLITaskBase(DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput, uint8_t UsedDemodulator) noexcept
Definition ZI_MFLI.h:25
auto GetUsedSignalInput() const noexcept
Definition ZI_MFLI.h:29
const DynExpHardware::ZILabOneHardwareAdapter::SignalInputType UsedSignalInput
Definition ZI_MFLI.h:33
auto GetUsedDemodulator() const noexcept
Definition ZI_MFLI.h:30
uint8_t UsedDemodulator
Definition ZI_MFLI.h:412
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...
Definition ZI_MFLI.h:407
virtual void SetPhase(double Phase, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the phase of the lock-in amplifier's demodulator.
Definition ZI_MFLI.h:388
virtual const char * GetSensitivityUnitString() const noexcept override
Determines the unit of the lock-in amplifier's sensitivity/amplification setting and returns a human-...
Definition ZI_MFLI.h:375
virtual void SetTriggerMode(LockinAmplifierDefs::TriggerModeType TriggerMode, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's trigger mode.
Definition ZI_MFLI.h:392
virtual void ClearData(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enqueues a task to clear the underlying hardware adapter's buffer.
Definition ZI_MFLI.h:382
virtual void SetEnable(bool Enable, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Enables or disables the lock-in amplifier's demodulator.
Definition ZI_MFLI.h:396
virtual std::chrono::milliseconds GetTaskQueueDelay() const override
Specifies in which time intervals the instrument's task queue runs to handle pending tasks.
Definition ZI_MFLI.h:371
uint8_t TriggerChannel
Definition ZI_MFLI.h:413
virtual void AutoAdjustPhase(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Makes the lock-in amplifier automatically set its demodulator's phase.
Definition ZI_MFLI.h:389
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.
Definition ZI_MFLI.h:391
virtual Util::OptionalBool HasFinished() const override
Determines whether the underlying hardware adapter finished data acquisition or writing data.
Definition ZI_MFLI.cpp:282
virtual void ForceTrigger(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Forces (starts) the data acquisition ignoring the trigger.
Definition ZI_MFLI.h:397
virtual void SetSamplingRate(double SamplingRate, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's sampling rate.
Definition ZI_MFLI.h:395
virtual void ApplyFromParamsImpl(dispatch_tag< LockinAmplifier >) const override
Refer to ApplyFromParams(). Using tag dispatch mechanism to ensure that ApplyFromParamsImpl() of ever...
Definition ZI_MFLI.cpp:307
virtual std::string GetName() const override
Returns the name of this Object type.
Definition ZI_MFLI.h:368
std::atomic< DynExpHardware::ZILabOneHardwareAdapter::SignalInputType > SignalInput
Definition ZI_MFLI.h:410
virtual void AutoAdjustSensitivity(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Makes the lock-in amplifier automatically set its sensitivity/amplification.
Definition ZI_MFLI.h:387
virtual std::unique_ptr< DynExp::InitTaskBase > MakeInitTask() const override
Factory function for an init task (InitTaskBase). Override to define the desired initialization task ...
Definition ZI_MFLI.h:405
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.
Definition ZI_MFLI.h:394
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.
Definition ZI_MFLI.h:383
static constexpr auto Name() noexcept
Definition ZI_MFLI.h:363
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.
Definition ZI_MFLI.h:384
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...
Definition ZI_MFLI.h:381
void ResetImpl(dispatch_tag< LockinAmplifier >) override final
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl() of every de...
Definition ZI_MFLI.cpp:294
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.
Definition ZI_MFLI.h:390
virtual std::unique_ptr< DynExp::ExitTaskBase > MakeExitTask() const override
Factory function for an exit task (ExitTaskBase). Override to define the desired deinitialization tas...
Definition ZI_MFLI.h:406
virtual void SetTriggerEdge(LockinAmplifierDefs::TriggerEdgeType TriggerEdge, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's trigger edge.
Definition ZI_MFLI.h:393
virtual void ResetImpl(dispatch_tag< ZI_MFLI >)
Definition ZI_MFLI.h:401
virtual ~ZI_MFLI()
Definition ZI_MFLI.h:366
virtual DataStreamInstrumentData::UnitType GetValueUnit() const noexcept override
Determines which unit corresponds to the values managed by this DataStreamInstrument instance....
Definition ZI_MFLI.h:374
virtual Util::OptionalBool IsRunning() const override
Determines whether the underlying hardware adapter is running a data acquisition or writing data.
Definition ZI_MFLI.cpp:289
virtual void SetSensitivity(double Sensitivity, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
Sets the lock-in amplifier's sensitivity/amplification.
Definition ZI_MFLI.h:386
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Definition DynExpCore.h:127
Refer to DynExp::ParamsBase::dispatch_tag.
Refer to DynExp::ParamsBase::dispatch_tag.
Refer to ParamsBase::dispatch_tag.
Definition Instrument.h:146
Defines data for a thread belonging to a InstrumentBase instance. Refer to RunnableInstance.
Definition Instrument.h:772
This class holds a pointer (LinkedObjectWrapperPointer) to a LinkedObjectWrapper. Intances of this cl...
Definition Object.h:3160
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
Definition Object.h:2302
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Definition Object.h:2303
Refer to ParamsBase::dispatch_tag.
Definition Object.h:2018
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
Definition Object.h:1677
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
Definition Object.h:1779
const DynExpCore & Core
Reference to DynExp's core.
Definition Object.h:1780
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Definition Object.h:349
Base class for all tasks being processed by instruments. The class must not contain public virtual fu...
Definition Instrument.h:892
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....
Definition Instrument.h:939
TaskBase(CallbackType CallbackFunc=nullptr) noexcept
Constructs an instrument task.
Definition Instrument.h:979
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.
Definition Instrument.h:824
Refer to DynExp::ParamsBase::dispatch_tag.
Data type which stores an optional bool value (unknown, false, true). The type evaluates to bool whil...
Definition Util.h:549
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.
Definition Object.h:1807
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.
Definition QtUtil.h:37
Accumulates include statements to provide a precompiled header.