Set full span behavior in preferences

This commit is contained in:
Jan Käberich 2022-10-29 19:32:16 +02:00
parent 6552100775
commit 1fcf25d060
5 changed files with 120 additions and 10 deletions

View File

@ -627,8 +627,14 @@ void SpectrumAnalyzer::SetSpan(double span)
void SpectrumAnalyzer::SetFullSpan() void SpectrumAnalyzer::SetFullSpan()
{ {
settings.freqStart = VirtualDevice::getInfo(window->getDevice()).Limits.minFreq; auto &pref = Preferences::getInstance();
settings.freqStop = VirtualDevice::getInfo(window->getDevice()).Limits.maxFreq; if(pref.Acquisition.fullSpanManual) {
settings.freqStart = pref.Acquisition.fullSpanStart;
settings.freqStop = pref.Acquisition.fullSpanStop;
} else {
settings.freqStart = VirtualDevice::getInfo(window->getDevice()).Limits.minFreq;
settings.freqStop = VirtualDevice::getInfo(window->getDevice()).Limits.maxFreq;
}
ConstrainAndUpdateFrequencies(); ConstrainAndUpdateFrequencies();
} }

View File

@ -1018,8 +1018,20 @@ void VNA::SetSpan(double span)
void VNA::SetFullSpan() void VNA::SetFullSpan()
{ {
settings.Freq.start = VirtualDevice::getInfo(window->getDevice()).Limits.minFreq; auto &pref = Preferences::getInstance();
settings.Freq.stop = VirtualDevice::getInfo(window->getDevice()).Limits.maxFreq; if(pref.Acquisition.fullSpanCalibratedRange && cal.getNumPoints() > 0) {
// calibration is active, use it as the full span range
settings.Freq.start = cal.getMinFreq();
settings.Freq.stop = cal.getMaxFreq();
} else {
if(pref.Acquisition.fullSpanManual) {
settings.Freq.start = pref.Acquisition.fullSpanStart;
settings.Freq.stop = pref.Acquisition.fullSpanStop;
} else {
settings.Freq.start = VirtualDevice::getInfo(window->getDevice()).Limits.minFreq;
settings.Freq.stop = VirtualDevice::getInfo(window->getDevice()).Limits.maxFreq;
}
}
ConstrainAndUpdateFrequencies(); ConstrainAndUpdateFrequencies();
} }

View File

