Implementation of some SCPI commands via TCP

This commit is contained in:
Jan Käberich 2021-04-11 00:10:22 +02:00
parent f1d52f159b
commit a15d02f217
15 changed files with 627 additions and 19 deletions

View file

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