mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-04 14:07:30 +00:00
Implementation of some SCPI commands via TCP
This commit is contained in:
parent
f1d52f159b
commit
a15d02f217
15 changed files with 627 additions and 19 deletions
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
Generator::Generator(AppWindow *window)
|
||||
: Mode(window, "Signal Generator")
|
||||
, SCPINode("GENerator")
|
||||
{
|
||||
central = new SignalgeneratorWidget(window);
|
||||
|
||||
|
|
@ -18,6 +19,8 @@ Generator::Generator(AppWindow *window)
|
|||
central->setLevel(pref.Startup.Generator.level);
|
||||
}
|
||||
|
||||
setupSCPI();
|
||||
|
||||
finalize(central);
|
||||
connect(central, &SignalgeneratorWidget::SettingsChanged, this, &Generator::updateDevice);
|
||||
}
|
||||
|
|
@ -48,3 +51,52 @@ void Generator::updateDevice()
|
|||
p.generator = central->getDeviceStatus();
|
||||
window->getDevice()->SendPacket(p);
|
||||
}
|
||||
|
||||
void Generator::setupSCPI()
|
||||
{
|
||||
add(new SCPICommand("FREQuency", [=](QStringList params) -> QString {
|
||||
bool ok;
|
||||
if(params.size() != 1) {
|
||||
return "ERROR";
|
||||
}
|
||||
auto newval = params[0].toUInt(&ok);
|
||||
if(!ok) {
|
||||
return "ERROR";
|
||||
} else {
|
||||
central->setFrequency(newval);
|
||||
return "";
|
||||
}
|
||||
}, [=]() -> QString {
|
||||
return QString::number(central->getDeviceStatus().frequency);
|
||||
}));
|
||||
add(new SCPICommand("LVL", [=](QStringList params) -> QString {
|
||||
bool ok;
|
||||
if(params.size() != 1) {
|
||||
return "ERROR";
|
||||
}
|
||||
auto newval = params[0].toDouble(&ok);
|
||||
if(!ok) {
|
||||
return "ERROR";
|
||||
} else {
|
||||
central->setLevel(newval);
|
||||
return "";
|
||||
}
|
||||
}, [=]() -> QString {
|
||||
return QString::number(central->getDeviceStatus().cdbm_level / 100.0);
|
||||
}));
|
||||
add(new SCPICommand("PORT", [=](QStringList params) -> QString {
|
||||
bool ok;
|
||||
if(params.size() != 1) {
|
||||
return "ERROR";
|
||||
}
|
||||
auto newval = params[0].toUInt(&ok);
|
||||
if(!ok || newval > 2) {
|
||||
return "ERROR";
|
||||
} else {
|
||||
central->setPort(newval);
|
||||
return "";
|
||||
}
|
||||
}, [=]() -> QString {
|
||||
return QString::number(central->getDeviceStatus().activePort);
|
||||
}));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,9 @@
|
|||
|
||||
#include "mode.h"
|
||||
#include "signalgenwidget.h"
|
||||
#include "scpi.h"
|
||||
|
||||
class Generator : public Mode
|
||||
class Generator : public Mode, public SCPINode
|
||||
{
|
||||
public:
|
||||
Generator(AppWindow *window);
|
||||
|
|
@ -19,6 +20,7 @@ private slots:
|
|||
void updateDevice();
|
||||
|
||||
private:
|
||||
void setupSCPI();
|
||||
SignalgeneratorWidget *central;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -92,13 +92,13 @@ SignalgeneratorWidget::SignalgeneratorWidget(QWidget *parent) :
|
|||
connect(ui->levelSlider, &QSlider::valueChanged, [=](int value) {
|
||||
setLevel((double) value / 100.0);
|
||||
});
|
||||
connect(ui->EnablePort1, &QCheckBox::clicked, [=](){
|
||||
connect(ui->EnablePort1, &QCheckBox::toggled, [=](){
|
||||
if(ui->EnablePort1->isChecked() && ui->EnablePort2->isChecked()) {
|
||||
ui->EnablePort2->setCheckState(Qt::CheckState::Unchecked);
|
||||
}
|
||||
emit SettingsChanged();
|
||||
});
|
||||
connect(ui->EnablePort2, &QCheckBox::clicked, [=](){
|
||||
connect(ui->EnablePort2, &QCheckBox::toggled, [=](){
|
||||
if(ui->EnablePort1->isChecked() && ui->EnablePort2->isChecked()) {
|
||||
ui->EnablePort1->setCheckState(Qt::CheckState::Unchecked);
|
||||
}
|
||||
|
|
@ -174,3 +174,24 @@ void SignalgeneratorWidget::setFrequency(double frequency)
|
|||
ui->frequency->setValue(frequency);
|
||||
}
|
||||
|
||||
void SignalgeneratorWidget::setPort(int port)
|
||||
{
|
||||
if(port < 0 || port > 2) {
|
||||
return;
|
||||
}
|
||||
switch(port) {
|
||||
case 0:
|
||||
ui->EnablePort1->setChecked(false);
|
||||
ui->EnablePort2->setChecked(false);
|
||||
break;
|
||||
case 1:
|
||||
ui->EnablePort1->setChecked(true);
|
||||
ui->EnablePort2->setChecked(false);
|
||||
break;
|
||||
case 2:
|
||||
ui->EnablePort1->setChecked(false);
|
||||
ui->EnablePort2->setChecked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ signals:
|
|||
public slots:
|
||||
void setLevel(double level);
|
||||
void setFrequency(double frequency);
|
||||
void setPort(int port);
|
||||
|
||||
protected:
|
||||
void timerEvent(QTimerEvent *) override;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue