Work in progress.

merge-requests/1/head
Teuniz 2016-01-12 16:56:25 +01:00
rodzic f23ea8d06f
commit 9a8560ef95
7 zmienionych plików z 113 dodań i 237 usunięć

Wyświetl plik

@ -35,7 +35,7 @@
#define PROGRAM_NAME "DSRemote"
#define PROGRAM_VERSION "0.32_1601121350"
#define PROGRAM_VERSION "0.32_1601121654"
#define MAX_PATHLEN 4096

Wyświetl plik

@ -2243,20 +2243,20 @@ void UI_Mainwindow::math_menu()
}
submenuffthzdiv.setTitle("Hz/Div");
if(devparms.modelserie == 6)
{
convert_to_metric_suffix(str, val / 40.0 , 2);
strcat(str, "Hz/Div");
submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_40()));
convert_to_metric_suffix(str, val / 80.0 , 2);
strcat(str, "Hz/Div");
submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_80()));
convert_to_metric_suffix(str, val / 200.0 , 2);
strcat(str, "Hz/Div");
submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_200()));
}
else
{
// if(devparms.modelserie == 6)
// {
// convert_to_metric_suffix(str, val / 40.0 , 2);
// strcat(str, "Hz/Div");
// submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_40()));
// convert_to_metric_suffix(str, val / 80.0 , 2);
// strcat(str, "Hz/Div");
// submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_80()));
// convert_to_metric_suffix(str, val / 200.0 , 2);
// strcat(str, "Hz/Div");
// submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_200()));
// }
// else
// {
convert_to_metric_suffix(str, val / 20.0 , 2);
strcat(str, "Hz/Div");
submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_20()));
@ -2269,7 +2269,7 @@ void UI_Mainwindow::math_menu()
convert_to_metric_suffix(str, val / 200.0 , 2);
strcat(str, "Hz/Div");
submenuffthzdiv.addAction(str, this, SLOT(select_fft_hzdiv_200()));
}
// }
submenufftoffset.setTitle("Offset");
if(devparms.math_fft_unit == 0)
@ -3415,179 +3415,61 @@ void UI_Mainwindow::select_fft_ch4()
void UI_Mainwindow::select_fft_hzdiv_20()
{
char str[512];
double val;
if(devparms.modelserie == 6)
{
return;
}
if(devparms.timebasedelayenable)
{
val = (100.0 / devparms.timebasedelayscale) / 20.0;
}
else
{
val = (100.0 / devparms.timebasescale) / 20.0;
}
sprintf(str, ":MATH:FFT:HSC %e", val);
set_cue_cmd(str);
devparms.math_fft_hscale = val;
strcpy(str, "FFT scale: ");
convert_to_metric_suffix(str + strlen(str), val, 2);
strcat(str, "Hz/Div");
statusLabel->setText(str);
set_fft_hzdiv(20.0);
}
void UI_Mainwindow::select_fft_hzdiv_40()
{
char str[512];
double val;
if(devparms.timebasedelayenable)
{
val = (100.0 / devparms.timebasedelayscale) / 40.0;
}
else
{
val = (100.0 / devparms.timebasescale) / 40.0;
}
if(devparms.modelserie == 6)
{
set_cue_cmd(":CALC:FFT:HSC 1");
}
else
{
sprintf(str, ":MATH:FFT:HSC %e", val);
set_cue_cmd(str);
}
devparms.math_fft_hscale = val;
strcpy(str, "FFT scale: ");
convert_to_metric_suffix(str + strlen(str), val, 2);
strcat(str, "Hz/Div");
statusLabel->setText(str);
set_fft_hzdiv(40.0);
}
void UI_Mainwindow::select_fft_hzdiv_80()
{
char str[512];
double val;
if(devparms.modelserie != 6)
{
return;
}
if(devparms.timebasedelayenable)
{
val = (100.0 / devparms.timebasedelayscale) / 80.0;
}
else
{
val = (100.0 / devparms.timebasescale) / 80.0;
}
set_cue_cmd(":CALC:FFT:HSC 2");
devparms.math_fft_hscale = val;
strcpy(str, "FFT scale: ");
convert_to_metric_suffix(str + strlen(str), val, 2);
strcat(str, "Hz/Div");
statusLabel->setText(str);
set_fft_hzdiv(80.0);
}
void UI_Mainwindow::select_fft_hzdiv_100()
{
char str[512];
double val;
if(devparms.modelserie == 6)
{
return;
}
if(devparms.timebasedelayenable)
{
val = (100.0 / devparms.timebasedelayscale) / 100.0;
}
else
{
val = (100.0 / devparms.timebasescale) / 100.0;
}
sprintf(str, ":MATH:FFT:HSC %e", val);
set_cue_cmd(str);
devparms.math_fft_hscale = val;
strcpy(str, "FFT scale: ");
convert_to_metric_suffix(str + strlen(str), val, 2);
strcat(str, "Hz/Div");
statusLabel->setText(str);
set_fft_hzdiv(100.0);
}
void UI_Mainwindow::select_fft_hzdiv_200()
{
char str[512];
set_fft_hzdiv(200.0);
}
double val;
void UI_Mainwindow::set_fft_hzdiv(double val)
{
char str[512];
if(devparms.timebasedelayenable)
{
val = (100.0 / devparms.timebasedelayscale) / 200.0;
devparms.math_fft_hscale = (100.0 / devparms.timebasedelayscale) / val;
}
else
{
val = (100.0 / devparms.timebasescale) / 200.0;
devparms.math_fft_hscale = (100.0 / devparms.timebasescale) / val;
}
if(devparms.modelserie == 6)
{
set_cue_cmd(":CALC:FFT:HSC 3");
sprintf(str, ":CALC:FFT:HSP %e", devparms.math_fft_hscale);
}
else
{
sprintf(str, ":MATH:FFT:HSC %e", val);
set_cue_cmd(str);
sprintf(str, ":MATH:FFT:HSC %e", devparms.math_fft_hscale);
}
devparms.math_fft_hscale = val;
set_cue_cmd(str);
strcpy(str, "FFT scale: ");
convert_to_metric_suffix(str + strlen(str), val, 2);
convert_to_metric_suffix(str + strlen(str), devparms.math_fft_hscale, 2);
strcat(str, "Hz/Div");

Wyświetl plik

@ -1865,7 +1865,7 @@ int UI_Mainwindow::get_device_settings()
if(devparms.modelserie == 6)
{
if(tmc_write(":CALC:FFT:HSC?") != 14)
if(tmc_write(":CALC:FFT:HSP?") != 14)
{
line = __LINE__;
goto OUT_ERROR;
@ -1877,19 +1877,33 @@ int UI_Mainwindow::get_device_settings()
goto OUT_ERROR;
}
switch(atoi(device->buf))
{
// case 0: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0;
devparms.math_fft_hscale = atof(device->buf);
// if(tmc_write(":CALC:FFT:HSC?") != 14)
// {
// line = __LINE__;
// goto OUT_ERROR;
// }
//
// if(tmc_read() < 1)
// {
// line = __LINE__;
// goto OUT_ERROR;
// }
//
// switch(atoi(device->buf))
// {
// // case 0: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0;
// // break;
// case 1: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0;
// break;
case 1: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0;
break;
case 2: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0;
break;
case 3: devparms.math_fft_hscale = devparms.current_screen_sf / 200.0;
break;
default: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0;
break;
}
// case 2: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0;
// break;
// case 3: devparms.math_fft_hscale = devparms.current_screen_sf / 200.0;
// break;
// default: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0;
// break;
// }
}
else
{
@ -2856,11 +2870,6 @@ void UI_Mainwindow::zoom_in()
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.modelserie == 6)
{
return;
}
if(!dblcmp(devparms.math_fft_hscale, devparms.current_screen_sf / 200.0))
{
return;
@ -2879,7 +2888,14 @@ void UI_Mainwindow::zoom_in()
devparms.math_fft_hscale = devparms.current_screen_sf / 200.0;
}
sprintf(str, ":MATH:FFT:HSC %e", devparms.math_fft_hscale);
if(devparms.modelserie == 6)
{
sprintf(str, ":CALC:FFT:HSP %e", devparms.math_fft_hscale);
}
else
{
sprintf(str, ":MATH:FFT:HSC %e", devparms.math_fft_hscale);
}
set_cue_cmd(str);
@ -3025,11 +3041,6 @@ void UI_Mainwindow::zoom_out()
if(devparms.math_fft && devparms.math_fft_split)
{
if(devparms.modelserie == 6)
{
return;
}
if(!dblcmp(devparms.math_fft_hscale, devparms.current_screen_sf / 20.0))
{
return;
@ -3048,7 +3059,14 @@ void UI_Mainwindow::zoom_out()
devparms.math_fft_hscale = devparms.current_screen_sf / 20.0;
}
sprintf(str, ":MATH:FFT:HSC %e", devparms.math_fft_hscale);
if(devparms.modelserie == 6)
{
sprintf(str, ":CALC:FFT:HSP %e", devparms.math_fft_hscale);
}
else
{
sprintf(str, ":MATH:FFT:HSC %e", devparms.math_fft_hscale);
}
set_cue_cmd(str);

Wyświetl plik

@ -401,6 +401,7 @@ private slots:
void select_fft_hzdiv_80();
void select_fft_hzdiv_100();
void select_fft_hzdiv_200();
void set_fft_hzdiv(double);
void select_fft_ctr_5();
void select_fft_ctr_6();
void select_fft_ctr_7();

Wyświetl plik

@ -405,35 +405,15 @@ void screenThread::run()
(!strncmp(deviceparms->cmd_cue[params.cmd_cue_idx_out], ":MATH:OPER FFT", 14)) ||
(!strncmp(deviceparms->cmd_cue[params.cmd_cue_idx_out], ":CALC:MODE FFT", 14)))
{
usleep(TMC_GDS_DELAY * 50);
usleep(TMC_GDS_DELAY * 10);
if(params.modelserie == 6)
{
if(tmc_write(":CALC:FFT:HSC?") != 14)
if(tmc_write(":CALC:FFT:HSP?") != 14)
{
line = __LINE__;
goto OUT_ERROR;
}
if(tmc_read() < 1)
{
line = __LINE__;
goto OUT_ERROR;
}
switch(atoi(device->buf))
{
// case 0: params.math_fft_hscale = params.current_screen_sf / 80.0;
// break;
case 1: params.math_fft_hscale = params.current_screen_sf / 40.0;
break;
case 2: params.math_fft_hscale = params.current_screen_sf / 80.0;
break;
case 3: params.math_fft_hscale = params.current_screen_sf / 200.0;
break;
default: params.math_fft_hscale = params.current_screen_sf / 40.0;
break;
}
}
else
{
@ -443,17 +423,17 @@ void screenThread::run()
line = __LINE__;
goto OUT_ERROR;
}
if(tmc_read() < 1)
{
printf("Can not read from device.\n");
line = __LINE__;
goto OUT_ERROR;
}
params.math_fft_hscale = atof(device->buf);
}
if(tmc_read() < 1)
{
printf("Can not read from device.\n");
line = __LINE__;
goto OUT_ERROR;
}
params.math_fft_hscale = atof(device->buf);
usleep(TMC_GDS_DELAY);
if(params.modelserie == 6)

Wyświetl plik

@ -770,32 +770,27 @@ void SignalCurve::drawFFT(QPainter *painter, int curve_h_b, int curve_w_b)
fft_h_offset = (curve_w / 2) - ((devparms->math_fft_hcenter / devparms->math_fft_hscale) * curve_w / devparms->hordivisions);
// fft_smpls_onscreen = (double)devparms->fftbufsz * ((devparms->math_fft_hscale * devparms->hordivisions) / (double)devparms->current_screen_sf);
painter->setPen(QPen(QBrush(QColor(128, 64, 255), Qt::SolidPattern), tracewidth, Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin));
for(i=0; i<devparms->fftbufsz; i++)
for(i=0; i<(devparms->fftbufsz - 1); i++)
{
if(devparms->fftbufsz < (curve_w / 2))
{
painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset, (i + 1) * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset);
if(i)
{
painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i - 1] * fft_v_sense) + fft_v_offset, i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset);
}
}
else
{
if(i < (devparms->fftbufsz - 1))
{
if(devparms->displaytype)
{
painter->drawPoint(i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset);
}
else
{
painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset, (i + 1) * h_step + fft_h_offset, (devparms->fftbuf_out[i + 1] * fft_v_sense) + fft_v_offset);
}
}
}
// if(fft_smpls_onscreen < (curve_w / 2))
// {
// painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset, (i + 1) * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset);
// if(i)
// {
// painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i - 1] * fft_v_sense) + fft_v_offset, i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset);
// }
// }
// else
// {
// if(i < (devparms->fftbufsz - 1))
// {
painter->drawLine(i * h_step + fft_h_offset, (devparms->fftbuf_out[i] * fft_v_sense) + fft_v_offset, (i + 1) * h_step + fft_h_offset, (devparms->fftbuf_out[i + 1] * fft_v_sense) + fft_v_offset);
// }
// }
}
sprintf(str, "FFT: CH%i ", devparms->math_fft_src + 1);

