Code owners
Assign users and groups as approvers for specific file changes. Learn more.
KeithleyDDCProtocol.h 3.97 KiB
// ============================================================================
//
// = CONTEXT
// TANGO Project - DDC Keithley Electrometer Support Library
// ( DDC for Device Dependent Command )
// = FILENAME
// KeithleyDDCProtocol.h
//
// = AUTHOR
// X. Elattaoui
//
// ============================================================================
#ifndef _KEITHLEY_DDC_PROTOCOL_H_
#define _KEITHLEY_DDC_PROTOCOL_H_
#include "ElectrometerProtocol.h"
#include "ElectrometerException.h"
#include "TangoGpibLink.h"
/**
* \addtogroup Standard Commands Protocol
* @{
*/
/**
* \brief This class manage the Keithley DDC Commands Protocol
*
* \author Xavier Elattaoui
* \date 11-2006
*/
class KeithleyDDCProtocol : public ElectrometerProtocol
{
public:
/**
* \brief Initialization.
*/
KeithleyDDCProtocol (std::string& gpib_device_name);
/**
* \brief Release resources.
*/
virtual ~KeithleyDDCProtocol (void);
/**
* \brief create the communication device proxy.
*/
bool build_communicationLink();
/**
* \brief Electrometer Functions.
*/
void set_range (std::string value);
void autoRange_on (void);
void autoRange_off (void);
void autoRange_OFF_forK486_487 (void);
void autoRange_OFF_forK617_6512 (void);
void zero_check_on (void);
void zero_check_off (void);
void zero_correct_on (void);
void zero_correct_off (void);
void auto_zero_on (void);
void auto_zero_off (void);
void reset (void);
// void local (void); // To be implemented in future library versions
// void remote (void);
/**
* \brief Electrometer : cmd used to know if the integration cycle is done!
*/
virtual bool SRQLineState (void); //- used to know if the integration cycle is done!
virtual short readStatusByteRegister (void); //- device status byte register value on SRQ!
/**
* \brief Electrometer : cmd to get electrometer data.
*/
std::string get_value(void);
std::vector<double> get_integratedValue (void);
std::vector<double> get_fetchValue (void);
/**
* \brief Electrometer Mode.
*/
void setAmperMeterMode (void);
void setAmperMeterMode_forK487 (void);
void setVoltMeterMode (void);
void setOhmMeterMode (void);
void setCoulombMeterMode (void);
void clear_registers (void);
/**
* \brief Get Raw Electrometer Status.
*/
std::string get_raw_status (void) ;
/**
* \brief Returns the DDC Keithley configuration
* asking its "Machine Status" word (= Using "U0X" cmd) .
*/
std::string get_DDC_configuration (void);
/**
* \brief Electrometer Mode : getters and setters.
*/
std::string get_mode (void) { return _mode; }
std::string get_range (void);
bool get_overloadRangeState (void) { return _is_overloaded; } //- used to know if the device range is overloaded!
/**
* \brief Methods to configure the Integration mode
*/
void set_buffer_size (std::string);
void set_triggerMode (std::string);
void enable_SRQBufferFull (void);
void disable_SRQBufferFull (void);
void set_conversionRate (void);
void enable_readingWithPrefix (void);
void disable_readingWithPrefix (void);
void enable_ReadingsFromElectrometer (void);
void enable_readingsFromBuffer_K617_6512(void);
void enable_readingsFromBuffer_K486_487 (void);
//- only for K_486 and K_487 devices
void enable_integrationPeriod (void);
/* TODO : for next PicoLib evolution
//- CMD B
virtual void reading_source (void);
//- CMD Q
virtual void data_store (void);
//- CMD G
virtual void data_format (void);
//- = REL
virtual void baseline_suppression_ON(void);
virtual void baseline_suppression_OFF(void);
*/
protected :
std::vector<double> buildDataList (std::string listToParse);
private :
CommunicationLink* _communication_link;
bool _is_overloaded;
};
/** @} */ //- end addtogroup
#endif // _KEITHLEY_DDC_PROTOCOL_H_