FFT works but NOT for DS6000 series AND only with units set to "dB".

merge-requests/1/head
Teuniz 2016-01-09 10:31:17 +01:00
rodzic e03c4f2174
commit f9f837a9b9
5 zmienionych plików z 297 dodań i 49 usunięć

Wyświetl plik

@ -35,7 +35,7 @@
#define PROGRAM_NAME "DSRemote"
#define PROGRAM_VERSION "0.31_1601082135"
#define PROGRAM_VERSION "0.31_1601091030"
#define MAX_PATHLEN 4096

Wyświetl plik

@ -3293,6 +3293,11 @@ void UI_Mainwindow::toggle_fft_unit()
void UI_Mainwindow::select_fft_ch1()
{
if(devparms.modelserie != 6)
{
set_cue_cmd(":MATH:SOUR1 CHAN1");
}
devparms.math_fft_src = 0;
statusLabel->setText("FFT source: CH1");
@ -3301,6 +3306,11 @@ void UI_Mainwindow::select_fft_ch1()
void UI_Mainwindow::select_fft_ch2()
{
if(devparms.modelserie != 6)
{
set_cue_cmd(":MATH:SOUR1 CHAN2");
}
devparms.math_fft_src = 1;
statusLabel->setText("FFT source: CH2");
@ -3309,6 +3319,11 @@ void UI_Mainwindow::select_fft_ch2()
void UI_Mainwindow::select_fft_ch3()
{
if(devparms.modelserie != 6)
{
set_cue_cmd(":MATH:SOUR1 CHAN3");
}
devparms.math_fft_src = 2;
statusLabel->setText("FFT source: CH3");
@ -3317,6 +3332,11 @@ void UI_Mainwindow::select_fft_ch3()
void UI_Mainwindow::select_fft_ch4()
{
if(devparms.modelserie != 6)
{
set_cue_cmd(":MATH:SOUR1 CHAN4");
}
devparms.math_fft_src = 3;
statusLabel->setText("FFT source: CH4");
@ -3723,6 +3743,8 @@ void UI_Mainwindow::select_fft_ctr_12()
void UI_Mainwindow::select_fft_vscale2()
{
char str[512];
devparms.fft_vscale = 2.0;
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3735,12 +3757,23 @@ void UI_Mainwindow::select_fft_vscale2()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
statusLabel->setText("FFT scale: 2dB/Div");
waveForm->update();
}
void UI_Mainwindow::select_fft_vscale5()
{
char str[512];
devparms.fft_vscale = 5.0;
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3753,12 +3786,23 @@ void UI_Mainwindow::select_fft_vscale5()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
statusLabel->setText("FFT scale: 5dB/Div");
waveForm->update();
}
void UI_Mainwindow::select_fft_vscale10()
{
char str[512];
devparms.fft_vscale = 10.0;
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3771,12 +3815,23 @@ void UI_Mainwindow::select_fft_vscale10()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
statusLabel->setText("FFT scale: 10dB/Div");
waveForm->update();
}
void UI_Mainwindow::select_fft_vscale20()
{
char str[512];
devparms.fft_vscale = 20.0;
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3789,7 +3844,16 @@ void UI_Mainwindow::select_fft_vscale20()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
statusLabel->setText("FFT scale: 20dB/Div");
waveForm->update();
}
@ -3799,9 +3863,22 @@ void UI_Mainwindow::select_fft_voffsetp4()
devparms.fft_voffset = devparms.fft_vscale * 4.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3811,9 +3888,22 @@ void UI_Mainwindow::select_fft_voffsetp3()
devparms.fft_voffset = devparms.fft_vscale * 3.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3823,9 +3913,22 @@ void UI_Mainwindow::select_fft_voffsetp2()
devparms.fft_voffset = devparms.fft_vscale * 2.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3835,9 +3938,22 @@ void UI_Mainwindow::select_fft_voffsetp1()
devparms.fft_voffset = devparms.fft_vscale;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3847,9 +3963,22 @@ void UI_Mainwindow::select_fft_voffset0()
devparms.fft_voffset = 0.0;
sprintf(str, "FFT offset: %.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3859,9 +3988,22 @@ void UI_Mainwindow::select_fft_voffsetm1()
devparms.fft_voffset = devparms.fft_vscale * -1.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3871,9 +4013,22 @@ void UI_Mainwindow::select_fft_voffsetm2()
devparms.fft_voffset = devparms.fft_vscale * -2.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3883,9 +4038,22 @@ void UI_Mainwindow::select_fft_voffsetm3()
devparms.fft_voffset = devparms.fft_vscale * -3.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}
@ -3895,9 +4063,22 @@ void UI_Mainwindow::select_fft_voffsetm4()
devparms.fft_voffset = devparms.fft_vscale * -4.0;
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
waveForm->label_active = LABEL_ACTIVE_FFT;
label_timer->start(LABEL_TIMER_IVAL);
waveForm->update();
}

Wyświetl plik

@ -1842,6 +1842,10 @@ int UI_Mainwindow::get_device_settings()
{
devparms.math_fft_src = 3;
}
else
{
devparms.math_fft_src = 0;
}
usleep(TMC_GDS_DELAY);
@ -1919,6 +1923,25 @@ int UI_Mainwindow::get_device_settings()
devparms.math_fft_hcenter = atof(device->buf);
usleep(TMC_GDS_DELAY);
if(devparms.modelserie != 6)
{
if(tmc_write(":MATH:OFFS?") != 11)
{
line = __LINE__;
goto OUT_ERROR;
}
if(tmc_read() < 1)
{
line = __LINE__;
goto OUT_ERROR;
}
devparms.fft_voffset = atof(device->buf);
}
QApplication::restoreOverrideCursor();
return 0;
@ -2756,6 +2779,11 @@ void UI_Mainwindow::zoom_in()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.modelserie == 6)
@ -2920,6 +2948,11 @@ void UI_Mainwindow::zoom_out()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.modelserie == 6)
@ -2962,11 +2995,6 @@ void UI_Mainwindow::zoom_out()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.timebasedelayenable)
{
if(devparms.timebasedelayscale >= devparms.timebasescale / 2)
@ -3047,6 +3075,11 @@ void UI_Mainwindow::chan_scale_plus()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.math_fft_unit == 1)
@ -3057,10 +3090,6 @@ void UI_Mainwindow::chan_scale_plus()
{
devparms.fft_vscale = 20.0;
}
sprintf(str, "FFT scale: %.1fdB/Div", devparms.fft_vscale);
statusLabel->setText(str);
}
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3073,16 +3102,22 @@ void UI_Mainwindow::chan_scale_plus()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
sprintf(str, "FFT scale: %.1fdB/Div", devparms.fft_vscale);
statusLabel->setText(str);
waveForm->update();
return;
}
if(devparms.activechannel < 0)
{
return;
}
chn = devparms.activechannel;
if(devparms.chanscale[chn] >= 20)
@ -3143,6 +3178,11 @@ void UI_Mainwindow::shift_trace_up()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
devparms.fft_voffset += devparms.fft_vscale;
@ -3152,7 +3192,14 @@ void UI_Mainwindow::shift_trace_up()
devparms.fft_voffset = (devparms.fft_vscale * 4.0);
}
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
@ -3165,11 +3212,6 @@ void UI_Mainwindow::shift_trace_up()
return;
}
if(devparms.activechannel < 0)
{
return;
}
chn = devparms.activechannel;
if(devparms.chanoffset[chn] >= 20)
@ -3215,6 +3257,11 @@ void UI_Mainwindow::shift_trace_down()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
devparms.fft_voffset -= devparms.fft_vscale;
@ -3224,7 +3271,14 @@ void UI_Mainwindow::shift_trace_down()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
sprintf(str, "FFT offset: %+.0fdB", devparms.fft_voffset);
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms.fft_voffset);
set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms.fft_voffset);
statusLabel->setText(str);
@ -3237,11 +3291,6 @@ void UI_Mainwindow::shift_trace_down()
return;
}
if(devparms.activechannel < 0)
{
return;
}
chn = devparms.activechannel;
if(devparms.chanoffset[chn] <= -20)
@ -3289,6 +3338,11 @@ void UI_Mainwindow::chan_scale_minus()
return;
}
if(devparms.activechannel < 0)
{
return;
}
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.math_fft_unit == 1)
@ -3299,10 +3353,6 @@ void UI_Mainwindow::chan_scale_minus()
{
devparms.fft_vscale = 2.0;
}
sprintf(str, "FFT scale: %.1fdB/Div", devparms.fft_vscale);
statusLabel->setText(str);
}
if(devparms.fft_voffset > (devparms.fft_vscale * 4.0))
@ -3315,16 +3365,22 @@ void UI_Mainwindow::chan_scale_minus()
devparms.fft_voffset = (devparms.fft_vscale * -4.0);
}
if(devparms.modelserie != 6)
{
sprintf(str, ":MATH:SCAL %e", devparms.fft_vscale);
set_cue_cmd(str);
}
sprintf(str, "FFT scale: %.1fdB/Div", devparms.fft_vscale);
statusLabel->setText(str);
waveForm->update();
return;
}
if(devparms.activechannel < 0)
{
return;
}
chn = devparms.activechannel;
if(devparms.chanscale[chn] <= 1e-2)

