4 #include "moc_Stage1D.cpp"
12 ui.SBPosition->blockSignals(
true);
15 this->addAction(
ui.action_Stop_current_action);
38 auto StageData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::PositionerStage>(
ModuleData->PositionerStage->GetInstrumentData());
40 ModuleData->Velocity = StageData->GetVelocity() *
ModuleData->PositionerStage->GetStepNanoMeterRatio();
41 ModuleData->Position = StageData->GetCurrentPosition() *
ModuleData->PositionerStage->GetStepNanoMeterRatio();
44 ModuleData->HasFailed = StageData->HasFailed();
64 auto Widget = std::make_unique<Stage1DWidget>(*
this);
84 auto Widget = GetWidget<Stage1DWidget>();
85 auto ModuleData = DynExp::dynamic_ModuleData_cast<Stage1D>(ModuleDataGetter());
87 if (!
Widget->ui.SBVelocity->hasFocus())
89 const QSignalBlocker Blocker(
Widget->ui.SBVelocity);
92 if (!
Widget->ui.SBPosition->hasFocus())
94 const QSignalBlocker Blocker(
Widget->ui.SBPosition);
104 Widget->ui.LVelocity->setText(
"Velocity (" + QString(
ModuleData->IsUsingSIUnits ?
"nm/s" :
"steps/s") +
")");
105 Widget->ui.SBVelocity->setMaximum(
ModuleData->PositionerStage->GetMaxVelocity());
106 Widget->ui.SBVelocity->setMinimum(
ModuleData->PositionerStage->GetMinVelocity());
107 Widget->ui.SBVelocity->setDecimals(0);
108 Widget->ui.SBVelocity->setValue(
ModuleData->PositionerStage->GetDefaultVelocity());
109 Widget->ui.LPosition->setText(
"Position (" + QString(
ModuleData->IsUsingSIUnits ?
"nm" :
"steps") +
")");
110 Widget->ui.SBPosition->setMaximum(
ModuleData->PositionerStage->GetMaxPosition());
111 Widget->ui.SBPosition->setMinimum(
ModuleData->PositionerStage->GetMinPosition());
112 Widget->ui.SBPosition->setDecimals(0);
115 Widget->ui.SBPosition->blockSignals(
false);
121 auto ModuleParams = DynExp::dynamic_Params_cast<Stage1D>(Instance->
ParamsGetter());
191 ModuleData->PositionerStage->SetVelocity(Value /
ModuleData->PositionerStage->GetStepNanoMeterRatio());
197 ModuleData->PositionerStage->MoveAbsolute(Value /
ModuleData->PositionerStage->GetStepNanoMeterRatio());
Implementation of a module to control a 1D positioner stage.
void ResetImpl(dispatch_tag< QModuleDataBase >) override final
void UpdateUIChild(const ModuleBase::ModuleDataGetterType &ModuleDataGetter) override final
void OnSetHomeClicked(DynExp::ModuleInstance *Instance, bool) const
void ResetImpl(dispatch_tag< QModuleBase >) override final
void OnMoveFirstClicked(DynExp::ModuleInstance *Instance, bool) const
std::unique_ptr< DynExp::QModuleWidget > MakeUIWidget() override final
Used by InitUI() as a factory function for the module's user interface widget. Create the widget here...
void OnVelocityValueChanged(DynExp::ModuleInstance *Instance, const double Value) const
void OnMoveLastClicked(DynExp::ModuleInstance *Instance, bool) const
void OnCalibrateClicked(DynExp::ModuleInstance *Instance, bool) const
void OnFindReferenceClicked(DynExp::ModuleInstance *Instance, bool) const
void OnStopClicked(DynExp::ModuleInstance *Instance, bool) const
void OnMoveRightClicked(DynExp::ModuleInstance *Instance, bool) const
void OnInit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread starts. Override it to lock instruments this m...
void OnExit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread terminates (not due to an exception,...
Util::DynExpErrorCodes::DynExpErrorCodes ModuleMainLoop(DynExp::ModuleInstance &Instance) override final
Module main loop. The function is executed periodically by the module thread. Also refer to GetMainLo...
void OnMoveLeftClicked(DynExp::ModuleInstance *Instance, bool) const
void OnPositionValueChanged(DynExp::ModuleInstance *Instance, const double Value) const
size_t NumFailedUpdateAttempts
void OnMoveHomeClicked(DynExp::ModuleInstance *Instance, bool) const
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
const ModuleBase::ModuleDataGetterType ModuleDataGetter
Getter for module's data. Refer to ModuleBase::ModuleDataGetterType.
Refer to ParamsBase::dispatch_tag.
QModuleWidget * Widget
User interface widget belonging to the module.
void Connect(SenderType *Sender, SignalType Signal, ReceiverType *Receiver, EventType Event)
Uses Qt's connect mechanism to connect a QObject's signal to a DynExp module's event....
const Object::ParamsGetterType ParamsGetter
Invoke to obtain the parameters (derived from ParamsBase) of Owner.
void UnlockObject(LinkedObjectWrapperContainer< ObjectT > &ObjectWrapperContainer)
Unlocks an Object instance stored in the LinkedObjectWrapperContainer ObjectWrapperContainer....
void LockObject(const ParamsBase::Param< ObjectLink< ObjectT >> &LinkParam, LinkedObjectWrapperContainer< ObjectT > &ObjectWrapperContainer, std::chrono::milliseconds Timeout=ObjectLinkBase::LockObjectTimeoutDefault)
Locks an Object instance referenced by a parameter LinkParam of type ParamsBase::Param< ObjectLink< O...
const auto & GetOwner() const noexcept
Returns Owner.
Thrown when an operation timed out before it could be completed, especially used for locking shared d...
DynExp's module namespace contains the implementation of DynExp modules which extend DynExp's core fu...
DynExpErrorCodes
DynExp's error codes
Accumulates include statements to provide a precompiled header.