7 #ifndef ROHDESCHWARZ_INSTRUMENTS_INSTRUMENT_HPP
8 #define ROHDESCHWARZ_INSTRUMENTS_INSTRUMENT_HPP
20 #include "rs-visa/visatype.h"
24 #include "boost/format.hpp"
100 std::vector<unsigned char>*
buffer();
102 const std::vector<unsigned char>*
buffer()
const;
104 std::vector<unsigned char>
takeData();
125 bool readData(
unsigned char*
buffer, std::size_t bufferSize, std::size_t* readSize =
nullptr);
128 bool writeData(
const unsigned char* data, std::size_t dataSize, std::size_t* writeSize =
nullptr);
133 bool readData(std::size_t* readSize =
nullptr);
141 template<
class... Args>
142 bool write(std::string scpi_command, Args&&... args)
145 auto format = boost::format(scpi_command);
152 auto command = format.str();
155 using uchar_p =
unsigned char*;
156 auto data =
uchar_p(command.c_str());
157 auto size = command.size();
160 std::size_t writeSize;
168 return writeSize == size;
172 template<
class... Args>
173 std::string
query(std::string scpi_command, Args&&... args)
176 if (!
write(scpi_command, &args...))
179 return std::string();
189 template<
class OutputType>
192 return to_value<OutputType>(
read());
196 template<
class OutputType,
class... Args>
197 OutputType
queryValue(std::string scpi_command, Args&&... args)
199 return to_value<OutputType>(
query(scpi_command, &args...));
206 template<
class... Args>
210 if (!
write(scpi_command, &args...))
323 std::shared_ptr<rohdeschwarz::busses::Bus> _bus;
rohdeschwarz::scpi::BlockData definition
rohdeschwarz::busses::Bus class definition
Object-oriented R&S Instrument control.
void clearErrors()
Clears SCPI errors.
bool readData(unsigned char *buffer, std::size_t bufferSize, std::size_t *readSize=nullptr)
std::vector< double > readAsciiVector()
reads ascii data and parses it into vector <double>
std::size_t bufferSize_B() const
void wait()
Instructs instrument to perform previous SCPI commands before proceeding.
std::vector< std::complex< double > > readAsciiComplexVector()
reads ascii data and parses it into vector <complex <double>>
bool isOpen() const
Check for an open connection to an instrument.
std::string options()
Queries instrument options string.
int timeout_ms()
Query IO timeout time, in milliseconds.
bool writeData(const unsigned char *data, std::size_t dataSize, std::size_t *writeSize=nullptr)
bool isBusError() const
Checks the bus status for an error.
std::vector< std::complex< double > > read64BitComplexVector()
Reads block data and parses it into vector <complex <double>>
std::string id()
Queries instrument ID string.
void close()
Close the connection to the instrument.
bool openVisa(std::string resource, unsigned int timeout_ms=2000)
Open VISA connection to instrument.
std::vector< unsigned char > takeData()
std::string busStatus() const
Gets the bus status as a human-readable string.
OutputType queryValue(std::string scpi_command, Args &&... args)
bool setTimeout(int timeout_ms)
Set IO timeout time.
std::string query(std::string scpi_command, Args &&... args)
bool queryScpiBool(std::string scpi_command, Args &&... args)
bool write(std::string scpi_command, Args &&... args)
bool openTcp(std::string host, unsigned int timeout_ms=2000)
Open tcp socket connection to an instrument.
scpi::BlockData readBlockData()
Read Block Data.
std::vector< double > read64BitVector()
Reads block data and parses it into vector <double>
bool blockUntilOperationComplete(unsigned int timeout_ms=2000)
Queries *OPC? - block until operation complete.
std::vector< unsigned char > * buffer()
void setBufferSize(std::size_t size_bytes)
void preset()
Perform instrument preset.
Object-oriented Block Data storage and manipulation.
rohdeschwarz helper function definition
bool toBool(std::string scpi)
Converts SCPI bool to C/C++ bool.