@ -103,6 +103,14 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
ui->AcquisitionIF2->setUnit("Hz"); ui->AcquisitionIF2->setUnit("Hz");
ui->AcquisitionIF2->setPrefixes(" kM"); ui->AcquisitionIF2->setPrefixes(" kM");
ui->AcquisitionIF2->setPrecision(6); ui->AcquisitionIF2->setPrecision(6);
ui->AcquisitionFullSpanStart->setUnit("Hz");
ui->AcquisitionFullSpanStart->setPrefixes(" kMG");
ui->AcquisitionFullSpanStart->setPrecision(6);
ui->AcquisitionFullSpanStart->setEnabled(false);
ui->AcquisitionFullSpanStop->setUnit("Hz");
ui->AcquisitionFullSpanStop->setPrefixes(" kMG");
ui->AcquisitionFullSpanStop->setPrecision(6);
ui->AcquisitionFullSpanStop->setEnabled(false);
auto updateADCRate = [=]() { auto updateADCRate = [=]() {
// update ADC rate, see FPGA protocol for calculation // update ADC rate, see FPGA protocol for calculation
ui->AcquisitionADCRate->setValue(102400000.0 / ui->AcquisitionADCpresc->value()); ui->AcquisitionADCRate->setValue(102400000.0 / ui->AcquisitionADCpresc->value());
@ -115,6 +123,11 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
connect(ui->AcquisitionADCpresc, qOverload<int>(&QSpinBox::valueChanged), updateIF2); connect(ui->AcquisitionADCpresc, qOverload<int>(&QSpinBox::valueChanged), updateIF2);
connect(ui->AcquisitionADCphaseInc, qOverload<int>(&QSpinBox::valueChanged), updateIF2); connect(ui->AcquisitionADCphaseInc, qOverload<int>(&QSpinBox::valueChanged), updateIF2);
connect(ui->AcquisitionFullSpanBehavior, qOverload<int>(&QComboBox::currentIndexChanged), [=](){
ui->AcquisitionFullSpanStart->setEnabled(ui->AcquisitionFullSpanBehavior->currentIndex() == 1);
ui->AcquisitionFullSpanStop->setEnabled(ui->AcquisitionFullSpanBehavior->currentIndex() == 1);
});
// Graph page // Graph page
ui->GraphsZoomFactor->setPrecision(3); ui->GraphsZoomFactor->setPrecision(3);
@ -294,6 +307,10 @@ void PreferencesDialog::setInitialGUIState()
ui->AcquisitionIF1->setValue(p->Acquisition.IF1); ui->AcquisitionIF1->setValue(p->Acquisition.IF1);
ui->AcquisitionADCpresc->setValue(p->Acquisition.ADCprescaler); ui->AcquisitionADCpresc->setValue(p->Acquisition.ADCprescaler);
ui->AcquisitionADCphaseInc->setValue(p->Acquisition.DFTPhaseInc); ui->AcquisitionADCphaseInc->setValue(p->Acquisition.DFTPhaseInc);
ui->AcquisitionFullSpanBehavior->setCurrentIndex(p->Acquisition.fullSpanManual ? 1 : 0);
ui->AcquisitionFullSpanStart->setValue(p->Acquisition.fullSpanStart);
ui->AcquisitionFullSpanStop->setValue(p->Acquisition.fullSpanStop);
ui->AcquisitionFullSpanCalibrated->setChecked(p->Acquisition.fullSpanCalibratedRange);
ui->GraphsShowUnit->setChecked(p->Graphs.showUnits); ui->GraphsShowUnit->setChecked(p->Graphs.showUnits);
ui->GraphsColorBackground->setColor(p->Graphs.Color.background); ui->GraphsColorBackground->setColor(p->Graphs.Color.background);
@ -367,6 +384,10 @@ void PreferencesDialog::updateFromGUI()
p->Acquisition.IF1 = ui->AcquisitionIF1->value(); p->Acquisition.IF1 = ui->AcquisitionIF1->value();
p->Acquisition.ADCprescaler = ui->AcquisitionADCpresc->value(); p->Acquisition.ADCprescaler = ui->AcquisitionADCpresc->value();
p->Acquisition.DFTPhaseInc = ui->AcquisitionADCphaseInc->value(); p->Acquisition.DFTPhaseInc = ui->AcquisitionADCphaseInc->value();
p->Acquisition.fullSpanManual = ui->AcquisitionFullSpanBehavior->currentIndex() == 1;
p->Acquisition.fullSpanStart = ui->AcquisitionFullSpanStart->value();
p->Acquisition.fullSpanStop = ui->AcquisitionFullSpanStop->value();
p->Acquisition.fullSpanCalibratedRange = ui->AcquisitionFullSpanCalibrated->isChecked();
p->Graphs.showUnits = ui->GraphsShowUnit->isChecked(); p->Graphs.showUnits = ui->GraphsShowUnit->isChecked();
p->Graphs.Color.background = ui->GraphsColorBackground->getColor(); p->Graphs.Color.background = ui->GraphsColorBackground->getColor();

View File

@ -106,6 +106,12 @@ public:
double IF1; double IF1;
int ADCprescaler; int ADCprescaler;
int DFTPhaseInc; int DFTPhaseInc;
// Full span settings
bool fullSpanManual;
double fullSpanStart;
double fullSpanStop;
bool fullSpanCalibratedRange;
} Acquisition; } Acquisition;
struct { struct {
bool showUnits; bool showUnits;
@ -201,6 +207,10 @@ private:
{&Acquisition.IF1, "Acquisition.IF1", 62000000}, {&Acquisition.IF1, "Acquisition.IF1", 62000000},
{&Acquisition.ADCprescaler, "Acquisition.ADCprescaler", 128}, {&Acquisition.ADCprescaler, "Acquisition.ADCprescaler", 128},
{&Acquisition.DFTPhaseInc, "Acquisition.DFTPhaseInc", 1280}, {&Acquisition.DFTPhaseInc, "Acquisition.DFTPhaseInc", 1280},
{&Acquisition.fullSpanManual, "Acquisition.fullSpanManual", false},
{&Acquisition.fullSpanStart, "Acquisition.fullSpanStart", 0.0},
{&Acquisition.fullSpanStop, "Acquisition.fullSpanStop", 6000000000.0},
{&Acquisition.fullSpanCalibratedRange, "Acquisition.fullSpanCalibratedRange", false},
{&Graphs.showUnits, "Graphs.showUnits", true}, {&Graphs.showUnits, "Graphs.showUnits", true},
{&Graphs.Color.background, "Graphs.Color.background", QColor(Qt::black)}, {&Graphs.Color.background, "Graphs.Color.background", QColor(Qt::black)},
{&Graphs.Color.axis, "Graphs.Color.axis", QColor(Qt::white)}, {&Graphs.Color.axis, "Graphs.Color.axis", QColor(Qt::white)},

View File

@ -82,9 +82,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>-334</y>
<width>684</width> <width>687</width>
<height>854</height> <height>938</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_12"> <layout class="QHBoxLayout" name="horizontalLayout_12">
@ -103,7 +103,7 @@
</size> </size>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>2</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="Startup"> <widget class="QWidget" name="Startup">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
@ -701,7 +701,7 @@
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="Acquisition"> <widget class="QWidget" name="Acquisition">
<layout class="QVBoxLayout" name="verticalLayout_15"> <layout class="QVBoxLayout" name="verticalLayout_20">
<item> <item>
<widget class="QGroupBox" name="groupBox_6"> <widget class="QGroupBox" name="groupBox_6">
<property name="title"> <property name="title">
@ -786,7 +786,7 @@
<property name="title"> <property name="title">
<string>Common</string> <string>Common</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_14"> <layout class="QVBoxLayout" name="verticalLayout_15">
<item> <item>
<layout class="QFormLayout" name="formLayout_10"> <layout class="QFormLayout" name="formLayout_10">
<item row="0" column="0"> <item row="0" column="0">
@ -923,6 +923,67 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox_19">
<property name="title">
<string>Full Span</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_14">
<item>
<layout class="QFormLayout" name="formLayout_14">
<item row="0" column="0">
<widget class="QLabel" name="label_48">
<property name="text">
<string>Behavior:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="AcquisitionFullSpanBehavior">
<item>
<property name="text">
<string>Use maximum possible span as advertised by device</string>
</property>
</item>
<item>
<property name="text">
<string>Use manually defined full span</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_49">
<property name="text">
<string>Start frequency:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="SIUnitEdit" name="AcquisitionFullSpanStart"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_50">
<property name="text">
<string>Stop frequency:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="SIUnitEdit" name="AcquisitionFullSpanStop"/>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="AcquisitionFullSpanCalibrated">
<property name="text">
<string>Use calibrated range as full span when calibrated</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>