kopia lustrzana https://gitlab.com/Teuniz/DSRemote
Work in progress.
rodzic
f23ea8d06f
commit
9a8560ef95
2
global.h
2
global.h
|
@ -35,7 +35,7 @@
|
|||
|
||||
|
||||
#define PROGRAM_NAME "DSRemote"
|
||||
#define PROGRAM_VERSION "0.32_1601121350"
|
||||
#define PROGRAM_VERSION "0.32_1601121654"
|
||||
|
||||
#define MAX_PATHLEN 4096
|
||||
|
||||
|
|
180
interface.cpp
180
interface.cpp
|
@ -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");
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
16
utils.c
|
@ -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;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue