// ============================================================================ // // = CONTEXT // TANGO Project - SCPI Keithley Electrometer Support Library // // = FILENAME // KeithleySCPIProtocol.h // // = AUTHOR // X. Elattaoui // // ============================================================================ #ifndef _KEITHLEY_SCPI_PROTOCOL_H_ #define _KEITHLEY_SCPI_PROTOCOL_H_ #include <vector> #include "ElectrometerProtocol.h" #include "ElectrometerException.h" /** * \addtogroup Standard Commands Protocol * @{ */ /** * \brief This class manage the Keithley SCPI Commands Protocol * * \author Xavier Elattaoui * \date 11-2006 */ class KeithleySCPIProtocol : public ElectrometerProtocol { public: /** * \brief Initialization. */ KeithleySCPIProtocol (std::string& gpib_device_name); /** * \brief Release resources. */ virtual ~KeithleySCPIProtocol (void); /** * \brief Electrometer Functions. */ void set_range (std::string value) ; void autoRange_on (void); void autoRange_off (void); void zero_check_on (void); void zero_check_off (void); void zero_correct_on (void); void zero_correct_off (void); void zero_correct_state_on (void); void zero_correct_state_off(void); void auto_zero_on (void); void auto_zero_off (void); void reset (void); void clear_registers (void); /** * \brief Electrometer Mode. */ void setAmperMeterMode (void); void setVoltMeterMode (void); void setOhmMeterMode (void); void setCoulombMeterMode(void); /** * \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 : cmd used to know if the integration cycle is done! */ bool SRQLineState (void); //- used to know if the integration cycle is done! short readStatusByteRegister (void); //- device status byte register value on SRQ! void init_keithley (void); //- start operation(s) void abort (void); //- cancel only all operation(s) started by init_keithley() /** * \brief Electrometer : Acquisition config */ void set_knplc (std::string nPLC); void set_triggercount (std::string trigcounts); void set_triggerdelay (std::string trigdelay); void set_triggerdelayAuto (std::string trigdelAuto); void set_averagecount (std::string avercounts); void set_averagecontrol (std::string averctrl); void averageStateON (void); void averageStateOFF (void); std::string get_knplc (void); std::string get_triggercount (void); std::string get_triggerdelay (void); std::string get_triggerdelayAuto(void); std::string get_averagecount (void); std::string get_averagecontrol (void); void read_data_with_no_timestamp(void); /** * \brief Electrometer : Buffer config */ void set_buffer_size (std::string size); void clear_buffer (void); void store_raw_input (void); void start_storing (void); void enable_SRQBufferFull (void); void disable_SRQBufferFull (void); std::string get_buffer_size (void); /** * \brief Get Raw Electrometer Status. */ std::string get_raw_status (void) ; /** * \brief Electrometer : getter and setter. */ std::string get_mode (void); std::string get_range (void); /** * */ void set_isDiffSuportedMode (bool supportDiffMode) { isDiffSuportedMode = supportDiffMode; }; protected : std::vector<double> buildDataList (std::string listToParse); private : bool isDiffSuportedMode; std::string trigCountStr; }; /** @} */ //- end addtogroup #endif // _KEITHLEY_SCPI_PROTOCOL_H_