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_VERSION "0.33_1612111915"
|
||||
#define PROGRAM_VERSION "0.33_1612181629"
|
||||
|
||||
#define MAX_PATHLEN 4096
|
||||
|
||||
|
|
@ -121,6 +121,8 @@ struct device_settings
|
|||
char softwvers[128];
|
||||
int modelserie; // 1=DS1000, 2=DS2000, etc.
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -855,6 +855,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
|
||||
devparms.hordivisions = 14;
|
||||
|
||||
devparms.vertdivisions = 8;
|
||||
|
||||
if(!strcmp(str, "DS6104"))
|
||||
{
|
||||
devparms.channel_cnt = 4;
|
||||
|
|
@ -1053,6 +1055,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
devparms.modelserie = 1;
|
||||
|
||||
devparms.hordivisions = 12;
|
||||
|
||||
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||
}
|
||||
|
||||
if(!strcmp(str, "DS1074Z"))
|
||||
|
|
@ -1064,6 +1068,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
devparms.modelserie = 1;
|
||||
|
||||
devparms.hordivisions = 12;
|
||||
|
||||
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||
}
|
||||
|
||||
if(!strcmp(str, "DS1074Z-S"))
|
||||
|
|
@ -1075,6 +1081,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
devparms.modelserie = 1;
|
||||
|
||||
devparms.hordivisions = 12;
|
||||
|
||||
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||
}
|
||||
|
||||
if(!strcmp(str, "DS1104Z"))
|
||||
|
|
@ -1086,6 +1094,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
devparms.modelserie = 1;
|
||||
|
||||
devparms.hordivisions = 12;
|
||||
|
||||
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||
}
|
||||
|
||||
if(!strcmp(str, "DS1104Z-S"))
|
||||
|
|
@ -1097,6 +1107,8 @@ void UI_Mainwindow::get_device_model(const char *str)
|
|||
devparms.modelserie = 1;
|
||||
|
||||
devparms.hordivisions = 12;
|
||||
|
||||
if(devparms.use_extra_vertdivisions) devparms.vertdivisions = 10;
|
||||
}
|
||||
|
||||
if(devparms.channel_cnt && devparms.bandwidth && devparms.modelserie)
|
||||
|
|
|
|||
|
|
@ -128,6 +128,23 @@ UI_Mainwindow::UI_Mainwindow()
|
|||
|
||||
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.fft_vscale = 10.0;
|
||||
|
|
|
|||
|
|
@ -172,6 +172,22 @@ UI_settings_window::UI_settings_window(QWidget *parnt)
|
|||
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->setGeometry(40, 450, 100, 25);
|
||||
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(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
|
||||
QObject::connect(refreshSpinbox, SIGNAL(valueChanged(int)), this, SLOT(refreshSpinboxChanged(int)));
|
||||
QObject::connect(invScrShtCheckbox, SIGNAL(stateChanged(int)), this, SLOT(invScrShtCheckboxChanged(int)));
|
||||
QObject::connect(showfpsCheckbox, SIGNAL(stateChanged(int)), this, SLOT(showfpsCheckboxChanged(int)));
|
||||
QObject::connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
|
||||
QObject::connect(refreshSpinbox, SIGNAL(valueChanged(int)), this, SLOT(refreshSpinboxChanged(int)));
|
||||
QObject::connect(invScrShtCheckbox, SIGNAL(stateChanged(int)), this, SLOT(invScrShtCheckboxChanged(int)));
|
||||
QObject::connect(showfpsCheckbox, SIGNAL(stateChanged(int)), this, SLOT(showfpsCheckboxChanged(int)));
|
||||
QObject::connect(extendvertdivCheckbox, SIGNAL(stateChanged(int)), this, SLOT(extendvertdivCheckboxChanged(int)));
|
||||
|
||||
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,
|
||||
*invScrShtLabel,
|
||||
*showfpsLabel;
|
||||
*showfpsLabel,
|
||||
*extendvertdivLabel;
|
||||
|
||||
QCheckBox *invScrShtCheckbox,
|
||||
*showfpsCheckbox;
|
||||
*showfpsCheckbox,
|
||||
*extendvertdivCheckbox;
|
||||
|
||||
UI_Mainwindow *mainwindow;
|
||||
|
||||
|
|
@ -90,6 +92,7 @@ void applyButtonClicked();
|
|||
void refreshSpinboxChanged(int);
|
||||
void invScrShtCheckboxChanged(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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -346,7 +346,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
|||
}
|
||||
else
|
||||
{
|
||||
v_sense = -((double)curve_h / 200.0);
|
||||
v_sense = -((double)curve_h / (25.0 * devparms->vertdivisions));
|
||||
}
|
||||
|
||||
drawTrigCenterArrow(painter, curve_w / 2, 0);
|
||||
|
|
@ -364,7 +364,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
|||
}
|
||||
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)
|
||||
{
|
||||
|
|
@ -468,7 +468,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
|||
{
|
||||
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)
|
||||
{
|
||||
|
|
@ -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",
|
||||
// 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];
|
||||
|
||||
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",
|
||||
// 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);
|
||||
|
||||
|
|
@ -2081,7 +2081,7 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event)
|
|||
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];
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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];
|
||||
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue