forked from Ivasoft/DSView
Enhance serial trigger @ LA mode
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
#include <QPainter>
|
||||
#include <QRegExpValidator>
|
||||
#include <QMessageBox>
|
||||
#include <QSplitter>
|
||||
|
||||
#include "libsigrok4DSL/libsigrok.h"
|
||||
|
||||
@@ -186,23 +187,32 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) :
|
||||
_serial_value_lineEdit->setInputMask("X X X X X X X X X X X X X X X X");
|
||||
_serial_value_lineEdit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
|
||||
_serial_vcnt_spinBox = new QSpinBox(_widget);
|
||||
_serial_vcnt_spinBox->setRange(1, INT32_MAX);
|
||||
_serial_vcnt_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||
|
||||
QLabel *serial_value_exp_label = new QLabel("1 1 1 1 1 1\n5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0", _widget);
|
||||
serial_value_exp_label->setFont(font);
|
||||
|
||||
QVBoxLayout *serial_layout = new QVBoxLayout();
|
||||
QGridLayout *serial_glayout = new QGridLayout();
|
||||
serial_glayout->addWidget(serial_value_exp_label, 1, 1, 1, 4);
|
||||
serial_glayout->addWidget(serial_value_exp_label, 1, 1, 1, 3);
|
||||
serial_glayout->addWidget(_serial_start_label, 2, 0);
|
||||
serial_glayout->addWidget(_serial_start_lineEdit, 2, 1, 1, 4);
|
||||
serial_glayout->addWidget(new QLabel(_widget), 2, 2);
|
||||
serial_glayout->addWidget(_serial_start_lineEdit, 2, 1, 1, 3);
|
||||
serial_glayout->addWidget(new QLabel(_widget), 2, 4);
|
||||
serial_glayout->addWidget(_serial_stop_label, 3, 0);
|
||||
serial_glayout->addWidget(_serial_stop_lineEdit, 3, 1, 1, 4);
|
||||
serial_glayout->addWidget(_serial_stop_lineEdit, 3, 1, 1, 3);
|
||||
serial_glayout->addWidget(_serial_edge_label, 4, 0);
|
||||
serial_glayout->addWidget(_serial_edge_lineEdit, 4, 1, 1, 4);
|
||||
serial_glayout->addWidget(_serial_data_lable, 5, 0);
|
||||
serial_glayout->addWidget(_serial_data_comboBox, 5, 1);
|
||||
serial_glayout->addWidget(_serial_value_lable, 6, 0);
|
||||
serial_glayout->addWidget(_serial_value_lineEdit, 6, 1, 1, 4);
|
||||
serial_glayout->addWidget(_serial_edge_lineEdit, 4, 1, 1, 3);
|
||||
|
||||
serial_glayout->addWidget(new QLabel(_widget), 5, 0, 1, 5);
|
||||
serial_glayout->addWidget(_serial_data_lable, 6, 0);
|
||||
serial_glayout->addWidget(_serial_data_comboBox, 6, 1);
|
||||
serial_glayout->addWidget(new QLabel(tr("counter"), _widget), 6, 4);
|
||||
serial_glayout->addWidget(_serial_value_lable, 7, 0);
|
||||
serial_glayout->addWidget(_serial_value_lineEdit, 7, 1, 1, 3);
|
||||
serial_glayout->addWidget(_serial_vcnt_spinBox, 7, 4);
|
||||
serial_glayout->addWidget(new QLabel(_widget), 7, 5);
|
||||
serial_layout->addLayout(serial_glayout);
|
||||
serial_layout->addSpacing(20);
|
||||
serial_layout->addWidget(new QLabel(tr("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge")));
|
||||
@@ -436,10 +446,16 @@ bool TriggerDock::commit_trigger()
|
||||
}
|
||||
|
||||
// trigger count update
|
||||
for (i = 0; i < stages_comboBox->currentText().toInt(); i++) {
|
||||
ds_trigger_stage_set_count(i, TriggerProbes,
|
||||
_count0_spinBox_list.at(i)->value() - 1,
|
||||
_count1_spinBox_list.at(i)->value() - 1);
|
||||
if (_adv_tabWidget->currentIndex() == 0) {
|
||||
for (i = 0; i < stages_comboBox->currentText().toInt(); i++) {
|
||||
ds_trigger_stage_set_count(i, TriggerProbes,
|
||||
_count0_spinBox_list.at(i)->value() - 1,
|
||||
_count1_spinBox_list.at(i)->value() - 1);
|
||||
}
|
||||
} else if(_adv_tabWidget->currentIndex() == 1){
|
||||
ds_trigger_stage_set_count(4, TriggerProbes,
|
||||
_serial_vcnt_spinBox->value() - 1,
|
||||
0);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -482,6 +498,7 @@ QJsonObject TriggerDock::get_session()
|
||||
trigSes["triggerClock"] = _serial_edge_lineEdit->text();
|
||||
trigSes["triggerChannel"] = _serial_data_comboBox->currentIndex();
|
||||
trigSes["triggerData"] = _serial_value_lineEdit->text();
|
||||
trigSes["triggerVcnt"] = _serial_vcnt_spinBox->value();
|
||||
|
||||
return trigSes;
|
||||
}
|
||||
@@ -518,6 +535,7 @@ void TriggerDock::set_session(QJsonObject ses)
|
||||
_serial_edge_lineEdit->setText(ses["triggerClock"].toString());
|
||||
_serial_data_comboBox->setCurrentIndex(ses["triggerChannel"].toDouble());
|
||||
_serial_value_lineEdit->setText(ses["triggerData"].toString());
|
||||
_serial_vcnt_spinBox->setValue(ses["triggerVcnt"].toDouble());
|
||||
}
|
||||
|
||||
} // namespace dock
|
||||
|
||||
@@ -125,6 +125,8 @@ private:
|
||||
QComboBox *_serial_data_comboBox;
|
||||
QLabel *_serial_value_lable;
|
||||
QLineEdit *_serial_value_lineEdit;
|
||||
QLabel *_serial_vcnt_lable;
|
||||
QSpinBox *_serial_vcnt_spinBox;
|
||||
};
|
||||
|
||||
} // namespace dock
|
||||
|
||||
@@ -345,6 +345,11 @@ void View::set_trig_pos(quint64 trig_pos)
|
||||
_trig_cursor->set_index(trig_pos);
|
||||
_show_trig_cursor = true;
|
||||
set_scale_offset(_scale, time - _scale * get_view_width() / 2);
|
||||
|
||||
_trigger_time = QDateTime::currentDateTime();
|
||||
const int64_t secs = time - _session.get_device()->get_sample_time();
|
||||
_trigger_time = _trigger_time.addSecs(secs);
|
||||
|
||||
_ruler->update();
|
||||
_viewport->update();
|
||||
}
|
||||
@@ -824,5 +829,10 @@ double View::get_max_offset()
|
||||
- _scale * (get_view_width() * MaxViewRate);
|
||||
}
|
||||
|
||||
QString View::trigger_time()
|
||||
{
|
||||
return _trigger_time.toString("yyyy-MM-dd hh:mm:ss ddd");
|
||||
}
|
||||
|
||||
} // namespace view
|
||||
} // namespace pv
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
#include <QAbstractScrollArea>
|
||||
#include <QSizeF>
|
||||
#include <QDateTime>
|
||||
|
||||
#include "../toolbars/samplingbar.h"
|
||||
#include "../data/signaldata.h"
|
||||
@@ -184,6 +185,8 @@ public:
|
||||
|
||||
void set_sample_limit(uint64_t sample_limit, bool force = false);
|
||||
|
||||
QString trigger_time();
|
||||
|
||||
signals:
|
||||
void hover_point_changed();
|
||||
|
||||
@@ -272,6 +275,8 @@ private:
|
||||
uint64_t _search_pos;
|
||||
|
||||
QPointF _hover_point;
|
||||
|
||||
QDateTime _trigger_time;
|
||||
};
|
||||
|
||||
} // namespace view
|
||||
|
||||
@@ -165,6 +165,8 @@ void Viewport::paintEvent(QPaintEvent *event)
|
||||
if (_view.get_signalHeight() != _curSignalHeight)
|
||||
_curSignalHeight = _view.get_signalHeight();
|
||||
|
||||
paintTrigTime(p);
|
||||
|
||||
p.end();
|
||||
}
|
||||
|
||||
@@ -813,8 +815,7 @@ void Viewport::measure()
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_measure_type != NO_MEASURE)
|
||||
measure_updated();
|
||||
measure_updated();
|
||||
}
|
||||
|
||||
void Viewport::paintMeasure(QPainter &p)
|
||||
@@ -1169,5 +1170,14 @@ void Viewport::on_drag_timer()
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::paintTrigTime(QPainter &p)
|
||||
{
|
||||
if (_view.session().get_device()->dev_inst()->mode == LOGIC) {
|
||||
p.setPen(Trace::dsBack);
|
||||
p.drawText(this->rect(), Qt::AlignRight | Qt::AlignBottom,
|
||||
"Last Trigger Time: "+_view.trigger_time());
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace view
|
||||
} // namespace pv
|
||||
|
||||
@@ -110,6 +110,7 @@ private:
|
||||
void paintSignals(QPainter& p);
|
||||
void paintProgress(QPainter& p);
|
||||
void paintMeasure(QPainter &p);
|
||||
void paintTrigTime(QPainter &p);
|
||||
|
||||
void measure();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user