diff --git a/include/AbstractElectrometerClass.h b/include/AbstractElectrometerClass.h index f6fdb2cb51d5c71b281f26fbad63a41e64ffa33b..0eea71faa96ce987fec8076a4607e096151fb6a3 100644 --- a/include/AbstractElectrometerClass.h +++ b/include/AbstractElectrometerClass.h @@ -9,9 +9,13 @@ // // $Author: xavela $ // -// $Revision: 1.3 $ +// $Revision: 1.4 $ // // $Log: not supported by cvs2svn $ +// Revision 1.3 2007/11/28 10:37:30 xavela +// compile en MODE debug -> +// modifier le(s) MakeFile ! +// // Revision 1.2 2007/11/27 10:17:46 xavela // xavier : // - modif done on Novelec part : @@ -53,7 +57,7 @@ public: * \brief Electrometer common functions. */ virtual void range_up (void) = 0; - virtual void range_down (void) = 0; + virtual void range_down (void) = 0; virtual void reset (void); virtual void local (void); virtual void remote (void); @@ -62,23 +66,23 @@ public: * \brief Electrometer : cmd to get electrometer data. */ std::string get_value (void); - virtual std::vector<double> get_integratedValue (void); - virtual std::vector<double> get_fetchValue (void); + virtual std::vector<double> get_integratedValue (void); + virtual std::vector<double> get_fetchValue (void); /** * \brief Keithley Electrometer methods */ - void autoRange_on (void); + void autoRange_on (void); void zero_check_on (void); void zero_check_off (void); void zero_correct_on (void); void zero_correct_off (void); - void auto_zero_on (void); + void auto_zero_on (void); void auto_zero_off (void); - virtual void autoRange_off (void); - virtual void setAmperMeterMode (void); - virtual void setVoltMeterMode (void); - virtual void setOhmMeterMode (void); + virtual void autoRange_off (void); + virtual void setAmperMeterMode (void); + virtual void setVoltMeterMode (void); + virtual void setOhmMeterMode (void); virtual void setCoulombMeterMode(void); /** @@ -89,49 +93,51 @@ public: void clear_registers (void); void averageStateON (void); void averageStateOFF (void); - void set_knplc (std::string nPLC); + 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); - std::string get_knplc (void); + void set_averagecount (std::string avercounts); + void set_averagecontrol (std::string averctrl); + 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 set_buffer_size (void); - void clear_buffer (void); - void store_raw_input (void); - void start_storing (void); - void enable_SRQBufferFull (void); + std::string get_averagecontrol(void); + void clear_buffer (void); + void store_raw_input (void); + void start_storing (void); + void enable_SRQBufferFull (void); void disable_SRQBufferFull (void); std::string readStatusByteRegister (void); //- used to know if the integration cycle is done! bool get_overloadRangeState (void); //- used to know if the device range is overloaded (DDC Keithley ONLY)! + virtual void set_buffer_size (short); + virtual void set_triggerMode (short); + virtual void set_integrationTime (double); /** * \brief Novelec Electrometer methods * * Following functions are only supported for Novelec Protocol */ - virtual void set_Zero_VonF_function (void); + virtual void set_Zero_VonF_function (void); virtual void set_Offset_ZeroV1_function (void); virtual void set_Leakage_ZeroV2_function(void); - virtual void set_Test_function (void); - virtual void set_Measure_function (void); - virtual void mcce_on (void); - virtual void mcce_off (void); - virtual void mcce_init (void); + virtual void set_Test_function (void); + virtual void set_Measure_function (void); + virtual void mcce_on (void); + virtual void mcce_off (void); + virtual void mcce_init (void); /** * \brief Novelec getters and setters */ - virtual std::string get_ElectroMeterPolarity (void); - virtual std::string get_ElectroMeterFrequency(void); - virtual std::string get_ElectroMeterGain (void); - virtual void set_ElectroMeterPolarity (std::string pola); + virtual std::string get_ElectroMeterPolarity (void); + virtual std::string get_ElectroMeterFrequency (void); + virtual std::string get_ElectroMeterGain (void); + virtual void set_ElectroMeterPolarity (std::string pola); virtual void set_ElectroMeterFrequency (std::string freq); - virtual void set_ElectroMeterGain (std::string gain); + virtual void set_ElectroMeterGain (std::string gain); /** * \brief Electrometer Status and State. @@ -141,8 +147,8 @@ public: /** * \brief Common getters and setters */ - virtual std::string get_ElectroMeterMode (void); - virtual std::string get_ElectroMeterRange (void); + virtual std::string get_ElectroMeterMode (void); + virtual std::string get_ElectroMeterRange (void); protected : @@ -162,11 +168,11 @@ protected : void set_electroState(ElectroState newState) { electrometerState = newState; }; - short _range; + short _range; std::string _rangeStr; std::string _mode; - ElectrometerProtocol* _electrometerProtocol; std::string _device_proxy_name; + ElectrometerProtocol* _electrometerProtocol; private : public : diff --git a/include/ElectrometerProtocol.h b/include/ElectrometerProtocol.h index 36d659c945e1bb2696fdfe90f27de6aacde9dc6d..0eb8fc0a0088403e87ed52bc555dcd78dd73b632 100644 --- a/include/ElectrometerProtocol.h +++ b/include/ElectrometerProtocol.h @@ -12,9 +12,14 @@ // // $Author: xavela $ // -// $Revision: 1.2 $ +// $Revision: 1.3 $ // // $Log: not supported by cvs2svn $ +// 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 // @@ -84,6 +89,7 @@ public: 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); @@ -113,7 +119,7 @@ public: /** * \brief Electrometer : Buffer config */ - virtual void set_buffer_size (void); + virtual void set_buffer_size (std::string size); virtual void clear_buffer (void); virtual void store_raw_input (void); virtual void start_storing (void); diff --git a/include/KeithleyDDCProtocol.h b/include/KeithleyDDCProtocol.h index 18843d50d1c5bce71205319b1e48390105ec0fe0..5ab6052375a195591f31a9426b18089ad5879fc0 100644 --- a/include/KeithleyDDCProtocol.h +++ b/include/KeithleyDDCProtocol.h @@ -90,9 +90,10 @@ public: std::string get_range (void); bool get_overloadRangeState (void) { return _is_overloaded; };//- used to know if the device range is overloaded! + void set_buffer_size (std::string); + void set_triggerMode (std::string); /* TODO : for next PicoLib evolution //- CMD B -// virtual void reading_mode (void); virtual void reading_source (void); //- CMD Q virtual void data_store (void); diff --git a/include/KeithleySCPIProtocol.h b/include/KeithleySCPIProtocol.h index 76ac51adeefca2fb2a8d69ca3539f6609c47c5fa..6ecadacff5d084c59012eb927ae9594bf645ed89 100644 --- a/include/KeithleySCPIProtocol.h +++ b/include/KeithleySCPIProtocol.h @@ -76,33 +76,33 @@ public: std::string get_value (void); std::vector<double> get_integratedValue (void); std::vector<double> get_fetchValue (void); - std::string readStatusByteRegister (void); //- used to know if the integration cycle is done! + std::string readStatusByteRegister (void); //- used to know if the integration cycle is done! void init_keithley (void); /** * \brief Electrometer : Acquisition config */ - void set_knplc (std::string nPLC); - void set_triggercount (std::string trigcounts); - void set_triggerdelay (std::string trigdelay); + 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_triggercount (void); + std::string get_triggerdelay (void); std::string get_triggerdelayAuto(void); std::string get_averagecount (void); std::string get_averagecontrol (void); /** * \brief Electrometer : Buffer config */ - void set_buffer_size (void); - void clear_buffer (void); - void store_raw_input (void); - void start_storing (void); + 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); diff --git a/include/Keithley_485.h b/include/Keithley_485.h index cf0adee896c9c67363d761704a4aac5e26055227..7623bf5aaa376ae0e8eb424d763150a667eb21f5 100644 --- a/include/Keithley_485.h +++ b/include/Keithley_485.h @@ -17,7 +17,7 @@ #include "AbstractElectrometerClass.h" /** - * \addtogroup DDC Keithley + * \addtogroup DDC_Keithley * @{ */ @@ -45,9 +45,14 @@ public: /** * \brief Device dependent commands. */ - void range_up (void); + void range_up (void); void range_down (void); + /** + * \brief Trigger Mode Command + */ + void set_triggerMode (short); + /** * \brief getter(s) & setter(s) */ diff --git a/include/Keithley_486.h b/include/Keithley_486.h index ec9565e12ff1014ce2b287336b4fa32122eefb4e..2e9c4fe6652bf862622571e9325f5e7b2958a110 100644 --- a/include/Keithley_486.h +++ b/include/Keithley_486.h @@ -48,6 +48,8 @@ public: void range_up (void); void range_down (void); void autoRange_off (void); + void set_buffer_size(short); + void set_triggerMode(short); /** * \brief getter(s) & setter(s) diff --git a/include/Keithley_487.h b/include/Keithley_487.h index 75b18aa6b0590451b6444d28031b9441cd879bf7..b5b14702d8dcea0534398f2c2f1b05801936f967 100644 --- a/include/Keithley_487.h +++ b/include/Keithley_487.h @@ -17,7 +17,7 @@ #include "AbstractElectrometerClass.h" /** - * \addtogroup DDC Keithley + * \addtogroup DDC_Keithley * @{ */ @@ -45,10 +45,13 @@ public: /** * \brief Electrometer methods. */ - void range_up (void); - void range_down (void); - void autoRange_off (void); - /** + void range_up (void); + void range_down (void); + void autoRange_off (void); + void set_buffer_size(short); + void set_triggerMode(short); + + /** * \brief Electrometer Function(s). */ void setAmperMeterMode (void); diff --git a/include/Keithley_617.h b/include/Keithley_617.h index 2fe43143b7387de4d3dd4a3725815ad6e493aa0a..b289dd57a9b9f76258118a27226b45e1802f23fb 100644 --- a/include/Keithley_617.h +++ b/include/Keithley_617.h @@ -45,17 +45,19 @@ public: /** * \brief Device dependent commands. */ - void autoRange_off (void); - void range_up (void); - void range_down (void); + void autoRange_off (void); + void range_up (void); + void range_down (void); + void set_buffer_size (short not_used); + void set_triggerMode (short); /** * \brief Electrometer Mode. */ - void setAmperMeterMode (void); - void setVoltMeterMode (void); - void setOhmMeterMode (void); - void setCoulombMeterMode (void); + void setAmperMeterMode (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode(void); /** * \brief getter(s) & setter(s) diff --git a/include/Keithley_6512.h b/include/Keithley_6512.h index 394e6ef32ce7e3a13bcf4707a1ec5eab37760b4a..860181301ba46bf80ef8e13f91fbd90bece08e8b 100644 --- a/include/Keithley_6512.h +++ b/include/Keithley_6512.h @@ -45,17 +45,19 @@ public: /** * \brief Device dependent commands. */ - void autoRange_off (void); - void range_up (void); - void range_down (void); + void autoRange_off (void); + void range_up (void); + void range_down (void); + void set_buffer_size (short not_used); + void set_triggerMode (short); /** * \brief Electrometer Mode. */ - void setAmperMeterMode (void); - void setVoltMeterMode (void); - void setOhmMeterMode (void); - void setCoulombMeterMode (void); + void setAmperMeterMode (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode(void); /** * \brief getter(s) & setter(s) diff --git a/src/AbstractElectrometerClass.cpp b/src/AbstractElectrometerClass.cpp index fbe23029af2fa9b0c5c2a8c303ef658f9614d36c..846bafb69933865e0a801c4ededcaa1de1cbcabc 100644 --- a/src/AbstractElectrometerClass.cpp +++ b/src/AbstractElectrometerClass.cpp @@ -11,9 +11,13 @@ // // $Author: xavela $ // -// $Revision: 1.4 $ +// $Revision: 1.5 $ // // $Log: not supported by cvs2svn $ +// Revision 1.4 2007/11/28 10:37:20 xavela +// compile en MODE debug -> +// modifier le(s) MakeFile ! +// // Revision 1.3 2007/11/27 15:23:02 xavela // xavier : // - modif done on Novelec part : @@ -163,6 +167,16 @@ std::string AbstractElectrometerClass::get_knplc (void) return _electrometerProtocol->get_knplc( ); } +// ============================================================================ +// AbstractElectrometerClass::set_triggerMode +// ============================================================================ +void AbstractElectrometerClass::set_triggerMode (short) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "AbstractElectrometerClass::set_triggerMode( )."); +} + // ============================================================================ // AbstractElectrometerClass::set_triggercount // ============================================================================ @@ -373,9 +387,25 @@ std::string AbstractElectrometerClass::electrometer_status (void) // ============================================================================ // AbstractElectrometerClass::set_buffer_size // ============================================================================ -void AbstractElectrometerClass::set_buffer_size (void) +void AbstractElectrometerClass::set_buffer_size (short size) { - _electrometerProtocol->set_buffer_size(); + // force read of range on instrument to update _range variable + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Keithley device does not support this command.", + "AbstractElectrometerClass::set_buffer_size( )."); + +} + +// ============================================================================ +// AbstractElectrometerClass::set_integrationTime +// ============================================================================ +void AbstractElectrometerClass::set_integrationTime (double) +{ + // force read of range on instrument to update _range variable + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Keithley device does not support this command.", + "AbstractElectrometerClass::set_integrationTime( )."); + } // ============================================================================ diff --git a/src/ElectrometerProtocol.cpp b/src/ElectrometerProtocol.cpp index 290e4db93426ce7642f13d88f4bafbf4527cc305..0f69a8a6bec575651cdf1176ae938762fd548069 100644 --- a/src/ElectrometerProtocol.cpp +++ b/src/ElectrometerProtocol.cpp @@ -380,6 +380,16 @@ std::string ElectrometerProtocol::get_knplc (void) "ElectrometerProtocol::get_knplc( )."); } +// ============================================================================ +// ElectrometerProtocol::set_triggerMode +// ============================================================================ +void ElectrometerProtocol::set_triggerMode (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_triggerMode( )."); +} + // ============================================================================ // ElectrometerProtocol::set_triggercount // ============================================================================ @@ -513,7 +523,7 @@ void ElectrometerProtocol::averageStateOFF (void) // ============================================================================ // ElectrometerProtocol::set_buffer_size // ============================================================================ -void ElectrometerProtocol::set_buffer_size (void) +void ElectrometerProtocol::set_buffer_size (std::string) { throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", "This Electrometer does not support this command.", diff --git a/src/KeithleyDDCProtocol.cpp b/src/KeithleyDDCProtocol.cpp index 12ac5e897384af6874e6142b35863c9957f8a30f..d0fbcadb3147972446da4194b8c468061da785ca 100644 --- a/src/KeithleyDDCProtocol.cpp +++ b/src/KeithleyDDCProtocol.cpp @@ -345,6 +345,24 @@ std::stringstream cmd_to_send; } +// ============================================================================ +// KeithleyDDCProtocol::set_buffer_size() +// ============================================================================ +void KeithleyDDCProtocol::set_buffer_size (std::string cmd) +{ + //- send command + _communication_link->write(cmd); +} + +// ============================================================================ +// KeithleyDDCProtocol::set_buffer_size() +// ============================================================================ +void KeithleyDDCProtocol::set_triggerMode (std::string cmd) +{ + //- send command + _communication_link->write(cmd); +} + // Following functions are part of commands supported via the DDC protocol. // We may have to implement them after first tests on beamlines /* diff --git a/src/KeithleySCPIProtocol.cpp b/src/KeithleySCPIProtocol.cpp index 85987f9bd8404e17e4ba00e1de58d44c9ec60398..1b96a68871bc5998d97ab0b3fbc701becb06a85f 100644 --- a/src/KeithleySCPIProtocol.cpp +++ b/src/KeithleySCPIProtocol.cpp @@ -490,7 +490,7 @@ std::string cmd_to_send(""); _communication_link->write(cmd_to_send); //- set buffer size ( = number of triggers ) - set_buffer_size(); + set_buffer_size(nbTrigCount); } @@ -701,12 +701,12 @@ std::string argout("no data"); // ============================================================================ // KeithleySCPIProtocol::set_buffer_size() // ============================================================================ -void KeithleySCPIProtocol::set_buffer_size (void) +void KeithleySCPIProtocol::set_buffer_size (std::string size) { std::string cmd_to_send(""); //- send command : size = number of triggers - cmd_to_send = "TRAC:POIN " + trigCountStr; + cmd_to_send = "TRAC:POIN " + size; _communication_link->write(cmd_to_send); } diff --git a/src/Keithley_485.cpp b/src/Keithley_485.cpp index 1ac0af895beccce63735be7e3c11e5f7201c2d96..e5dd7869ab98c06c054e57150408c4d61149ef2e 100644 --- a/src/Keithley_485.cpp +++ b/src/Keithley_485.cpp @@ -32,6 +32,11 @@ static const std::string K485_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E */ static const short K485_rangeLimit = 7; +/* +* Trigger Moded limit +*/ +static const short K485_triggerModeLimit = 5; + // ============================================================================ // Keithley_485::Keithley_485 // ============================================================================ @@ -116,6 +121,24 @@ std::string Keithley_485::get_ElectroMeterRange (void) return _rangeStr; } +// ============================================================================ +// Keithley_485::set_triggerMode +// ============================================================================ +void Keithley_485::set_triggerMode (short trigMod) +{ +std::stringstream cmd_to_send; + + if(trigMod<0 || trigMod>K485_triggerModeLimit) + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Trigger mode value invalid. Please enter a value in the range 0 - 5.", + "Keithley_485::set_triggerMode( )."); + + cmd_to_send << trigMod <<std::endl; + + _electrometerProtocol->set_triggerMode(cmd_to_send.str()); + +} + // ============================================================================ // Keithley_485::electrometer_status // ============================================================================ diff --git a/src/Keithley_486.cpp b/src/Keithley_486.cpp index efa11a160708f3bad790ed82b11baa0d2bd2a9fa..bd5004272aa0a8b7e789fbb17626e3c783d59d7b 100644 --- a/src/Keithley_486.cpp +++ b/src/Keithley_486.cpp @@ -31,6 +31,10 @@ static const std::string K486_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E */ static short K486_rangeLimit = 8; +/* +* Trigger Mode limit +*/ +static short K486_triggerModeLimit = 7; // ============================================================================ // Keithley_486::Keithley_486 @@ -127,6 +131,37 @@ std::string Keithley_486::get_ElectroMeterRange (void) return _rangeStr; } +// ============================================================================ +// Keithley_486::set_buffer_size() +// ============================================================================ +void Keithley_486::set_buffer_size (short size) +{ +std::stringstream cmd_to_send; + + //- send command : size = number of triggers + cmd_to_send << "N" << size << "X" << std::endl; + _electrometerProtocol->set_buffer_size(cmd_to_send.str()); + +} + +// ============================================================================ +// Keithley_487::set_triggerMode +// ============================================================================ +void Keithley_486::set_triggerMode (short trigMod) +{ + if(trigMod<0 || trigMod>K486_triggerModeLimit) + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Trigger mode value invalid. Please enter a value in the range 0 - 7.", + "Keithley_486::set_triggerMode( )."); + + std::stringstream cmd_to_send; + + cmd_to_send << trigMod << std::endl; + + _electrometerProtocol->set_triggerMode(cmd_to_send.str()); + +} + // ============================================================================ // Keithley_486::electrometer_status // ============================================================================ diff --git a/src/Keithley_487.cpp b/src/Keithley_487.cpp index 8496b32695d76bae4b245eeebaaf513fdd43d5c3..4d64c42f1e1acf56cec08ce038d30011b7fefd7f 100644 --- a/src/Keithley_487.cpp +++ b/src/Keithley_487.cpp @@ -31,6 +31,11 @@ static const std::string K487_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E */ static short K487_rangeLimit = 8; +/* +* Trigger Mode limit +*/ +static short K487_triggerModeLimit = 9; + // ============================================================================ // Keithley_487::Keithley_487 @@ -129,6 +134,37 @@ std::string Keithley_487::get_ElectroMeterRange (void) return _rangeStr; } +// ============================================================================ +// Keithley_487::set_buffer_size() +// ============================================================================ +void Keithley_487::set_buffer_size (short size) +{ +std::stringstream cmd_to_send; + + //- send command : size = number of triggers + cmd_to_send << "N" << size << "X" << std::endl; + _electrometerProtocol->set_buffer_size(cmd_to_send.str()); + +} + +// ============================================================================ +// Keithley_487::set_triggerMode +// ============================================================================ +void Keithley_487::set_triggerMode (short trigMod) +{ + if(trigMod<0 || trigMod>K487_triggerModeLimit) + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Trigger mode value invalid. Please enter a value in the range 0 - 7.", + "Keithley_487::set_triggerMode( )."); + + std::stringstream cmd_to_send; + + cmd_to_send << trigMod << std::endl; + + _electrometerProtocol->set_triggerMode(cmd_to_send.str()); + +} + // ============================================================================ // Keithley_487::get_ElectroMeterMode // ============================================================================ diff --git a/src/Keithley_617.cpp b/src/Keithley_617.cpp index cc9d724306338ca437e25c956dbe2a5b2dd18452..4b9dbca68b0df2697c9229f5a06127209bf897c1 100644 --- a/src/Keithley_617.cpp +++ b/src/Keithley_617.cpp @@ -36,6 +36,11 @@ static const std::string K617_VonIRangeValue[]= {"AUTO ON","200E12","20E12","2E1 */ static short K617_rangeLimit = 12; +/* +* Trigger Mode limit +*/ +static short K617_triggerModeLimit = 7; + // ============================================================================ // Keithley_617::Keithley_617 // ============================================================================ @@ -134,6 +139,36 @@ std::string Keithley_617::get_ElectroMeterRange (void) return _rangeStr; } +// ============================================================================ +// Keithley_617::set_buffer_size() +// ============================================================================ +void Keithley_617::set_buffer_size (short cmd) +{ +std::string cmd_to_send(""); + + //- send command : K_617 can store up to 100 points !!! + cmd_to_send = "Q0X"; + _electrometerProtocol->set_buffer_size(cmd_to_send); + +} + +// ============================================================================ +// Keithley_617::set_triggerMode +// ============================================================================ +void Keithley_617::set_triggerMode (short trigMod) +{ + if(trigMod<0 || trigMod>K617_triggerModeLimit) + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Trigger mode value invalid. Please enter a value in the range 0 - 7.", + "Keithley_617::set_triggerMode( )."); + + std::stringstream cmd_to_send; + + cmd_to_send << trigMod << std::endl; + + _electrometerProtocol->set_triggerMode(cmd_to_send.str()); +} + // ============================================================================ // Keithley_617::get_ElectroMeterMode // ============================================================================ diff --git a/src/Keithley_6512.cpp b/src/Keithley_6512.cpp index 72584a64588e2a8b1573ec80681da5b6753994ae..645a6276615cd0f64386b7d5a129792f006d2693 100644 --- a/src/Keithley_6512.cpp +++ b/src/Keithley_6512.cpp @@ -35,6 +35,11 @@ static const std::string K6512_XfdbRangeValue[]= {"AUTO ON","2E-1","2","20","20" */ static short K6512_rangeLimit = 12; +/* +* Trigger Mode limit +*/ +static short K6512_triggerModeLimit = 7; + // ============================================================================ // Keithley_6512::Keithley_6512 // ============================================================================ @@ -131,6 +136,37 @@ std::string Keithley_6512::get_ElectroMeterRange (void) return _rangeStr; } +// ============================================================================ +// Keithley_6512::set_buffer_size() +// ============================================================================ +void Keithley_6512::set_buffer_size (short ) +{ +std::string cmd_to_send(""); + + //- send command : Keithley_6512 can store up to 100 points !!! + cmd_to_send = "Q0X"; + _electrometerProtocol->set_buffer_size(cmd_to_send); + +} + +// ============================================================================ +// Keithley_6512::set_triggerMode +// ============================================================================ +void Keithley_6512::set_triggerMode (short trigMod) +{ + if(trigMod<0 || trigMod>K6512_triggerModeLimit) + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Trigger mode value invalid. Please enter a value in the range 0 - 7.", + "Keithley_6512::set_triggerMode( )."); + + std::stringstream cmd_to_send; + + cmd_to_send << trigMod << std::endl; + + _electrometerProtocol->set_triggerMode(cmd_to_send.str()); + +} + // ============================================================================ // Keithley_6512::get_ElectroMeterMode // ============================================================================