kopia lustrzana https://gitlab.com/Teuniz/DSRemote
Work in progress.
rodzic
b0515b26cf
commit
781417c216
2
global.h
2
global.h
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
|
||||
#define PROGRAM_NAME "DSRemote"
|
||||
#define PROGRAM_VERSION "0.33_1612281232"
|
||||
#define PROGRAM_VERSION "0.33_1612281501"
|
||||
|
||||
#define MAX_PATHLEN 4096
|
||||
|
||||
|
|
|
|||
|
|
@ -1869,7 +1869,7 @@ void UI_Mainwindow::show_howto_operate()
|
|||
"Decrease vertical scale: +\n"
|
||||
"Press '1' to select or deselect channel 1\n"
|
||||
"Press '2' to select or deselect channel 2, etc.\n"
|
||||
"Press 'c' to center the trigger position (set timebase offset to zero).\n"
|
||||
"Press 'c' to center the horizontal position (set timebase offset to zero).\n"
|
||||
"Press 'f' to toggle FFT.\n"
|
||||
);
|
||||
|
||||
|
|
|
|||
204
wave_dialog.cpp
204
wave_dialog.cpp
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
UI_wave_window::UI_wave_window(struct device_settings *p_devparms, short *wbuf[MAX_CHNS], QWidget *parnt)
|
||||
{
|
||||
int i, samples_per_div;
|
||||
int i;
|
||||
|
||||
mainwindow = (UI_Mainwindow *)parnt;
|
||||
|
||||
|
|
@ -60,15 +60,13 @@ UI_wave_window::UI_wave_window(struct device_settings *p_devparms, short *wbuf[M
|
|||
|
||||
if(devparms->timebasedelayenable)
|
||||
{
|
||||
samples_per_div = devparms->samplerate * devparms->timebasedelayscale;
|
||||
}
|
||||
else
|
||||
{
|
||||
samples_per_div = devparms->samplerate * devparms->timebasescale;
|
||||
devparms->timebasescale = devparms->timebasedelayscale;
|
||||
}
|
||||
|
||||
devparms->timebasedelayenable = 0;
|
||||
|
||||
devparms->timebaseoffset = 0;
|
||||
|
||||
wavcurve = new WaveCurve;
|
||||
wavcurve->setBackgroundColor(Qt::black);
|
||||
wavcurve->setSignalColor1(Qt::yellow);
|
||||
|
|
@ -81,8 +79,7 @@ UI_wave_window::UI_wave_window(struct device_settings *p_devparms, short *wbuf[M
|
|||
|
||||
wavslider = new QSlider;
|
||||
wavslider->setOrientation(Qt::Horizontal);
|
||||
wavslider->setRange(0, devparms->wavebufsz - (devparms->hordivisions * samples_per_div));
|
||||
wavslider->setValue((devparms->wavebufsz - (devparms->hordivisions * samples_per_div)) / 2);
|
||||
set_wavslider();
|
||||
|
||||
devparms->wave_mem_view_sample_start = wavslider->value();
|
||||
|
||||
|
|
@ -90,6 +87,41 @@ UI_wave_window::UI_wave_window(struct device_settings *p_devparms, short *wbuf[M
|
|||
g_layout->addWidget(wavcurve, 0, 0);
|
||||
g_layout->addWidget(wavslider, 1, 0);
|
||||
|
||||
former_page_act = new QAction(this);
|
||||
former_page_act->setShortcut(QKeySequence::MoveToPreviousPage);
|
||||
connect(former_page_act, SIGNAL(triggered()), this, SLOT(former_page()));
|
||||
addAction(former_page_act);
|
||||
|
||||
shift_page_left_act = new QAction(this);
|
||||
shift_page_left_act->setShortcut(QKeySequence::MoveToPreviousChar);
|
||||
connect(shift_page_left_act, SIGNAL(triggered()), this, SLOT(shift_page_left()));
|
||||
addAction(shift_page_left_act);
|
||||
|
||||
center_trigger_act = new QAction(this);
|
||||
center_trigger_act->setShortcut(QKeySequence("c"));
|
||||
connect(center_trigger_act, SIGNAL(triggered()), this, SLOT(center_trigger()));
|
||||
addAction(center_trigger_act);
|
||||
|
||||
shift_page_right_act = new QAction(this);
|
||||
shift_page_right_act->setShortcut(QKeySequence::MoveToNextChar);
|
||||
connect(shift_page_right_act, SIGNAL(triggered()), this, SLOT(shift_page_right()));
|
||||
addAction(shift_page_right_act);
|
||||
|
||||
next_page_act = new QAction(this);
|
||||
next_page_act->setShortcut(QKeySequence::MoveToNextPage);
|
||||
connect(next_page_act, SIGNAL(triggered()), this, SLOT(next_page()));
|
||||
addAction(next_page_act);
|
||||
|
||||
zoom_in_act = new QAction(this);
|
||||
zoom_in_act->setShortcut(QKeySequence::ZoomIn);
|
||||
connect(zoom_in_act, SIGNAL(triggered()), this, SLOT(zoom_in()));
|
||||
addAction(zoom_in_act);
|
||||
|
||||
zoom_out_act = new QAction(this);
|
||||
zoom_out_act->setShortcut(QKeySequence::ZoomOut);
|
||||
connect(zoom_out_act, SIGNAL(triggered()), this, SLOT(zoom_out()));
|
||||
addAction(zoom_out_act);
|
||||
|
||||
connect(wavslider, SIGNAL(sliderMoved(int)), this, SLOT(wavslider_value_changed(int)));
|
||||
|
||||
show();
|
||||
|
|
@ -113,6 +145,162 @@ void UI_wave_window::wavslider_value_changed(int val)
|
|||
{
|
||||
devparms->wave_mem_view_sample_start = val;
|
||||
|
||||
int samples_per_div = devparms->samplerate * devparms->timebasescale;
|
||||
|
||||
devparms->timebaseoffset = (double)(((devparms->wavebufsz - (devparms->hordivisions * samples_per_div)) / 2) - devparms->wave_mem_view_sample_start) /
|
||||
devparms->samplerate * -1.0;
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::set_wavslider(void)
|
||||
{
|
||||
int samples_per_div = devparms->samplerate * devparms->timebasescale;
|
||||
|
||||
wavslider->setRange(0, devparms->wavebufsz - (devparms->hordivisions * samples_per_div));
|
||||
|
||||
devparms->wave_mem_view_sample_start = ((devparms->wavebufsz - (devparms->hordivisions * samples_per_div)) / 2) +
|
||||
devparms->samplerate * devparms->timebaseoffset;
|
||||
|
||||
wavslider->setValue(devparms->wave_mem_view_sample_start);
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::former_page()
|
||||
{
|
||||
devparms->timebaseoffset -= devparms->timebasescale * devparms->hordivisions;
|
||||
|
||||
if(devparms->timebaseoffset <= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::next_page()
|
||||
{
|
||||
devparms->timebaseoffset += devparms->timebasescale * devparms->hordivisions;
|
||||
|
||||
if(devparms->timebaseoffset >= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::shift_page_left()
|
||||
{
|
||||
devparms->timebaseoffset -= devparms->timebasescale;
|
||||
|
||||
if(devparms->timebaseoffset <= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::shift_page_right()
|
||||
{
|
||||
devparms->timebaseoffset += devparms->timebasescale;
|
||||
|
||||
if(devparms->timebaseoffset >= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::center_trigger()
|
||||
{
|
||||
devparms->timebaseoffset = 0;
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::zoom_in()
|
||||
{
|
||||
devparms->timebasescale = round_down_step125(devparms->timebasescale, NULL);
|
||||
|
||||
if(devparms->timebasescale <= 1.001e-9)
|
||||
{
|
||||
devparms->timebasescale = 1e-9;
|
||||
}
|
||||
|
||||
if(devparms->timebaseoffset <= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2;
|
||||
}
|
||||
|
||||
if(devparms->timebaseoffset >= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
||||
void UI_wave_window::zoom_out()
|
||||
{
|
||||
if(devparms->timebasescale >= ((double)devparms->acquirememdepth / devparms->samplerate) / (double)devparms->hordivisions)
|
||||
{
|
||||
devparms->timebasescale = ((double)devparms->acquirememdepth / devparms->samplerate) / (double)devparms->hordivisions;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
devparms->timebasescale = round_up_step125(devparms->timebasescale, NULL);
|
||||
|
||||
if(devparms->timebaseoffset <= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / -2;
|
||||
}
|
||||
|
||||
if(devparms->timebaseoffset >= ((((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2))
|
||||
{
|
||||
devparms->timebaseoffset = (((double)devparms->acquirememdepth / devparms->samplerate) -
|
||||
(devparms->timebasescale * devparms->hordivisions)) / 2;
|
||||
}
|
||||
|
||||
set_wavslider();
|
||||
|
||||
wavcurve->update();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ public:
|
|||
UI_wave_window(struct device_settings *, short *wbuf[MAX_CHNS], QWidget *parent=0);
|
||||
~UI_wave_window();
|
||||
|
||||
void set_wavslider(void);
|
||||
|
||||
private:
|
||||
|
||||
struct device_settings *devparms;
|
||||
|
|
@ -70,10 +72,26 @@ WaveCurve *wavcurve;
|
|||
|
||||
QSlider *wavslider;
|
||||
|
||||
QAction *former_page_act,
|
||||
*shift_page_left_act,
|
||||
*shift_page_right_act,
|
||||
*next_page_act,
|
||||
*zoom_in_act,
|
||||
*zoom_out_act,
|
||||
*center_trigger_act;
|
||||
|
||||
private slots:
|
||||
|
||||
void wavslider_value_changed(int);
|
||||
|
||||
void former_page();
|
||||
void shift_page_left();
|
||||
void shift_page_right();
|
||||
void next_page();
|
||||
void zoom_in();
|
||||
void zoom_out();
|
||||
void center_trigger();
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -115,9 +115,6 @@ void WaveCurve::paintEvent(QPaintEvent *)
|
|||
|
||||
samples_per_div = devparms->samplerate * devparms->timebasescale;
|
||||
|
||||
devparms->timebaseoffset = (double)(((devparms->wavebufsz - (devparms->hordivisions * samples_per_div)) / 2) - devparms->wave_mem_view_sample_start) /
|
||||
devparms->samplerate * -1.0;
|
||||
|
||||
drawTopLabels(painter);
|
||||
|
||||
drawSmallTriggerArrow(painter, 408, 16, 1, QColor(255, 128, 0));
|
||||
|
|
@ -310,16 +307,24 @@ void WaveCurve::paintEvent(QPaintEvent *)
|
|||
{
|
||||
if(sample_range < (curve_w / 2))
|
||||
{
|
||||
painter->drawLine(i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2),
|
||||
(i + 1) * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2));
|
||||
if(i)
|
||||
if(devparms->displaytype)
|
||||
{
|
||||
painter->drawPoint(i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
painter->drawLine(i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i - 1] * v_sense) + (curve_h / 2),
|
||||
i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2),
|
||||
(i + 1) * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2));
|
||||
if(i)
|
||||
{
|
||||
painter->drawLine(i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i - 1 + sample_start] * v_sense) + (curve_h / 2),
|
||||
i * h_step + w_trace_offset,
|
||||
(devparms->wavebuf[chn][i + sample_start] * v_sense) + (curve_h / 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue