diff --git a/src/libPS/SCPIPs.cpp b/src/libPS/SCPIPs.cpp index 60660ac5f9a28c1781039de12a0a32b56836f6fd..78adb996e89994f7e3965abaee31d3d2eb5d2210 100644 --- a/src/libPS/SCPIPs.cpp +++ b/src/libPS/SCPIPs.cpp @@ -109,11 +109,13 @@ double SCPIPs::measureVoltage(unsigned channel) void SCPIPs::send(const std::string& cmd) { + m_com->lock(); m_com->send(cmd); std::string opcreply=m_com->sendreceive("*OPC?"); utils::rtrim(opcreply); if(opcreply!="1") throw std::runtime_error("SCPI command not completed"); + m_com->unlock(); } void SCPIPs::send(const std::string& cmd, unsigned channel) @@ -124,10 +126,12 @@ void SCPIPs::send(const std::string& cmd, unsigned channel) throw std::runtime_error("Invalid channel: "+std::to_string(channel)); } + m_com->lock(); if(m_maxChannels!=1) m_com->send("INST:NSEL "+std::to_string(channel)); send(cmd); + m_com->unlock(); } std::string SCPIPs::sendreceive(const std::string& cmd) @@ -143,8 +147,11 @@ std::string SCPIPs::sendreceive(const std::string& cmd, unsigned channel) throw std::runtime_error("Invalid channel: "+std::to_string(channel)); } + m_com->lock(); if(m_maxChannels!=1) m_com->send("INST:NSEL "+std::to_string(channel)); - return sendreceive(cmd); + std::string ret=sendreceive(cmd); + m_com->unlock(); + return ret; }