Skip to content
Snippets Groups Projects

Add OPC to all SCIPPs commands.

Merged Karol Krizka requested to merge kk_scipps-opc into devel
All threads resolved!
Files
2
+ 51
22
@@ -21,7 +21,7 @@ bool SCPIPs::ping()
void SCPIPs::reset()
{
m_com->send("*RST");
send("*RST");
if(!ping())
throw std::runtime_error("No communication after reset.");
@@ -35,14 +35,12 @@ std::string SCPIPs::identify()
void SCPIPs::turnOn(unsigned channel)
{
setChannel(channel);
m_com->send("OUTPUT ON");
send("OUTPUT ON", channel);
}
void SCPIPs::turnOff(unsigned channel)
{
setChannel(channel);
m_com->send("OUTPUT OFF");
send("OUTPUT OFF", channel);
}
void SCPIPs::setChannel(unsigned channel)
@@ -55,25 +53,22 @@ void SCPIPs::setChannel(unsigned channel)
if(m_maxChannels==1) return; // No need to change channel
m_com->send("INST:NSEL " + std::to_string(channel));
send("INST:NSEL " + std::to_string(channel));
}
void SCPIPs::setCurrentLevel(double cur, unsigned channel)
{
setChannel(channel);
m_com->send("CURRENT " + std::to_string(cur));
send("CURRENT " + std::to_string(cur), channel);
}
double SCPIPs::getCurrentLevel(unsigned channel)
{
setChannel(channel);
return std::stod(m_com->sendreceive("CURRENT?"));
return std::stod(sendreceive("CURRENT?", channel));
}
void SCPIPs::setCurrentProtect(double maxcur, unsigned channel)
{
setChannel(channel);
m_com->send("CURRENT " + std::to_string(maxcur));
send("CURRENT " + std::to_string(maxcur), channel);
}
double SCPIPs::getCurrentProtect(unsigned channel)
@@ -83,26 +78,22 @@ double SCPIPs::getCurrentProtect(unsigned channel)
double SCPIPs::measureCurrent(unsigned channel)
{
setChannel(channel);
return std::stod(m_com->sendreceive("MEAS:CURR?"));
return std::stod(sendreceive("MEAS:CURR?", channel));
}
void SCPIPs::setVoltageLevel(double volt, unsigned channel)
{
setChannel(channel);
m_com->send("VOLTAGE " + std::to_string(volt));
send("VOLTAGE " + std::to_string(volt), channel);
}
double SCPIPs::getVoltageLevel(unsigned channel)
{
setChannel(channel);
return std::stod(m_com->sendreceive("VOLTAGE?"));
return std::stod(sendreceive("VOLTAGE?", channel));
}
void SCPIPs::setVoltageProtect(double maxvolt, unsigned channel)
{
setChannel(channel);
m_com->send("VOLTAGE " + std::to_string(maxvolt));
send("VOLTAGE " + std::to_string(maxvolt), channel);
}
double SCPIPs::getVoltageProtect(unsigned channel)
@@ -112,8 +103,46 @@ double SCPIPs::getVoltageProtect(unsigned channel)
double SCPIPs::measureVoltage(unsigned channel)
{
setChannel(channel);
return std::stod(m_com->sendreceive("MEAS:VOLT?"));
return std::stod(sendreceive("MEAS:VOLT?", channel));
}
void SCPIPs::send(const std::string& cmd)
{
m_com->send(cmd);
std::string opcreply=m_com->sendreceive("*OPC?");
if(opcreply!="1")
throw std::runtime_error("SCPI command not completed");
}
void SCPIPs::send(const std::string& cmd, unsigned channel)
{
if(m_maxChannels>0)
{ // In-range channel check
if(channel>m_maxChannels)
throw std::runtime_error("Invalid channel: "+std::to_string(channel));
}
if(m_maxChannels!=1)
m_com->send("INST:NSEL "+std::to_string(channel));
send(cmd);
}
std::string SCPIPs::sendreceive(const std::string& cmd)
{
return m_com->sendreceive(cmd);
}
std::string SCPIPs::sendreceive(const std::string& cmd, unsigned channel)
{
if(m_maxChannels>0)
{ // In-range channel check
if(channel>m_maxChannels)
throw std::runtime_error("Invalid channel: "+std::to_string(channel));
}
if(m_maxChannels!=1)
m_com->send("INST:NSEL "+std::to_string(channel));
return sendreceive(cmd);
}
Loading