16
utils.c
Wyświetl plik

@ -1761,49 +1761,49 @@ int convert_to_metric_suffix(char *buf, double value, int decimals)
ltmp = value;
}
if(ltmp >= 1e12 && ltmp < 1e15)
if(ltmp > 0.999999e12 && ltmp < 0.999999e15)
{
ltmp = ltmp / 1e12;
suffix = 'T';
}
else if(ltmp >= 1e9 && ltmp < 1e12)
else if(ltmp > 0.999999e9)
{
ltmp = ltmp / 1e9;
suffix = 'G';
}
else if(ltmp >= 1e6 && ltmp < 1e9)
else if(ltmp > 0.999999e6)
{
ltmp = ltmp / 1e6;
suffix = 'M';
}
else if(ltmp >= 1e3 && ltmp < 1e6)
else if(ltmp > 0.999999e3)
{
ltmp /= 1e3;
suffix = 'K';
}
else if(ltmp >= 1e-3 && ltmp < 1)
else if(ltmp > 0.999999e-3 && ltmp < 0.999999)
{
ltmp *= 1e3;
suffix = 'm';
}
else if( ltmp >= 1e-6 && ltmp < 1e-3)
else if( ltmp > 0.999999e-6 && ltmp < 0.999999e-3)
{
ltmp *= 1e6;
suffix = 'u';
}
else if(ltmp >= 1e-9 && ltmp < 1e-6)
else if(ltmp > 0.999999e-9 && ltmp < 0.999999e-6)
{
ltmp *= 1e9;
suffix = 'n';
}
else if(ltmp >= 1e-12 && ltmp < 1e-9)
else if(ltmp > 0.999999e-12 && ltmp < 0.999999e-9)
{
ltmp *= 1e12;