39 connect(
ui->ODMRGraph, &QQuickWidget::statusChanged, [
this](QQuickWidget::Status Status) {
40 if (Status == QQuickWidget::Status::Ready && ui->ODMRGraph->rootObject())
42 auto BackendVariant = ui->ODMRGraph->rootObject()->property(
"backend");
43 ODMRGraph = BackendVariant.isValid() ? BackendVariant.value<DynExpQuick::DynExpLineGraphBackend*>() : nullptr;
47 ODMRGraph->InsertSeries(
"meas");
48 ODMRGraph->InsertSeries(
"fit");
52 ui->ODMRGraph->loadFromModule(
"Modules.DynExpQuick",
"QDynExpLineGraph");
55 connect(ui->SensitivityGraph, &QQuickWidget::statusChanged, [
this](QQuickWidget::Status Status) {
56 if (Status == QQuickWidget::Status::Ready && ui->SensitivityGraph->rootObject())
58 auto BackendVariant = ui->SensitivityGraph->rootObject()->property(
"backend");
59 SensitivityGraph = BackendVariant.isValid() ? BackendVariant.value<DynExpQuick::DynExpLineGraphBackend*>() : nullptr;
62 SensitivityGraph->InsertSeries(
"noise");
65 ui->SensitivityGraph->loadFromModule(
"Modules.DynExpQuick",
"QDynExpLineGraph");
67 connect(ui->CBParamSweepType, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &ODMRWidget::OnSweepSeriesParamChanged);
72 if (!GetUIInitialized())
74 ui->SBRFPower->setValue(ModuleData->RFPower);
75 ui->SBRFCenter->setValue(ModuleData->RFCenterFreq / 1e6);
76 ui->SBRFSpan->setValue(ModuleData->RFFreqSpan / 1e6);
77 ui->SBRFFreqSpacing->setValue(ModuleData->RFFreqSpacing / 1e3);
78 ui->SBRFDwellTime->setValue(ModuleData->RFDwellTime / 1e-3);
79 ui->RBRFModulationTypeNone->setChecked(
true);
80 ui->SBRFModulationFreq->setValue(ModuleData->RFModulationFreq / 1e3);
81 ui->SBRFModulationDepth->setValue(ModuleData->RFModulationDepth / 1e3);
82 ui->SBDataAcquisitionODMRSamplingRate->setValue(ModuleData->ODMRSamplingRate);
83 ui->LESaveDataPath->setText(QString::fromStdString(ModuleData->SaveDataPath));
84 ui->SBSaveDataCurrentIndex->setValue(ModuleData->CurrentSaveIndex);
85 ui->CBSaveDataEnable->setChecked(ModuleData->AutosaveEnabled);
86 ui->CBSensitivityEnable->setChecked(ModuleData->SensitivityEnabled);
87 ui->CBSensitivityOncePerSweep->setChecked(ModuleData->SensitivityOncePerSweep);
88 ui->CBSensitivityOffResEnable->setChecked(ModuleData->SensitivityOffResonanceEnabled);
89 ui->SBSensitivityFreq->setValue(ModuleData->SensitivityResonanceFreq / 1e6);
90 ui->SBSensitivityOffResFreq->setValue(ModuleData->SensitivityOffResonanceFreq / 1e6);
91 ui->SBSensitivitySpan->setValue(ModuleData->SensitivityResonanceSpan / 1e6);
92 ui->SBSensitivitySamplingRate->setValue(ModuleData->SensitivitySamplingRate);
93 ui->SBSensitivityDuration->setValue(ModuleData->SensitivityDuration);
94 ui->GBSensitivityAnalysis->setChecked(ModuleData->SensitivityAnalysisEnabled);
95 ui->SBGyromagneticRatio->setValue(ModuleData->GyromagneticRatio / 1e6);
96 ui->CBParamSweepEnable->setChecked(ModuleData->SweepSeriesEnabled);
97 if (ModuleData->TestFeature(ODMRData::FeatureType::AuxAnalogOut))
98 ui->CBParamSweepType->insertItem(ui->CBParamSweepType->count(),
"Auxiliary analog out");
99 ui->CBParamSweepType->setCurrentIndex(0);
100 ui->SBParamSweepStart->setValue(ModuleData->SweepSeriesStart);
101 ui->SBParamSweepStop->setValue(ModuleData->SweepSeriesStop);
102 ui->SBParamSweepStep->setValue(ModuleData->SweepSeriesStep);
103 ui->CBParamSweepRetrace->setChecked(ModuleData->SweepSeriesRetrace);
104 ui->CBParamSweepAdvanceLastValue->setChecked(ModuleData->SweepSeriesAdvanceLastValue);
106 ui->SBRFPower->setMinimum(ModuleData->RFGeneratorMinFuncDesc.Amplitude);
107 ui->SBRFPower->setMaximum(ModuleData->RFGeneratorMaxFuncDesc.Amplitude);
108 ui->SBRFPower->setValue(ModuleData->RFGeneratorDefaultFuncDesc.Amplitude);
109 ui->SBRFPower->setSuffix(QString(
" ") + ModuleData->GetRFGenerator()->GetValueUnitStr());
110 ui->SBRFCenter->setMinimum(ModuleData->RFGeneratorMinFuncDesc.FrequencyInHz / 1e6);
111 ui->SBRFCenter->setMaximum(ModuleData->RFGeneratorMaxFuncDesc.FrequencyInHz / 1e6);
112 ui->SBRFCenter->setValue(ModuleData->RFGeneratorDefaultFuncDesc.FrequencyInHz / 1e6);
113 ui->SBSensitivityFreq->setMinimum(ModuleData->RFGeneratorMinFuncDesc.FrequencyInHz / 1e6);
114 ui->SBSensitivityFreq->setMaximum(ModuleData->RFGeneratorMaxFuncDesc.FrequencyInHz / 1e6);
115 ui->SBSensitivityFreq->setValue(ModuleData->RFGeneratorDefaultFuncDesc.FrequencyInHz / 1e6);
117 ui->SBDataAcquisitionODMRSamplingRate->setEnabled(ModuleData->TestFeature(ODMRData::FeatureType::LockinDetection));
118 ui->SBSensitivitySamplingRate->setEnabled(ModuleData->TestFeature(ODMRData::FeatureType::LockinDetection));
119 ui->SBSensitivityDuration->setEnabled(ModuleData->TestFeature(ODMRData::FeatureType::LockinDetection));
123 OnSweepSeriesParamChanged(ui->CBParamSweepType->currentIndex());
125 AuxAnalogOutValueUnit = ModuleData->AuxAnalogOutValueUnit;
126 AuxAnalogOutMinValue = ModuleData->AuxAnalogOutMinValue;
127 AuxAnalogOutMaxValue = ModuleData->AuxAnalogOutMaxValue;
129 UIInitialized =
true;
135 bool IsReady = State->
GetState() == StateType::Ready;
136 StatusBar.CurrentState = State;
138 StatusBar.AcquisitionTimeLabel->setText((IsReady || ModuleData->AcquisitionTime <= 0) ?
"" : QString::fromStdString(
"Acquisition time: " +
Util::ToStr(ModuleData->AcquisitionTime, 2) +
" s"));
139 StatusBar.SweepStateLabel->setText(IsReady ?
"" : (!ModuleData->GetSweepNumberSteps() ?
"single run" :
140 (QString(
"Sweep ") + QString::number(ModuleData->CurrentSweepIndex + 1) +
" / " + QString::number(ModuleData->GetSweepNumberSteps()))));
142 ui->GBRFSweep->setEnabled(IsReady);
143 ui->GBRFModulation->setEnabled(IsReady);
144 ui->GBDataAcquisition->setEnabled(IsReady);
145 ui->GBSaveData->setEnabled(IsReady);
146 ui->GBSensitivity->setEnabled(IsReady);
147 ui->GBSensitivityAnalysis->setEnabled(IsReady);
148 ui->GBParamSweep->setEnabled(IsReady);
149 ui->BStart->setEnabled(IsReady);
150 ui->BStartSensitivity->setEnabled(IsReady);
151 ui->BStop->setEnabled(!IsReady);
207 void ODMRWidget::OnSweepSeriesParamChanged(
int Index)
209 QDoubleSpinBox* Destiny =
nullptr;
216 Destiny = ui->SBRFModulationDepth;
219 Destiny = ui->SBRFPower;
225 ui->SBParamSweepStart->setMinimum(Destiny->minimum());
226 ui->SBParamSweepStart->setMaximum(Destiny->maximum());
227 ui->SBParamSweepStart->setSuffix(Destiny->suffix());
228 ui->SBParamSweepStop->setMinimum(Destiny->minimum());
229 ui->SBParamSweepStop->setMaximum(Destiny->maximum());
230 ui->SBParamSweepStop->setSuffix(Destiny->suffix());
231 ui->SBParamSweepStep->setMinimum(Destiny->minimum());
232 ui->SBParamSweepStep->setMaximum(Destiny->maximum());
233 ui->SBParamSweepStep->setSuffix(Destiny->suffix());
238 ui->SBParamSweepStart->setMinimum(AuxAnalogOutMinValue);
239 ui->SBParamSweepStart->setMaximum(AuxAnalogOutMaxValue);
241 ui->SBParamSweepStop->setMinimum(AuxAnalogOutMinValue);
242 ui->SBParamSweepStop->setMaximum(AuxAnalogOutMaxValue);
243 ui->SBParamSweepStop->setSuffix(ui->SBParamSweepStart->suffix());
244 ui->SBParamSweepStep->setMinimum(AuxAnalogOutMinValue);
245 ui->SBParamSweepStep->setMaximum(AuxAnalogOutMaxValue);
246 ui->SBParamSweepStep->setSuffix(ui->SBParamSweepStart->suffix());