From b8e3d6011082d330a88387e8698f807d35d69640 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 9 Feb 2017 22:22:56 +0100 Subject: [PATCH] New scope: fixed and enhance trigger delay --- sdrbase/gui/glscopenggui.cpp | 14 +++++++-- sdrbase/gui/glscopenggui.h | 3 +- sdrbase/gui/glscopenggui.ui | 55 +++++++++++++++++++++++++++++------- 3 files changed, 58 insertions(+), 14 deletions(-) diff --git a/sdrbase/gui/glscopenggui.cpp b/sdrbase/gui/glscopenggui.cpp index 75bead96b..ab2b128c9 100644 --- a/sdrbase/gui/glscopenggui.cpp +++ b/sdrbase/gui/glscopenggui.cpp @@ -343,12 +343,18 @@ void GLScopeNGGUI::on_trigLevelFine_valueChanged(int value) changeCurrentTrigger(); } -void GLScopeNGGUI::on_trigDelay_valueChanged(int value) +void GLScopeNGGUI::on_trigDelayCoarse_valueChanged(int value) { setTrigDelayDisplay(); changeCurrentTrigger(); } +void GLScopeNGGUI::on_trigDelayFine_valueChanged(int value) +{ + setTrigDelayDisplay(); + changeCurrentTrigger(); +} + void GLScopeNGGUI::on_trigPre_valueChanged(int value) { setTrigPreDisplay(); @@ -558,7 +564,8 @@ void GLScopeNGGUI::setTrigLevelDisplay() void GLScopeNGGUI::setTrigDelayDisplay() { - unsigned int n_samples_delay = m_traceLenMult * ScopeVisNG::m_traceChunkSize * ui->trigDelay->value(); + double delayMult = ui->trigDelayCoarse->value() + ui->trigDelayFine->value() / 100.0; + unsigned int n_samples_delay = m_traceLenMult * ScopeVisNG::m_traceChunkSize * delayMult; if (n_samples_delay < 1000) { ui->trigDelayText->setToolTip(tr("%1S").arg(n_samples_delay)); @@ -644,8 +651,9 @@ void GLScopeNGGUI::fillTriggerData(ScopeVisNG::TriggerData& triggerData) triggerData.m_triggerLevel = (ui->trigLevelCoarse->value() / 100.0) + (ui->trigLevelFine->value() / 20000.0); triggerData.m_triggerPositiveEdge = ui->trigPos->isChecked(); triggerData.m_triggerBothEdges = ui->trigBoth->isChecked(); - triggerData.m_triggerDelay = ui->trigDelay->value(); triggerData.m_triggerRepeat = ui->trigCount->value(); + double delayMult = ui->trigDelayCoarse->value() + ui->trigDelayFine->value() / 100.0; + triggerData.m_triggerDelay = (int) (m_traceLenMult * ScopeVisNG::m_traceChunkSize * delayMult); } void GLScopeNGGUI::applySettings() diff --git a/sdrbase/gui/glscopenggui.h b/sdrbase/gui/glscopenggui.h index bc79bb995..1d6b21f3e 100644 --- a/sdrbase/gui/glscopenggui.h +++ b/sdrbase/gui/glscopenggui.h @@ -113,7 +113,8 @@ private slots: void on_trigBoth_toggled(bool checked); void on_trigLevelCoarse_valueChanged(int value); void on_trigLevelFine_valueChanged(int value); - void on_trigDelay_valueChanged(int value); + void on_trigDelayCoarse_valueChanged(int value); + void on_trigDelayFine_valueChanged(int value); void on_trigPre_valueChanged(int value); void on_trigOneShot_toggled(bool checked); void on_freerun_toggled(bool checked); diff --git a/sdrbase/gui/glscopenggui.ui b/sdrbase/gui/glscopenggui.ui index 0135de025..a2cc681e4 100644 --- a/sdrbase/gui/glscopenggui.ui +++ b/sdrbase/gui/glscopenggui.ui @@ -1386,20 +1386,55 @@ kS/s - - - Trigger delay + + + 2 - - 100 + + 0 - - 1 + + 0 - - Qt::Horizontal + + 0 - + + 0 + + + + + Trigger delay coarse (trace length multiplier) + + + 100 + + + 1 + + + Qt::Horizontal + + + + + + + Trigger delay fine (trace length divider) + + + 100 + + + 1 + + + Qt::Horizontal + + + +