From 246730f14be68848aac65a078a32cdd015a71195 Mon Sep 17 00:00:00 2001
From: Xavier Elattaoui <xavier.elattaoui@synchrotron-soleil.fr>
Date: Wed, 17 Mar 2010 10:00:15 +0000
Subject: [PATCH] VSource output added for K_6517

---
 include/AbstractElectrometerClass.h |  9 ++++++++-
 include/KeithleySCPIProtocol.h      |  2 ++
 include/Keithley_6517.h             |  7 +++++++
 pom.xml                             |  2 +-
 src/AbstractElectrometerClass.cpp   | 26 +++++++++++++++++++++++++-
 src/KeithleySCPIProtocol.cpp        | 24 ++++++++++++++++++++++++
 src/Keithley_6517.cpp               | 20 ++++++++++++++++++++
 7 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/include/AbstractElectrometerClass.h b/include/AbstractElectrometerClass.h
index 95beda0..0363a86 100644
--- a/include/AbstractElectrometerClass.h
+++ b/include/AbstractElectrometerClass.h
@@ -9,9 +9,13 @@
 //
 // $Author: xavela $
 //
-// $Revision: 1.17 $
+// $Revision: 1.18 $
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.17  2009/10/14 15:26:17  xavela
+// KeithleyMemory leak fixed.
+// Novelec part updated
+//
 // Revision 1.16  2009/03/12 09:29:00  xavela
 // xavier:
 // Keithley part : support for 6517.
@@ -192,6 +196,9 @@ public:
 	virtual short get_buffer_size			(void);
 	virtual short get_triggerMode			(void) { return _trigMod;};
 
+  virtual void enable_VSourceOutput (void);
+  virtual void disable_VSourceOutput(void);
+
 	/**
 	*  \brief Novelec Electrometer methods
 	*
diff --git a/include/KeithleySCPIProtocol.h b/include/KeithleySCPIProtocol.h
index d8c7b4c..5db7cce 100644
--- a/include/KeithleySCPIProtocol.h
+++ b/include/KeithleySCPIProtocol.h
@@ -74,6 +74,8 @@ public:
 	void setVoltMeterMode	  (void);
 	void setOhmMeterMode	  (void);
 	void setCoulombMeterMode(void);
+  void setVSourceOutputON (void);
+  void setVSourceOutputOFF(void);
 
 	/**
 	*  \brief Electrometer : cmd to get electrometer data.
diff --git a/include/Keithley_6517.h b/include/Keithley_6517.h
index 05f3312..11aad3e 100644
--- a/include/Keithley_6517.h
+++ b/include/Keithley_6517.h
@@ -83,6 +83,13 @@ public:
 	*  \brief The integration time (sec).
 	*/
 	void set_integrationTime			(double);
+
+	/**
+	*  \brief Enable/Disable the VSource Output.
+	*/
+  void enable_VSourceOutput (void);
+  void disable_VSourceOutput(void);
+
 	//-	TODO :
 	//	SCPI_Filters*	_ddcFilters;
 	//	SCPI_Triggers*	_ddcTriggers;
diff --git a/pom.xml b/pom.xml
index f42a46b..ab80765 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
    </parent>
    <groupId>fr.soleil.lib</groupId>
    <artifactId>Electrometers-${aol}-${library}-${mode}</artifactId>
-   <version>2.3.1</version>
+   <version>2.4.0</version>
    <packaging>nar</packaging>
    <name>Electrometers library</name>
    <description>Electrometers library</description>
diff --git a/src/AbstractElectrometerClass.cpp b/src/AbstractElectrometerClass.cpp
index b418761..b95edfb 100644
--- a/src/AbstractElectrometerClass.cpp
+++ b/src/AbstractElectrometerClass.cpp
@@ -11,9 +11,13 @@
 //
 // $Author: xavela $
 //
-// $Revision: 1.19 $
+// $Revision: 1.20 $
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.19  2009/10/14 15:26:17  xavela
+// KeithleyMemory leak fixed.
+// Novelec part updated
+//
 // Revision 1.18  2009/10/12 08:50:41  xavela
 // minor change : cmd reset (*RST) added for DDCs.
 //
@@ -625,6 +629,26 @@ void AbstractElectrometerClass::setCoulombMeterMode (void)
 											"AbstractElectrometerClass::setAmperMeterMode( ).");
 */}
 
+// ============================================================================
+// AbstractElectrometerClass::enable_VSourceOutput
+// ============================================================================
+void AbstractElectrometerClass::enable_VSourceOutput (void) 
+{
+	throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", 
+											"This Electrometer does not support this command.",
+											"AbstractElectrometerClass::enable_VSourceOutput( ).");
+}
+
+// ============================================================================
+// AbstractElectrometerClass::disable_VSourceOutput
+// ============================================================================
+void AbstractElectrometerClass::disable_VSourceOutput (void) 
+{
+	throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", 
+											"This Electrometer does not support this command.",
+											"AbstractElectrometerClass::disable_VSourceOutput( ).");
+}
+
 // ============================================================================
 // AbstractElectrometerClass::get_ElectroMeterPolarity
 // ============================================================================
diff --git a/src/KeithleySCPIProtocol.cpp b/src/KeithleySCPIProtocol.cpp
index b9f1cb3..eaf2d54 100644
--- a/src/KeithleySCPIProtocol.cpp
+++ b/src/KeithleySCPIProtocol.cpp
@@ -308,6 +308,30 @@ std::string mode_ ("");
 
 }
 
+// ============================================================================
+// KeithleySCPIProtocol::setVSourceOutputON
+// ============================================================================
+void KeithleySCPIProtocol::setVSourceOutputON (void) 
+{
+std::stringstream cmd_to_send;
+
+	//- send command
+	cmd_to_send << "OUTP 1" << std::endl;
+	_communication_link->write(cmd_to_send.str());
+}
+
+// ============================================================================
+// KeithleySCPIProtocol::setVSourceOutputOFF
+// ============================================================================
+void KeithleySCPIProtocol::setVSourceOutputOFF (void) 
+{
+std::stringstream cmd_to_send;
+
+	//- send command
+	cmd_to_send << "OUTP 0" << std::endl;
+	_communication_link->write(cmd_to_send.str());
+}
+
 // ============================================================================
 // KeithleySCPIProtocol::get_mode
 // ============================================================================
diff --git a/src/Keithley_6517.cpp b/src/Keithley_6517.cpp
index d4a6ff6..f8b35f1 100644
--- a/src/Keithley_6517.cpp
+++ b/src/Keithley_6517.cpp
@@ -261,6 +261,26 @@ void Keithley_6517::setCoulombMeterMode (void)
 {
 	_electrometerProtocol->setCoulombMeterMode( );
 }
+  
+// ============================================================================
+// Keithley_6517::enable_VSourceOutput
+// ============================================================================
+void Keithley_6517::enable_VSourceOutput (void) 
+{
+	KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol);
+	if(_kscpi)
+		_kscpi->setVSourceOutputON();
+}
+  
+// ============================================================================
+// Keithley_6517::disable_VSourceOutput
+// ============================================================================
+void Keithley_6517::disable_VSourceOutput (void) 
+{
+	KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol);
+	if(_kscpi)
+		_kscpi->setVSourceOutputOFF();
+}
 
 // ============================================================================
 // Keithley_6517::update_range
-- 
GitLab