kopia lustrzana https://gitlab.com/Teuniz/DSRemote
Added extra vertical divisions on display to increase dynamic range for DS1000Z series.
rodzic
cfd6d3404d
commit
fa24b5f932
4
global.h
4
global.h
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
|
|
||||||
#define PROGRAM_NAME "DSRemote"
|
#define PROGRAM_NAME "DSRemote"
|
||||||
#define PROGRAM_VERSION "0.33_1612111915"
|
#define PROGRAM_VERSION "0.33_1612181629"
|
||||||
|
|
||||||
#define MAX_PATHLEN 4096
|
#define MAX_PATHLEN 4096
|
||||||
|
|
||||||
|
|
@ -121,6 +121,8 @@ struct device_settings
|
||||||
char softwvers[128];
|
char softwvers[128];
|
||||||
int modelserie; // 1=DS1000, 2=DS2000, etc.
|
int modelserie; // 1=DS1000, 2=DS2000, etc.
|
||||||
int hordivisions; // number of horizontal divisions, 12 or 14
|
int hordivisions; // number of horizontal divisions, 12 or 14
|
||||||
|
int vertdivisions; // number of vertical divisions, 8 or 10
|
||||||
|
int use_extra_vertdivisions; // If 1: use 10 vertical divisions instead of 8, DS1000Z only
|
||||||
|
|
||||||
int screentimerival;
|
int screentimerival;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -855,6 +855,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
|
|
||||||
devparms.hordivisions = 14;
|
devparms.hordivisions = 14;
|
||||||
|
|
||||||
|
devparms.vertdivisions = 8;
|
||||||
|
|
||||||
if(!strcmp(str, "DS6104"))
|
if(!strcmp(str, "DS6104"))
|
||||||
{
|
{
|
||||||
devparms.channel_cnt = 4;
|
devparms.channel_cnt = 4;
|
||||||
|
|
@ -1053,6 +1055,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
devparms.modelserie = 1;
|
devparms.modelserie = 1;
|
||||||
|
|
||||||
devparms.hordivisions = 12;
|
devparms.hordivisions = 12;
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp(str, "DS1074Z"))
|
if(!strcmp(str, "DS1074Z"))
|
||||||
|
|
@ -1064,6 +1068,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
devparms.modelserie = 1;
|
devparms.modelserie = 1;
|
||||||
|
|
||||||
devparms.hordivisions = 12;
|
devparms.hordivisions = 12;
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp(str, "DS1074Z-S"))
|
if(!strcmp(str, "DS1074Z-S"))
|
||||||
|
|
@ -1075,6 +1081,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
devparms.modelserie = 1;
|
devparms.modelserie = 1;
|
||||||
|
|
||||||
devparms.hordivisions = 12;
|
devparms.hordivisions = 12;
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp(str, "DS1104Z"))
|
if(!strcmp(str, "DS1104Z"))
|
||||||
|
|
@ -1086,6 +1094,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
devparms.modelserie = 1;
|
devparms.modelserie = 1;
|
||||||
|
|
||||||
devparms.hordivisions = 12;
|
devparms.hordivisions = 12;
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp(str, "DS1104Z-S"))
|
if(!strcmp(str, "DS1104Z-S"))
|
||||||
|
|
@ -1097,6 +1107,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
||||||
devparms.modelserie = 1;
|
devparms.modelserie = 1;
|
||||||
|
|
||||||
devparms.hordivisions = 12;
|
devparms.hordivisions = 12;
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(devparms.channel_cnt && devparms.bandwidth && devparms.modelserie)
|
if(devparms.channel_cnt && devparms.bandwidth && devparms.modelserie)
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,23 @@ UI_Mainwindow::UI_Mainwindow()
|
||||||
|
|
||||||
devparms.hordivisions = 14;
|
devparms.hordivisions = 14;
|
||||||
|
|
||||||
|
devparms.vertdivisions = 8;
|
||||||
|
|
||||||
|
devparms.use_extra_vertdivisions = settings.value("gui/use_extra_vertdivisions", 1).toInt();
|
||||||
|
|
||||||
|
if(devparms.use_extra_vertdivisions)
|
||||||
|
{
|
||||||
|
devparms.use_extra_vertdivisions = 1;
|
||||||
|
|
||||||
|
settings.setValue("gui/use_extra_vertdivisions", devparms.use_extra_vertdivisions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
devparms.use_extra_vertdivisions = 0;
|
||||||
|
|
||||||
|
settings.setValue("gui/use_extra_vertdivisions", devparms.use_extra_vertdivisions);
|
||||||
|
}
|
||||||
|
|
||||||
devparms.current_screen_sf = 1;
|
devparms.current_screen_sf = 1;
|
||||||
|
|
||||||
devparms.fft_vscale = 10.0;
|
devparms.fft_vscale = 10.0;
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,22 @@ UI_settings_window::UI_settings_window(QWidget *parnt)
|
||||||
showfpsCheckbox->setCheckState(Qt::Unchecked);
|
showfpsCheckbox->setCheckState(Qt::Unchecked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extendvertdivLabel = new QLabel(this);
|
||||||
|
extendvertdivLabel->setGeometry(40, 270, 120, 35);
|
||||||
|
extendvertdivLabel->setText("Use extended\n vertical range");
|
||||||
|
|
||||||
|
extendvertdivCheckbox = new QCheckBox(this);
|
||||||
|
extendvertdivCheckbox->setGeometry(180, 270, 120, 35);
|
||||||
|
extendvertdivCheckbox->setTristate(false);
|
||||||
|
if(mainwindow->devparms.use_extra_vertdivisions)
|
||||||
|
{
|
||||||
|
extendvertdivCheckbox->setCheckState(Qt::Checked);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
extendvertdivCheckbox->setCheckState(Qt::Unchecked);
|
||||||
|
}
|
||||||
|
|
||||||
applyButton = new QPushButton(this);
|
applyButton = new QPushButton(this);
|
||||||
applyButton->setGeometry(40, 450, 100, 25);
|
applyButton->setGeometry(40, 450, 100, 25);
|
||||||
applyButton->setText("Apply");
|
applyButton->setText("Apply");
|
||||||
|
|
@ -207,10 +223,11 @@ UI_settings_window::UI_settings_window(QWidget *parnt)
|
||||||
QObject::connect(applyButton, SIGNAL(clicked()), this, SLOT(applyButtonClicked()));
|
QObject::connect(applyButton, SIGNAL(clicked()), this, SLOT(applyButtonClicked()));
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject::connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
|
QObject::connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
|
||||||
QObject::connect(refreshSpinbox, SIGNAL(valueChanged(int)), this, SLOT(refreshSpinboxChanged(int)));
|
QObject::connect(refreshSpinbox, SIGNAL(valueChanged(int)), this, SLOT(refreshSpinboxChanged(int)));
|
||||||
QObject::connect(invScrShtCheckbox, SIGNAL(stateChanged(int)), this, SLOT(invScrShtCheckboxChanged(int)));
|
QObject::connect(invScrShtCheckbox, SIGNAL(stateChanged(int)), this, SLOT(invScrShtCheckboxChanged(int)));
|
||||||
QObject::connect(showfpsCheckbox, SIGNAL(stateChanged(int)), this, SLOT(showfpsCheckboxChanged(int)));
|
QObject::connect(showfpsCheckbox, SIGNAL(stateChanged(int)), this, SLOT(showfpsCheckboxChanged(int)));
|
||||||
|
QObject::connect(extendvertdivCheckbox, SIGNAL(stateChanged(int)), this, SLOT(extendvertdivCheckboxChanged(int)));
|
||||||
|
|
||||||
exec();
|
exec();
|
||||||
}
|
}
|
||||||
|
|
@ -330,6 +347,35 @@ void UI_settings_window::showfpsCheckboxChanged(int state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UI_settings_window::extendvertdivCheckboxChanged(int state)
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
|
||||||
|
if(state == Qt::Checked)
|
||||||
|
{
|
||||||
|
mainwindow->devparms.use_extra_vertdivisions = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mainwindow->devparms.use_extra_vertdivisions = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.setValue("gui/use_extra_vertdivisions", mainwindow->devparms.use_extra_vertdivisions);
|
||||||
|
|
||||||
|
if(mainwindow->devparms.modelserie == 1)
|
||||||
|
{
|
||||||
|
if(mainwindow->devparms.use_extra_vertdivisions == 1)
|
||||||
|
{
|
||||||
|
mainwindow->devparms.vertdivisions = 10;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mainwindow->devparms.vertdivisions = 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,10 +77,12 @@ QSpinBox *refreshSpinbox,
|
||||||
|
|
||||||
QLabel *refreshLabel,
|
QLabel *refreshLabel,
|
||||||
*invScrShtLabel,
|
*invScrShtLabel,
|
||||||
*showfpsLabel;
|
*showfpsLabel,
|
||||||
|
*extendvertdivLabel;
|
||||||
|
|
||||||
QCheckBox *invScrShtCheckbox,
|
QCheckBox *invScrShtCheckbox,
|
||||||
*showfpsCheckbox;
|
*showfpsCheckbox,
|
||||||
|
*extendvertdivCheckbox;
|
||||||
|
|
||||||
UI_Mainwindow *mainwindow;
|
UI_Mainwindow *mainwindow;
|
||||||
|
|
||||||
|
|
@ -90,6 +92,7 @@ void applyButtonClicked();
|
||||||
void refreshSpinboxChanged(int);
|
void refreshSpinboxChanged(int);
|
||||||
void invScrShtCheckboxChanged(int);
|
void invScrShtCheckboxChanged(int);
|
||||||
void showfpsCheckboxChanged(int);
|
void showfpsCheckboxChanged(int);
|
||||||
|
void extendvertdivCheckboxChanged(int);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -264,9 +264,9 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
painter->drawLine(step * i, curve_h - 1, step * i, 0);
|
painter->drawLine(step * i, curve_h - 1, step * i, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
step = curve_h / 8.0;
|
step = curve_h / (double)devparms->vertdivisions;
|
||||||
|
|
||||||
for(i=1; i<8; i++)
|
for(i=1; i<devparms->vertdivisions; i++)
|
||||||
{
|
{
|
||||||
painter->drawLine(0, step * i, curve_w - 1, step * i);
|
painter->drawLine(0, step * i, curve_w - 1, step * i);
|
||||||
}
|
}
|
||||||
|
|
@ -306,9 +306,9 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
step = curve_h / 40.0;
|
step = curve_h / (5.0 * devparms->vertdivisions);
|
||||||
|
|
||||||
for(i=1; i<40; i++)
|
for(i=1; i<(5 * devparms->vertdivisions); i++)
|
||||||
{
|
{
|
||||||
step2 = step * i;
|
step2 = step * i;
|
||||||
|
|
||||||
|
|
@ -346,7 +346,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
v_sense = -((double)curve_h / 200.0);
|
v_sense = -((double)curve_h / (25.0 * devparms->vertdivisions));
|
||||||
}
|
}
|
||||||
|
|
||||||
drawTrigCenterArrow(painter, curve_w / 2, 0);
|
drawTrigCenterArrow(painter, curve_w / 2, 0);
|
||||||
|
|
@ -364,7 +364,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chan_arrow_pos[chn] = (curve_h / 2) - (devparms->chanoffset[chn] / ((devparms->chanscale[chn] * 8) / curve_h));
|
chan_arrow_pos[chn] = (curve_h / 2) - (devparms->chanoffset[chn] / ((devparms->chanscale[chn] * devparms->vertdivisions) / curve_h));
|
||||||
|
|
||||||
if(chan_arrow_pos[chn] < 0)
|
if(chan_arrow_pos[chn] < 0)
|
||||||
{
|
{
|
||||||
|
|
@ -468,7 +468,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
{
|
{
|
||||||
if(devparms->triggeredgesource < 4)
|
if(devparms->triggeredgesource < 4)
|
||||||
{
|
{
|
||||||
trig_level_arrow_pos = (curve_h / 2) - ((devparms->triggeredgelevel[devparms->triggeredgesource] + devparms->chanoffset[devparms->triggeredgesource]) / ((devparms->chanscale[devparms->triggeredgesource] * 8) / curve_h));
|
trig_level_arrow_pos = (curve_h / 2) - ((devparms->triggeredgelevel[devparms->triggeredgesource] + devparms->chanoffset[devparms->triggeredgesource]) / ((devparms->chanscale[devparms->triggeredgesource] * devparms->vertdivisions) / curve_h));
|
||||||
|
|
||||||
if(trig_level_arrow_pos < 0)
|
if(trig_level_arrow_pos < 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1903,7 +1903,7 @@ void SignalCurve::mouseReleaseEvent(QMouseEvent *release_event)
|
||||||
// printf("chanoffset[chn] is: %e chanscale[chn] is %e trig_level_arrow_pos is: %i v_sense is: %e\n",
|
// printf("chanoffset[chn] is: %e chanscale[chn] is %e trig_level_arrow_pos is: %i v_sense is: %e\n",
|
||||||
// devparms->chanoffset[chn], devparms->chanscale[chn], trig_level_arrow_pos, v_sense);
|
// devparms->chanoffset[chn], devparms->chanscale[chn], trig_level_arrow_pos, v_sense);
|
||||||
|
|
||||||
devparms->triggeredgelevel[devparms->triggeredgesource] = (((h / 2) - trig_level_arrow_pos) * ((devparms->chanscale[devparms->triggeredgesource] * 8) / h))
|
devparms->triggeredgelevel[devparms->triggeredgesource] = (((h / 2) - trig_level_arrow_pos) * ((devparms->chanscale[devparms->triggeredgesource] * devparms->vertdivisions) / h))
|
||||||
- devparms->chanoffset[devparms->triggeredgesource];
|
- devparms->chanoffset[devparms->triggeredgesource];
|
||||||
|
|
||||||
tmp = devparms->triggeredgelevel[devparms->triggeredgesource] / (devparms->chanscale[devparms->triggeredgesource] / 50);
|
tmp = devparms->triggeredgelevel[devparms->triggeredgesource] / (devparms->chanscale[devparms->triggeredgesource] / 50);
|
||||||
|
|
@ -1950,7 +1950,7 @@ void SignalCurve::mouseReleaseEvent(QMouseEvent *release_event)
|
||||||
// printf("chanoffset[chn] is: %e chanscale[chn] is %e chan_arrow_pos[chn] is: %i v_sense is: %e\n",
|
// printf("chanoffset[chn] is: %e chanscale[chn] is %e chan_arrow_pos[chn] is: %i v_sense is: %e\n",
|
||||||
// devparms->chanoffset[chn], devparms->chanscale[chn], chan_arrow_pos[chn], v_sense);
|
// devparms->chanoffset[chn], devparms->chanscale[chn], chan_arrow_pos[chn], v_sense);
|
||||||
|
|
||||||
devparms->chanoffset[chn] = ((h / 2) - chan_arrow_pos[chn]) * ((devparms->chanscale[chn] * 8) / h);
|
devparms->chanoffset[chn] = ((h / 2) - chan_arrow_pos[chn]) * ((devparms->chanscale[chn] * devparms->vertdivisions) / h);
|
||||||
|
|
||||||
tmp = devparms->chanoffset[chn] / (devparms->chanscale[chn] / 50);
|
tmp = devparms->chanoffset[chn] / (devparms->chanscale[chn] / 50);
|
||||||
|
|
||||||
|
|
@ -2081,7 +2081,7 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event)
|
||||||
trig_level_arrow_pos = h;
|
trig_level_arrow_pos = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
devparms->triggeredgelevel[devparms->triggeredgesource] = (((h / 2) - trig_level_arrow_pos) * ((devparms->chanscale[devparms->triggeredgesource] * 8) / h))
|
devparms->triggeredgelevel[devparms->triggeredgesource] = (((h / 2) - trig_level_arrow_pos) * ((devparms->chanscale[devparms->triggeredgesource] * devparms->vertdivisions) / h))
|
||||||
- devparms->chanoffset[devparms->triggeredgesource];
|
- devparms->chanoffset[devparms->triggeredgesource];
|
||||||
|
|
||||||
dtmp = devparms->triggeredgelevel[devparms->triggeredgesource] / (devparms->chanscale[devparms->triggeredgesource] / 50);
|
dtmp = devparms->triggeredgelevel[devparms->triggeredgesource] / (devparms->chanscale[devparms->triggeredgesource] / 50);
|
||||||
|
|
@ -2115,7 +2115,7 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event)
|
||||||
chan_arrow_pos[chn] = h;
|
chan_arrow_pos[chn] = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
devparms->chanoffset[chn] = ((h / 2) - chan_arrow_pos[chn]) * ((devparms->chanscale[chn] * 8) / h);
|
devparms->chanoffset[chn] = ((h / 2) - chan_arrow_pos[chn]) * ((devparms->chanscale[chn] * devparms->vertdivisions) / h);
|
||||||
|
|
||||||
// chan_tmp_y_pixel_offset[chn] = (h / 2) - chan_arrow_pos[chn];
|
// chan_tmp_y_pixel_offset[chn] = (h / 2) - chan_arrow_pos[chn];
|
||||||
|
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue