From bde9daa304fa96bfdc0e89fa24ff12b6bfa8ce11 Mon Sep 17 00:00:00 2001 From: Xavier Elattaoui <xavier.elattaoui@synchrotron-soleil.fr> Date: Fri, 15 Feb 2008 10:17:51 +0000 Subject: [PATCH] xavier : - command abort added for SCPI Keithleys --- include/AbstractElectrometerClass.h | 7 ++++++- include/ElectrometerProtocol.h | 7 ++++++- include/KeithleySCPIProtocol.h | 3 ++- src/AbstractElectrometerClass.cpp | 14 +++++++++++++- src/ElectrometerProtocol.cpp | 10 ++++++++++ src/KeithleySCPIProtocol.cpp | 22 +++++++++++++++++++--- 6 files changed, 56 insertions(+), 7 deletions(-) diff --git a/include/AbstractElectrometerClass.h b/include/AbstractElectrometerClass.h index e4d946c..869a918 100644 --- a/include/AbstractElectrometerClass.h +++ b/include/AbstractElectrometerClass.h @@ -9,9 +9,13 @@ // // $Author: xavela $ // -// $Revision: 1.7 $ +// $Revision: 1.8 $ // // $Log: not supported by cvs2svn $ +// Revision 1.7 2008/02/15 08:49:46 xavela +// xavier : +// - minor change for integration time +// // Revision 1.6 2008/02/13 15:51:44 xavela // xavier : // - Integration Mode available for DDC/SCPI devices @@ -110,6 +114,7 @@ public: * \brief Following functions are only supported for SCPI protocol * */ + void abort (void); virtual void init_keithley (void); void clear_registers (void); void averageStateON (void); diff --git a/include/ElectrometerProtocol.h b/include/ElectrometerProtocol.h index 98414a6..5d06b51 100644 --- a/include/ElectrometerProtocol.h +++ b/include/ElectrometerProtocol.h @@ -12,9 +12,13 @@ // // $Author: xavela $ // -// $Revision: 1.6 $ +// $Revision: 1.7 $ // // $Log: not supported by cvs2svn $ +// 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 @@ -107,6 +111,7 @@ public: * \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); diff --git a/include/KeithleySCPIProtocol.h b/include/KeithleySCPIProtocol.h index 5158fdd..14fd1ec 100644 --- a/include/KeithleySCPIProtocol.h +++ b/include/KeithleySCPIProtocol.h @@ -82,7 +82,8 @@ public: */ bool readStatusByteRegister (void); - void init_keithley (void); + void init_keithley (void); //- start operation(s) + void abort (void); //- cancel only all operation(s) started by init_keithley() /** * \brief Electrometer : Acquisition config */ diff --git a/src/AbstractElectrometerClass.cpp b/src/AbstractElectrometerClass.cpp index 19bd750..f5eedc6 100644 --- a/src/AbstractElectrometerClass.cpp +++ b/src/AbstractElectrometerClass.cpp @@ -11,9 +11,13 @@ // // $Author: xavela $ // -// $Revision: 1.8 $ +// $Revision: 1.9 $ // // $Log: not supported by cvs2svn $ +// Revision 1.8 2008/02/15 08:49:51 xavela +// xavier : +// - minor change for integration time +// // Revision 1.7 2008/02/13 15:51:43 xavela // xavier : // - Integration Mode available for DDC/SCPI devices @@ -174,6 +178,14 @@ void AbstractElectrometerClass::init_keithley (void) "AbstractElectrometerClass::init_keithley( )."); } +// ============================================================================ +// AbstractElectrometerClass::abort +// ============================================================================ +void AbstractElectrometerClass::abort (void) +{ + _electrometerProtocol->abort( ); +} + // ============================================================================ // AbstractElectrometerClass::set_knplc // ============================================================================ diff --git a/src/ElectrometerProtocol.cpp b/src/ElectrometerProtocol.cpp index 4e52171..4ebd516 100644 --- a/src/ElectrometerProtocol.cpp +++ b/src/ElectrometerProtocol.cpp @@ -360,6 +360,16 @@ void ElectrometerProtocol::init_keithley (void) "ElectrometerProtocol::init_keithley( )."); } +// ============================================================================ +// ElectrometerProtocol::abort +// ============================================================================ +void ElectrometerProtocol::abort (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::abort( )."); +} + // ============================================================================ // ElectrometerProtocol::set_knplc // ============================================================================ diff --git a/src/KeithleySCPIProtocol.cpp b/src/KeithleySCPIProtocol.cpp index d2c3c17..2bb5ccb 100644 --- a/src/KeithleySCPIProtocol.cpp +++ b/src/KeithleySCPIProtocol.cpp @@ -38,10 +38,15 @@ KeithleySCPIProtocol::KeithleySCPIProtocol (std::string& gpib_device_name) _communication_link = new TangoGpibLink (gpib_device_name); +std::string cmd_to_send(""); //- Select reading only - std::string cmd_to_send("FORM:ELEM READ"); - - //- send command + cmd_to_send = "FORM:ELEM READ"; + _communication_link->write(cmd_to_send); + //- Select control source : IMMediate + cmd_to_send = "ARM:SOUR IMM"; + _communication_link->write(cmd_to_send); + //- Set measure count + cmd_to_send = "ARM:COUNT 1"; _communication_link->write(cmd_to_send); std::cout << "KeithleySCPIProtocol::KeithleySCPIProtocol ->" << std::endl; @@ -448,6 +453,17 @@ std::string cmd_to_send("INIT"); _communication_link->write(cmd_to_send); } +// ============================================================================ +// KeithleySCPIProtocol::abort -> cancel all operations started by INIT command +// ============================================================================ +void KeithleySCPIProtocol::abort (void) +{ +std::string cmd_to_send("ABORt"); + + //- send command : ABORt to cancel all operations + _communication_link->write(cmd_to_send); +} + // ============================================================================ // KeithleySCPIProtocol::set_knplc : specify the integration rate // ============================================================================ -- GitLab