33 return _bus !=
nullptr;
43 _bus.reset(
new Visa(resource, timeout_ms));
63 _bus.reset(
new Socket(host, timeout_ms));
85 return _bus->bufferSize_B();
91 _bus->setBufferSize(size_bytes);
97 return _bus->buffer();
102 return _bus->buffer();
107 return _bus->takeData();
113 return _bus->timeout_ms();
119 return _bus->setTimeout(timeout_ms);
125 return _bus->readData(buffer, bufferSize, readSize);
131 return _bus->writeData(data, dataSize, writeSize);
137 return _bus->readData(readSize);
145 if (!readData(&size))
148 return std::string();
153 return std::string(data, size);
160 return std::vector<double>();
167 return std::vector<std::complex<double>>();
174 std::size_t read_size;
175 if (!readData(&read_size))
182 auto data = takeData();
183 data.resize(read_size);
198 if (!readData(&read_size))
205 const auto begin = buffer()->begin();
221 return std::vector<double>();
225 return to_vector<double>(data.
data(), data.
size());
236 return std::vector<std::complex<double>>();
246 return _bus->isError();
252 return _bus->statusMessage();
258 return trim(query(
"*IDN?"));
264 return trim(query(
"*OPT?"));
289 setTimeout(timeout_ms);
290 return queryScpiBool(
"*OPC?");
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.
bool setTimeout(int timeout_ms)
Set IO timeout time.
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.
Class for preserving the VISA timeout value in a particular scope.
Object-oriented Block Data storage and manipulation.
bool isHeaderError() const
Checks the header for errors.
bool isComplete() const
Checks for complete Block Data header and payload.
std::size_t size() const
Gets payload size, in bytes, from a complete header.
unsigned char * data()
Gets a pointer to the payload data.
void push_back(std::vector< unsigned char >::const_iterator begin, std::size_t size)
Copies data to block.
rohdeschwarz helper function definition
const char * const_char_p
rohdeschwarz::instruments::Instrument definition
boost::system::system_error system_error
System error exception.
std::system_error system_error
System error exception.
std::vector< std::complex< double > > to_vector_complex_double(in_type *data, std::size_t data_size)
Converts a vector of a primitive type to a vector of complex<double>
std::string trim(const std::string &text)
Trims whitespace beginning and end of string.
busses::socket::Socket Socket
rohdeschwarz::instruments::PreserveTimeout definition
const char * const_char_p
rohdeschwarz::busses::socket::Socket class definition
rohdeschwarz::to_vector(), rohdeschwarz::to_vector_complex_double() definitions and implementations