Wyświetl plik

@ -570,7 +570,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
if(label_active == LABEL_ACTIVE_FFT)
{
sprintf(str, "%.1fdB", devparms->fft_voffset);
sprintf(str, "POS: %.1fdB", devparms->fft_voffset);
paintLabel(painter, 20, curve_h * 1.85 - 50.0, 100, 20, str, QColor(128, 64, 255));
}
@ -1703,6 +1703,17 @@ void SignalCurve::mouseReleaseEvent(QMouseEvent *release_event)
mainwindow->scrn_timer->start(devparms->screentimerival);
}
if(devparms->modelserie != 6)
{
sprintf(str, ":MATH:OFFS %e", devparms->fft_voffset);
mainwindow->set_cue_cmd(str);
}
sprintf(str, "FFT position: %+.0fdB", devparms->fft_voffset);
mainwindow->statusLabel->setText(str);
update();
return;

Wyświetl plik

@ -1906,13 +1906,13 @@ int strtoipaddr(unsigned int *dest, const char *src)
int dblcmp(double val1, double val2)
{
double diff = val1 - val2;
long double diff = (long double)val1 - (long double)val2;
if(diff > 1e-9)
if(diff > 1e-13)
{
return 1;
}
else if(-diff > 1e-9)
else if(-diff > 1e-13)
{
return -1;
}