mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-04 22:17:31 +00:00
Enforce amplitude cal point limit, SCPI command for reading trace data
This commit is contained in:
parent
611b1ef59d
commit
62939ff882
21 changed files with 342 additions and 116 deletions
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
TraceWidget::TraceWidget(TraceModel &model, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
SCPINode("TRACe"),
|
||||
ui(new Ui::TraceWidget),
|
||||
model(model)
|
||||
{
|
||||
|
|
@ -23,6 +24,7 @@ TraceWidget::TraceWidget(TraceModel &model, QWidget *parent) :
|
|||
connect(ui->bExport, &QPushButton::clicked, this, &TraceWidget::exportDialog);
|
||||
installEventFilter(this);
|
||||
createCount = 0;
|
||||
SetupSCPI();
|
||||
}
|
||||
|
||||
TraceWidget::~TraceWidget()
|
||||
|
|
@ -133,3 +135,54 @@ void TraceWidget::on_view_clicked(const QModelIndex &index)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TraceWidget::SetupSCPI()
|
||||
{
|
||||
auto findTrace = [=](QStringList params) -> Trace* {
|
||||
if(params.size() < 1) {
|
||||
return nullptr;
|
||||
}
|
||||
// check if trace is specified by number
|
||||
bool ok;
|
||||
auto n = params[0].toUInt(&ok);
|
||||
if(ok) {
|
||||
// check if enough traces exist
|
||||
if(n < model.getTraces().size()) {
|
||||
return model.getTraces()[n];
|
||||
} else {
|
||||
// invalid number
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
// trace specified by name
|
||||
for(auto t : model.getTraces()) {
|
||||
if(t->name().compare(params[0], Qt::CaseInsensitive) == 0) {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
// not found
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
add(new SCPICommand("LIST", nullptr, [=](QStringList){
|
||||
QString ret;
|
||||
for(auto t : model.getTraces()) {
|
||||
ret += t->name() + ",";
|
||||
}
|
||||
ret.chop(1);
|
||||
return ret;
|
||||
}));
|
||||
add(new SCPICommand("DATA", nullptr, [=](QStringList params) -> QString {
|
||||
auto t = findTrace(params);
|
||||
if(!t) {
|
||||
return "ERROR";
|
||||
}
|
||||
QString ret;
|
||||
for(unsigned int i=0;i<t->size();i++) {
|
||||
auto d = t->sample(i);
|
||||
ret += "["+QString::number(d.x)+","+QString::number(d.y.real())+","+QString::number(d.y.imag())+"],";
|
||||
}
|
||||
ret.chop(1);
|
||||
return ret;
|
||||
}));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,12 +3,13 @@
|
|||
|
||||
#include <QWidget>
|
||||
#include "tracemodel.h"
|
||||
#include "scpi.h"
|
||||
|
||||
namespace Ui {
|
||||
class TraceWidget;
|
||||
}
|
||||
|
||||
class TraceWidget : public QWidget
|
||||
class TraceWidget : public QWidget, public SCPINode
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
|
@ -26,6 +27,7 @@ protected slots:
|
|||
virtual void importDialog() = 0;
|
||||
|
||||
protected:
|
||||
void SetupSCPI();
|
||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||
virtual Trace::LiveParameter defaultParameter() = 0;
|
||||
QPoint dragStartPosition;
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ bool TraceXYPlot::isTDRtype(TraceXYPlot::YAxisType type)
|
|||
void TraceXYPlot::axisSetupDialog()
|
||||
{
|
||||
auto setup = new XYplotAxisDialog(this);
|
||||
setup->exec();
|
||||
setup->show();
|
||||
}
|
||||
|
||||
void TraceXYPlot::updateContextMenu()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue