Work in progress.

merge-requests/1/head
Teuniz 2016-12-28 15:06:11 +01:00
rodzic b0515b26cf
commit 781417c216
5 zmienionych plików z 231 dodań i 20 usunięć

Wyświetl plik

@ -35,7 +35,7 @@
#define PROGRAM_NAME "DSRemote"
#define PROGRAM_VERSION "0.33_1612281232"
#define PROGRAM_VERSION "0.33_1612281501"
#define MAX_PATHLEN 4096

Wyświetl plik

@ -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"
);

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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();
};

Wyświetl plik

@ -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