Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Keithley_6517.h 2.36 KiB
// ============================================================================
//
// = CONTEXT
//    TANGO Project - SCPI Keithley Electrometer Support Library
//
// = FILENAME
//    Keithley_6517.h
//
// = AUTHOR
//    X. Elattaoui
//
// ============================================================================

#ifndef _Keithley_6517_H_
#define _Keithley_6517_H_

#include "AbstractElectrometerClass.h"

/**
 *  \addtogroup SCPI Keithley
 *  @{
 */

/**
 *  \brief This class manage 6517 Keithley type
 *
 *  \author Xavier Elattaoui
 *  \date 09-2007
 */

class Keithley_6517 : public AbstractElectrometerClass
{
public:

	/**
	*  \brief Initialization. 
	*/
	Keithley_6517 (std::string& comLink_device_name);
	
	/**
	*  \brief Release resources.
	*/
	virtual ~Keithley_6517 (void);

	/**
	*  \brief protocole initailisation.
	*/
  bool init_protocol (void);

	/**
	*  \brief Device dependent commands.
	*/
	void range_up   (void);
	void range_down (void);
	
	std::vector<double> get_integratedValue (void);
	std::vector<double> get_fetchValue      (void);
	/**
	*  \brief Electrometer Mode.
	*/
	void setAmperMeterMode  (void);
	void setVoltMeterMode   (void);
	void setOhmMeterMode    (void);
	void setCoulombMeterMode(void);

	/**
	*  \brief Specifics commands.
	*/
  std::string get_averagecount  (void);
  void set_averagecount         (std::string nbAvCntStr);
  std::string get_averagecontrol(void);
  void set_averagecontrol       (std::string nbAverTCtrl);
  void averageStateON           (void);
  void averageStateOFF          (void);
	/**
	*  \brief Methods to configure the integration mode.
	*/
  void set_knplc        (double);
  void set_triggercount (short);
  void set_buffer_size  (short);
	void init_keithley		(void); 
	/**
	*  \brief The integration time (sec).
	*/
	void set_integrationTime			(double);

	/**
	*  \brief Enable/Disable the VSource Output.
	*/
  void enable_VSourceOutput (void);
  void disable_VSourceOutput(void);
  void set_VSourceValue     (double volts);
  double get_VSourceValue   (void);

	//-	TODO :
	//	SCPI_Filters*	_ddcFilters;
	//	SCPI_Triggers*	_ddcTriggers;

	/**
	*  \brief Not supported commands.
	*/
	void auto_zero_on	(void);
	void auto_zero_off	(void);

private:
	//- method to obtain the range index
	void update_range (void);
	std::string _kmode;
  double  _numPLC;
  int  _trigCounts;
	
};

/** @} */	//- end addtogroup

#endif // _Keithley_6517_H_