Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ElectrometerProtocol.h 6.89 KiB
// ============================================================================
//
// = CONTEXT
// TANGO Project - Electrometer Support Library
//
// = FILENAME
// ElectrometerProtocol.h
//
// = AUTHOR
// X. Elattaoui
//
//
// $Author: xavela $
//
// $Revision: 1.12 $
//
// $Log: not supported by cvs2svn $
// Revision 1.11 2009/01/19 12:00:25 xavela
// xavier :
// - MCCE2 (Novelec part) : methods to change the active channel to communicate with.
//
// Revision 1.10 2008/06/20 14:36:24 xavela
// xavier :
// - DDC status show only errors if any
// - added command to get DDC model configuration
//
// Revision 1.9 2008/04/15 12:52:00 xavela
// xavier :
// - SRQ management changed :
// * ReadStatusByteRegister method added
// * IsSrqLineUP added
//
// Revision 1.8 2008/02/15 10:17:55 xavela
// xavier :
// - command abort added for SCPI Keithleys
//
// Revision 1.7 2008/02/15 10:15:16 xavela
// xavier :
// - command abort added for SCPI Keithleys
//
// Revision 1.6 2008/02/15 08:49:46 xavela
// xavier :
// - minor change for integration time
//
// Revision 1.5 2008/02/13 15:51:44 xavela
// xavier :
// - Integration Mode available for DDC/SCPI devices
// - tests done with a K617 (DDC) and a K6485 (SCPI)
//
// Revision 1.4 2008/02/11 16:55:04 xavela
// xavier : for DDC part
// - integration mode OK (tests done with K_486)
//
// - TODO: DDC/SCPI
// integration time for ScanServer compatibility.
// report config for all DDC
// add configuration in SCPI start command
//
// Revision 1.3 2008/02/08 17:24:32 xavela
// xavier : for DDC part
// - trigger mode and buffer size management added.
// - TODO: DDC/SCPI
// integration time for ScanServer compatibility.
// SRQ management for Keithley Integration mode
//
// Revision 1.2 2007/11/27 10:17:46 xavela
// xavier :
// - modif done on Novelec part :
// init_MCCE2() added
//
// Revision 1.1 2007/07/09 13:20:35 stephle
// initial import
//
//
// ============================================================================
#ifndef _ELECTROMETER_PROTOCOL_H_
#define _ELECTROMETER_PROTOCOL_H_
#include <vector>
#include "CommunicationLink.h"
/**
* \addtogroup Standard Commands Protocol
* @{
*/
/**
* \brief This abstract class manage the Electrometers Commands Protocol
*
* \author Xavier Elattaoui
* \date 11-2006
*/
class ElectrometerProtocol
{
public:
/**
* \brief Initialization.
*/
ElectrometerProtocol ();
/**
* \brief Release resources.
*/
virtual ~ElectrometerProtocol ();
/**
* \brief create the communication device proxy.
*/
virtual bool build_communicationLink() = 0;
/**
* \brief Common Electrometer Functions.
*/
virtual void set_range (std::string val)= 0;
virtual void reset (void) = 0;
virtual void local (void);
virtual void remote (void);
/**
* \brief Common Electrometer : getters & setters.
*/
virtual std::string get_value(void) = 0;
virtual std::string get_mode (void) = 0;
virtual std::string get_range(void) = 0;
virtual std::vector<double> get_integratedValue (void);
virtual std::vector<double> get_fetchValue (void);
virtual bool SRQLineState (void); //- used to know if the integration cycle is done!
virtual short readStatusByteRegister (void); //- device status byte register value on SRQ!
virtual bool get_overloadRangeState (void); //- used to know if the device range is overloaded!
/**
* \brief Common Get Raw Electrometer Status.
*/
virtual std::string get_raw_status (void) = 0;
/**
* \brief Returns the DDC Keithley configuration
* asking its "Machine Status" word (= Using "U0X" cmd) .
*/
virtual std::string get_DDC_configuration (void);
/**
* \brief Electrometer : Keithley protocol dependent commands.
*/
virtual void init_keithley (void);
virtual void abort (void);
virtual void set_knplc (std::string nPLC);
virtual void set_triggercount (std::string trigcounts);
virtual void set_triggerdelay (std::string trigdelay);
virtual void set_triggerMode (std::string);
virtual void set_triggerdelayAuto (std::string trigdelAuto);
virtual void set_averagecount (std::string avercounts);
virtual void set_averagecontrol (std::string averctrl);
virtual std::string get_knplc (void);
virtual std::string get_triggercount (void);
virtual std::string get_triggerdelay (void);
virtual std::string get_triggerdelayAuto(void);
virtual std::string get_averagecount (void);
virtual std::string get_averagecontrol (void);
virtual void clear_registers (void);
virtual void averageStateON (void);
virtual void averageStateOFF (void);
virtual void setAmperMeterMode(void);
virtual void setVoltMeterMode (void);
virtual void setOhmMeterMode (void);
virtual void setCoulombMeterMode(void);
virtual void autoRange_on (void);
virtual void autoRange_off (void);
virtual void zero_check_on (void);
virtual void zero_check_off (void);
virtual void zero_correct_on (void);
virtual void zero_correct_off (void);
virtual void auto_zero_on (void);
virtual void auto_zero_off (void);
/**
* \brief Electrometer : Integration Mode configuration
*/
virtual void set_buffer_size (std::string size);
virtual void clear_buffer (void);
virtual void store_raw_input (void);
virtual void start_storing (void);
virtual void enable_SRQBufferFull (void);
virtual void disable_SRQBufferFull (void);
virtual void set_conversionRate (void);
virtual void enable_readingWithPrefix (void);
virtual void disable_readingWithPrefix (void);
virtual void enable_ReadingsFromElectrometer (void);
virtual void enable_readingsFromBuffer_K617_6512(void);
virtual void enable_readingsFromBuffer_K486_487 (void);
virtual void read_data_with_no_timestamp (void);
virtual std::string get_buffer_size (void);
//- only for K_486 and K_487 devices
virtual void enable_integrationPeriod(void);
/**
* \brief Electrometer : Novelec protocol dependent commands.
*/
virtual void switch_MCCE2_ON (void);
virtual void switch_MCCE2_OFF (void);
virtual void init_MCCE2_for_communication(void);
virtual void unable_zeroVF_func (void);
virtual void unable_offset_zeroV1_func (void);
virtual void unable_leakage_zeroV2_func (void);
virtual void unable_test_func (void);
virtual void unable_measure_func (void);
virtual std::string get_polarity (void);
virtual std::string get_frequency (void);
virtual std::string get_gain(void);
virtual void set_polarity (std::string pola);
virtual void set_frequency (std::string freq);
virtual void set_gain (std::string gain);
virtual unsigned short get_electrometer_active_channel(void);
virtual void set_electrometer_active_channel(unsigned short address);
protected :
short _range;
std::string _mode;
std::string _commDevName; //- communication device proxy name
CommunicationLink* _communication_link;
private :
};
/** @} */ //- end addtogroup
#endif // _ELECTROMETER_PROTOCOL_H_