From 856491e3c5c8bc9b4d564c78dd59385d8e4eb2a6 Mon Sep 17 00:00:00 2001 From: Stephane Le <stephane.le@synchrotron-soleil.fr> Date: Mon, 9 Jul 2007 13:20:38 +0000 Subject: [PATCH] initial import --- doc/DevelopersUsersGuide.doc | Bin 0 -> 154624 bytes doc/DevelopersUsersGuide.pdf | Bin 0 -> 287477 bytes ...abstract_electrometer_class_8h-source.html | 115 +++ doc/html/_communication_link_8h-source.html | 69 ++ .../_electrometer_exception_8h-source.html | 135 +++ .../_electrometer_protocol_8h-source.html | 116 +++ doc/html/_keithley__485_8h-source.html | 50 + doc/html/_keithley__486_8h-source.html | 56 ++ doc/html/_keithley__487_8h-source.html | 59 ++ doc/html/_keithley__617_8h-source.html | 63 ++ doc/html/_keithley__6485_8h-source.html | 51 + doc/html/_keithley__6487_8h-source.html | 56 ++ doc/html/_keithley__6512_8h-source.html | 63 ++ doc/html/_keithley__6514_8h-source.html | 60 ++ .../_keithley_d_d_c_protocol_8h-source.html | 92 ++ .../_keithley_s_c_p_i_protocol_8h-source.html | 104 ++ doc/html/_n___photo_conducteur_8h-source.html | 52 + doc/html/_n___photo_voltaique_8h-source.html | 54 ++ doc/html/_novelec___m_c_c_e2_8h-source.html | 60 ++ doc/html/_novelec_protocol_8h-source.html | 82 ++ doc/html/_tango_gpib_link_8h-source.html | 65 ++ doc/html/_tango_serial_link_8h-source.html | 65 ++ doc/html/annotated.html | 35 + ...s_abstract_electrometer_class-members.html | 65 ++ .../class_abstract_electrometer_class.html | 271 ++++++ .../class_abstract_electrometer_class.png | Bin 0 -> 2330 bytes .../class_communication_link-members.html | 19 + doc/html/class_communication_link.html | 225 +++++ doc/html/class_communication_link.png | Bin 0 -> 609 bytes .../class_electrometer_protocol-members.html | 62 ++ doc/html/class_electrometer_protocol.html | 195 ++++ doc/html/class_electrometer_protocol.png | Bin 0 -> 859 bytes doc/html/class_keithley__485-members.html | 67 ++ doc/html/class_keithley__485.html | 267 ++++++ doc/html/class_keithley__485.png | Bin 0 -> 518 bytes doc/html/class_keithley__486-members.html | 67 ++ doc/html/class_keithley__486.html | 267 ++++++ doc/html/class_keithley__486.png | Bin 0 -> 516 bytes doc/html/class_keithley__487-members.html | 67 ++ doc/html/class_keithley__487.html | 267 ++++++ doc/html/class_keithley__487.png | Bin 0 -> 519 bytes doc/html/class_keithley__617-members.html | 67 ++ doc/html/class_keithley__617.html | 268 ++++++ doc/html/class_keithley__617.png | Bin 0 -> 517 bytes doc/html/class_keithley__6485-members.html | 67 ++ doc/html/class_keithley__6485.html | 266 ++++++ doc/html/class_keithley__6485.png | Bin 0 -> 525 bytes doc/html/class_keithley__6487-members.html | 67 ++ doc/html/class_keithley__6487.html | 267 ++++++ doc/html/class_keithley__6487.png | Bin 0 -> 523 bytes doc/html/class_keithley__6512-members.html | 67 ++ doc/html/class_keithley__6512.html | 268 ++++++ doc/html/class_keithley__6512.png | Bin 0 -> 529 bytes doc/html/class_keithley__6514-members.html | 67 ++ doc/html/class_keithley__6514.html | 267 ++++++ doc/html/class_keithley__6514.png | Bin 0 -> 525 bytes ...class_keithley_d_d_c_protocol-members.html | 67 ++ doc/html/class_keithley_d_d_c_protocol.html | 204 ++++ doc/html/class_keithley_d_d_c_protocol.png | Bin 0 -> 469 bytes ...ass_keithley_s_c_p_i_protocol-members.html | 67 ++ doc/html/class_keithley_s_c_p_i_protocol.html | 232 +++++ doc/html/class_keithley_s_c_p_i_protocol.png | Bin 0 -> 480 bytes .../class_n___photo_conducteur-members.html | 70 ++ doc/html/class_n___photo_conducteur.html | 272 ++++++ doc/html/class_n___photo_conducteur.png | Bin 0 -> 692 bytes .../class_n___photo_voltaique-members.html | 70 ++ doc/html/class_n___photo_voltaique.html | 272 ++++++ doc/html/class_n___photo_voltaique.png | Bin 0 -> 695 bytes .../class_novelec___m_c_c_e2-members.html | 68 ++ doc/html/class_novelec___m_c_c_e2.html | 272 ++++++ doc/html/class_novelec___m_c_c_e2.png | Bin 0 -> 995 bytes doc/html/class_novelec_protocol-members.html | 71 ++ doc/html/class_novelec_protocol.html | 216 +++++ doc/html/class_novelec_protocol.png | Bin 0 -> 425 bytes doc/html/class_tango_gpib_link-members.html | 21 + doc/html/class_tango_gpib_link.html | 198 ++++ doc/html/class_tango_gpib_link.png | Bin 0 -> 434 bytes doc/html/class_tango_serial_link-members.html | 21 + doc/html/class_tango_serial_link.html | 201 ++++ doc/html/class_tango_serial_link.png | Bin 0 -> 439 bytes ...er_1_1_electrometer_exception-members.html | 24 + ...ectrometer_1_1_electrometer_exception.html | 439 +++++++++ .../classelectrometer_1_1_error-members.html | 23 + doc/html/classelectrometer_1_1_error.html | 352 +++++++ doc/html/classes.html | 21 + doc/html/dir_000000.html | 20 + doc/html/dir_000001.html | 20 + doc/html/dir_000002.html | 20 + doc/html/dir_000003.html | 58 ++ doc/html/doxygen.css | 271 ++++++ doc/html/doxygen.png | Bin 0 -> 1281 bytes doc/html/files.html | 34 + doc/html/functions.html | 121 +++ doc/html/functions_func.html | 114 +++ doc/html/functions_vars.html | 22 + doc/html/group___communication.html | 25 + doc/html/group___d_d_c.html | 31 + doc/html/group___novelec.html | 25 + doc/html/group___s_c_p_i.html | 25 + doc/html/group___standard.html | 28 + doc/html/hierarchy.html | 43 + doc/html/index.html | 14 + doc/html/modules.html | 19 + doc/latex/Helvetica.ttf | Bin 0 -> 32760 bytes doc/latex/Makefile | 39 + doc/latex/annotated.tex | 24 + .../class_abstract_electrometer_class.eps | 232 +++++ .../class_abstract_electrometer_class.tex | 208 ++++ doc/latex/class_communication_link.eps | 203 ++++ doc/latex/class_communication_link.tex | 106 +++ doc/latex/class_electrometer_protocol.eps | 207 ++++ doc/latex/class_electrometer_protocol.tex | 182 ++++ doc/latex/class_keithley__485.eps | 197 ++++ doc/latex/class_keithley__485.tex | 208 ++++ doc/latex/class_keithley__486.eps | 197 ++++ doc/latex/class_keithley__486.tex | 208 ++++ doc/latex/class_keithley__487.eps | 197 ++++ doc/latex/class_keithley__487.tex | 208 ++++ doc/latex/class_keithley__617.eps | 197 ++++ doc/latex/class_keithley__617.tex | 208 ++++ doc/latex/class_keithley__6485.eps | 197 ++++ doc/latex/class_keithley__6485.tex | 208 ++++ doc/latex/class_keithley__6487.eps | 197 ++++ doc/latex/class_keithley__6487.tex | 208 ++++ doc/latex/class_keithley__6512.eps | 197 ++++ doc/latex/class_keithley__6512.tex | 208 ++++ doc/latex/class_keithley__6514.eps | 197 ++++ doc/latex/class_keithley__6514.tex | 208 ++++ doc/latex/class_keithley_d_d_c_protocol.eps | 197 ++++ doc/latex/class_keithley_d_d_c_protocol.tex | 191 ++++ doc/latex/class_keithley_s_c_p_i_protocol.eps | 197 ++++ doc/latex/class_keithley_s_c_p_i_protocol.tex | 198 ++++ doc/latex/class_n___photo_conducteur.eps | 203 ++++ doc/latex/class_n___photo_conducteur.tex | 211 ++++ doc/latex/class_n___photo_voltaique.eps | 203 ++++ doc/latex/class_n___photo_voltaique.tex | 211 ++++ doc/latex/class_novelec___m_c_c_e2.eps | 209 ++++ doc/latex/class_novelec___m_c_c_e2.tex | 211 ++++ doc/latex/class_novelec_protocol.eps | 197 ++++ doc/latex/class_novelec_protocol.tex | 206 ++++ doc/latex/class_tango_gpib_link.eps | 197 ++++ doc/latex/class_tango_gpib_link.tex | 102 ++ doc/latex/class_tango_serial_link.eps | 197 ++++ doc/latex/class_tango_serial_link.tex | 104 ++ ...lectrometer_1_1_electrometer_exception.tex | 109 +++ doc/latex/classelectrometer_1_1_error.tex | 102 ++ doc/latex/dir_000000.tex | 7 + doc/latex/dir_000001.tex | 7 + doc/latex/dir_000002.tex | 7 + doc/latex/dir_000003.tex | 45 + doc/latex/doxygen.sty | 64 ++ doc/latex/group___communication.tex | 11 + doc/latex/group___d_d_c.tex | 15 + doc/latex/group___novelec.tex | 11 + doc/latex/group___s_c_p_i.tex | 11 + doc/latex/group___standard.tex | 13 + doc/latex/hierarchy.tex | 32 + doc/latex/modules.tex | 8 + doc/latex/refman.tex | 65 ++ include/AbstractElectrometerClass.h | 168 ++++ include/CommunicationLink.h | 85 ++ include/ElectrometerException.h | 192 ++++ include/ElectrometerProtocol.h | 152 +++ include/KeithleyDDCProtocol.h | 114 +++ include/KeithleySCPIProtocol.h | 138 +++ include/Keithley_485.h | 64 ++ include/Keithley_486.h | 70 ++ include/Keithley_487.h | 76 ++ include/Keithley_617.h | 80 ++ include/Keithley_6485.h | 61 ++ include/Keithley_6487.h | 69 ++ include/Keithley_6512.h | 80 ++ include/Keithley_6514.h | 73 ++ include/N_PhotoConducteur.h | 63 ++ include/N_PhotoVoltaique.h | 68 ++ include/NovelecProtocol.h | 113 +++ include/Novelec_MCCE2.h | 79 ++ include/TangoGpibLink.h | 88 ++ include/TangoSerialLink.h | 87 ++ src/AbstractElectrometerClass.cpp | 569 +++++++++++ src/CommunicationLink.cpp | 50 + src/ElectrometerException.cpp | 213 +++++ src/ElectrometerProtocol.cpp | 582 ++++++++++++ src/KeithleyDDCProtocol.cpp | 447 +++++++++ src/KeithleySCPIProtocol.cpp | 898 ++++++++++++++++++ src/Keithley_485.cpp | 255 +++++ src/Keithley_486.cpp | 355 +++++++ src/Keithley_487.cpp | 388 ++++++++ src/Keithley_617.cpp | 396 ++++++++ src/Keithley_6485.cpp | 180 ++++ src/Keithley_6487.cpp | 186 ++++ src/Keithley_6512.cpp | 374 ++++++++ src/Keithley_6514.cpp | 319 +++++++ src/Makefile.linux | 165 ++++ src/Makefile.vc | 58 ++ src/N_PhotoConducteur.cpp | 125 +++ src/N_PhotoVoltaique.cpp | 135 +++ src/NovelecProtocol.cpp | 683 +++++++++++++ src/Novelec_MCCE2.cpp | 273 ++++++ src/TangoGpibLink.cpp | 165 ++++ src/TangoSerialLink.cpp | 156 +++ 201 files changed, 25957 insertions(+) create mode 100644 doc/DevelopersUsersGuide.doc create mode 100644 doc/DevelopersUsersGuide.pdf create mode 100644 doc/html/_abstract_electrometer_class_8h-source.html create mode 100644 doc/html/_communication_link_8h-source.html create mode 100644 doc/html/_electrometer_exception_8h-source.html create mode 100644 doc/html/_electrometer_protocol_8h-source.html create mode 100644 doc/html/_keithley__485_8h-source.html create mode 100644 doc/html/_keithley__486_8h-source.html create mode 100644 doc/html/_keithley__487_8h-source.html create mode 100644 doc/html/_keithley__617_8h-source.html create mode 100644 doc/html/_keithley__6485_8h-source.html create mode 100644 doc/html/_keithley__6487_8h-source.html create mode 100644 doc/html/_keithley__6512_8h-source.html create mode 100644 doc/html/_keithley__6514_8h-source.html create mode 100644 doc/html/_keithley_d_d_c_protocol_8h-source.html create mode 100644 doc/html/_keithley_s_c_p_i_protocol_8h-source.html create mode 100644 doc/html/_n___photo_conducteur_8h-source.html create mode 100644 doc/html/_n___photo_voltaique_8h-source.html create mode 100644 doc/html/_novelec___m_c_c_e2_8h-source.html create mode 100644 doc/html/_novelec_protocol_8h-source.html create mode 100644 doc/html/_tango_gpib_link_8h-source.html create mode 100644 doc/html/_tango_serial_link_8h-source.html create mode 100644 doc/html/annotated.html create mode 100644 doc/html/class_abstract_electrometer_class-members.html create mode 100644 doc/html/class_abstract_electrometer_class.html create mode 100644 doc/html/class_abstract_electrometer_class.png create mode 100644 doc/html/class_communication_link-members.html create mode 100644 doc/html/class_communication_link.html create mode 100644 doc/html/class_communication_link.png create mode 100644 doc/html/class_electrometer_protocol-members.html create mode 100644 doc/html/class_electrometer_protocol.html create mode 100644 doc/html/class_electrometer_protocol.png create mode 100644 doc/html/class_keithley__485-members.html create mode 100644 doc/html/class_keithley__485.html create mode 100644 doc/html/class_keithley__485.png create mode 100644 doc/html/class_keithley__486-members.html create mode 100644 doc/html/class_keithley__486.html create mode 100644 doc/html/class_keithley__486.png create mode 100644 doc/html/class_keithley__487-members.html create mode 100644 doc/html/class_keithley__487.html create mode 100644 doc/html/class_keithley__487.png create mode 100644 doc/html/class_keithley__617-members.html create mode 100644 doc/html/class_keithley__617.html create mode 100644 doc/html/class_keithley__617.png create mode 100644 doc/html/class_keithley__6485-members.html create mode 100644 doc/html/class_keithley__6485.html create mode 100644 doc/html/class_keithley__6485.png create mode 100644 doc/html/class_keithley__6487-members.html create mode 100644 doc/html/class_keithley__6487.html create mode 100644 doc/html/class_keithley__6487.png create mode 100644 doc/html/class_keithley__6512-members.html create mode 100644 doc/html/class_keithley__6512.html create mode 100644 doc/html/class_keithley__6512.png create mode 100644 doc/html/class_keithley__6514-members.html create mode 100644 doc/html/class_keithley__6514.html create mode 100644 doc/html/class_keithley__6514.png create mode 100644 doc/html/class_keithley_d_d_c_protocol-members.html create mode 100644 doc/html/class_keithley_d_d_c_protocol.html create mode 100644 doc/html/class_keithley_d_d_c_protocol.png create mode 100644 doc/html/class_keithley_s_c_p_i_protocol-members.html create mode 100644 doc/html/class_keithley_s_c_p_i_protocol.html create mode 100644 doc/html/class_keithley_s_c_p_i_protocol.png create mode 100644 doc/html/class_n___photo_conducteur-members.html create mode 100644 doc/html/class_n___photo_conducteur.html create mode 100644 doc/html/class_n___photo_conducteur.png create mode 100644 doc/html/class_n___photo_voltaique-members.html create mode 100644 doc/html/class_n___photo_voltaique.html create mode 100644 doc/html/class_n___photo_voltaique.png create mode 100644 doc/html/class_novelec___m_c_c_e2-members.html create mode 100644 doc/html/class_novelec___m_c_c_e2.html create mode 100644 doc/html/class_novelec___m_c_c_e2.png create mode 100644 doc/html/class_novelec_protocol-members.html create mode 100644 doc/html/class_novelec_protocol.html create mode 100644 doc/html/class_novelec_protocol.png create mode 100644 doc/html/class_tango_gpib_link-members.html create mode 100644 doc/html/class_tango_gpib_link.html create mode 100644 doc/html/class_tango_gpib_link.png create mode 100644 doc/html/class_tango_serial_link-members.html create mode 100644 doc/html/class_tango_serial_link.html create mode 100644 doc/html/class_tango_serial_link.png create mode 100644 doc/html/classelectrometer_1_1_electrometer_exception-members.html create mode 100644 doc/html/classelectrometer_1_1_electrometer_exception.html create mode 100644 doc/html/classelectrometer_1_1_error-members.html create mode 100644 doc/html/classelectrometer_1_1_error.html create mode 100644 doc/html/classes.html create mode 100644 doc/html/dir_000000.html create mode 100644 doc/html/dir_000001.html create mode 100644 doc/html/dir_000002.html create mode 100644 doc/html/dir_000003.html create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/files.html create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_func.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/group___communication.html create mode 100644 doc/html/group___d_d_c.html create mode 100644 doc/html/group___novelec.html create mode 100644 doc/html/group___s_c_p_i.html create mode 100644 doc/html/group___standard.html create mode 100644 doc/html/hierarchy.html create mode 100644 doc/html/index.html create mode 100644 doc/html/modules.html create mode 100644 doc/latex/Helvetica.ttf create mode 100644 doc/latex/Makefile create mode 100644 doc/latex/annotated.tex create mode 100644 doc/latex/class_abstract_electrometer_class.eps create mode 100644 doc/latex/class_abstract_electrometer_class.tex create mode 100644 doc/latex/class_communication_link.eps create mode 100644 doc/latex/class_communication_link.tex create mode 100644 doc/latex/class_electrometer_protocol.eps create mode 100644 doc/latex/class_electrometer_protocol.tex create mode 100644 doc/latex/class_keithley__485.eps create mode 100644 doc/latex/class_keithley__485.tex create mode 100644 doc/latex/class_keithley__486.eps create mode 100644 doc/latex/class_keithley__486.tex create mode 100644 doc/latex/class_keithley__487.eps create mode 100644 doc/latex/class_keithley__487.tex create mode 100644 doc/latex/class_keithley__617.eps create mode 100644 doc/latex/class_keithley__617.tex create mode 100644 doc/latex/class_keithley__6485.eps create mode 100644 doc/latex/class_keithley__6485.tex create mode 100644 doc/latex/class_keithley__6487.eps create mode 100644 doc/latex/class_keithley__6487.tex create mode 100644 doc/latex/class_keithley__6512.eps create mode 100644 doc/latex/class_keithley__6512.tex create mode 100644 doc/latex/class_keithley__6514.eps create mode 100644 doc/latex/class_keithley__6514.tex create mode 100644 doc/latex/class_keithley_d_d_c_protocol.eps create mode 100644 doc/latex/class_keithley_d_d_c_protocol.tex create mode 100644 doc/latex/class_keithley_s_c_p_i_protocol.eps create mode 100644 doc/latex/class_keithley_s_c_p_i_protocol.tex create mode 100644 doc/latex/class_n___photo_conducteur.eps create mode 100644 doc/latex/class_n___photo_conducteur.tex create mode 100644 doc/latex/class_n___photo_voltaique.eps create mode 100644 doc/latex/class_n___photo_voltaique.tex create mode 100644 doc/latex/class_novelec___m_c_c_e2.eps create mode 100644 doc/latex/class_novelec___m_c_c_e2.tex create mode 100644 doc/latex/class_novelec_protocol.eps create mode 100644 doc/latex/class_novelec_protocol.tex create mode 100644 doc/latex/class_tango_gpib_link.eps create mode 100644 doc/latex/class_tango_gpib_link.tex create mode 100644 doc/latex/class_tango_serial_link.eps create mode 100644 doc/latex/class_tango_serial_link.tex create mode 100644 doc/latex/classelectrometer_1_1_electrometer_exception.tex create mode 100644 doc/latex/classelectrometer_1_1_error.tex create mode 100644 doc/latex/dir_000000.tex create mode 100644 doc/latex/dir_000001.tex create mode 100644 doc/latex/dir_000002.tex create mode 100644 doc/latex/dir_000003.tex create mode 100644 doc/latex/doxygen.sty create mode 100644 doc/latex/group___communication.tex create mode 100644 doc/latex/group___d_d_c.tex create mode 100644 doc/latex/group___novelec.tex create mode 100644 doc/latex/group___s_c_p_i.tex create mode 100644 doc/latex/group___standard.tex create mode 100644 doc/latex/hierarchy.tex create mode 100644 doc/latex/modules.tex create mode 100644 doc/latex/refman.tex create mode 100644 include/AbstractElectrometerClass.h create mode 100644 include/CommunicationLink.h create mode 100644 include/ElectrometerException.h create mode 100644 include/ElectrometerProtocol.h create mode 100644 include/KeithleyDDCProtocol.h create mode 100644 include/KeithleySCPIProtocol.h create mode 100644 include/Keithley_485.h create mode 100644 include/Keithley_486.h create mode 100644 include/Keithley_487.h create mode 100644 include/Keithley_617.h create mode 100644 include/Keithley_6485.h create mode 100644 include/Keithley_6487.h create mode 100644 include/Keithley_6512.h create mode 100644 include/Keithley_6514.h create mode 100644 include/N_PhotoConducteur.h create mode 100644 include/N_PhotoVoltaique.h create mode 100644 include/NovelecProtocol.h create mode 100644 include/Novelec_MCCE2.h create mode 100644 include/TangoGpibLink.h create mode 100644 include/TangoSerialLink.h create mode 100644 src/AbstractElectrometerClass.cpp create mode 100644 src/CommunicationLink.cpp create mode 100644 src/ElectrometerException.cpp create mode 100644 src/ElectrometerProtocol.cpp create mode 100644 src/KeithleyDDCProtocol.cpp create mode 100644 src/KeithleySCPIProtocol.cpp create mode 100644 src/Keithley_485.cpp create mode 100644 src/Keithley_486.cpp create mode 100644 src/Keithley_487.cpp create mode 100644 src/Keithley_617.cpp create mode 100644 src/Keithley_6485.cpp create mode 100644 src/Keithley_6487.cpp create mode 100644 src/Keithley_6512.cpp create mode 100644 src/Keithley_6514.cpp create mode 100644 src/Makefile.linux create mode 100644 src/Makefile.vc create mode 100644 src/N_PhotoConducteur.cpp create mode 100644 src/N_PhotoVoltaique.cpp create mode 100644 src/NovelecProtocol.cpp create mode 100644 src/Novelec_MCCE2.cpp create mode 100644 src/TangoGpibLink.cpp create mode 100644 src/TangoSerialLink.cpp diff --git a/doc/DevelopersUsersGuide.doc b/doc/DevelopersUsersGuide.doc new file mode 100644 index 0000000000000000000000000000000000000000..b789b36f6c6e968ac4cc5ae2d3c25f5449e0759d GIT binary patch literal 154624 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%0D|&d;=_u~E)y$t+sGjL#!{g(%!eGH7@9Pm~ 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�swPOqgfW*0Aa4L#D$u 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 literal 0 HcmV?d00001 diff --git a/doc/DevelopersUsersGuide.pdf b/doc/DevelopersUsersGuide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..45e802cb5fe4d7340c34ba19efb6cd2862f41b74 GIT binary patch literal 287477 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%0Dp)$e_O)_<43QOM8tw!Sdt{-Qr~wm;WD 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 z%0D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­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 AkpKVy literal 0 HcmV?d00001 diff --git a/doc/html/_abstract_electrometer_class_8h-source.html b/doc/html/_abstract_electrometer_class_8h-source.html new file mode 100644 index 0000000..8e4f675 --- /dev/null +++ b/doc/html/_abstract_electrometer_class_8h-source.html @@ -0,0 +1,115 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: AbstractElectrometerClass.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>AbstractElectrometerClass.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">//+=============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Abstract Electrometer Class Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// AbstractElectrometerClass.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">//</span> +00010 <span class="comment">// $Author: stephle $</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// $Revision: 1.1 $</span> +00013 <span class="comment">//</span> +00014 <span class="comment">// $Log: not supported by cvs2svn $ +00014 <span class="comment">// Revision 1.1 2006/12/01 14:56:41 elattaoui +00014 <span class="comment">// xavier : +00014 <span class="comment">// Doxygen doc added +00014 <span class="comment">//</span> +00015 <span class="comment">//</span> +00016 +00017 <span class="comment">// ============================================================================</span> +00018 +00019 <span class="preprocessor">#ifndef _ABSTRACT_ELECTROMETER_CLASS_H_</span> +00020 <span class="preprocessor"></span><span class="preprocessor">#define _ABSTRACT_ELECTROMETER_CLASS_H_</span> +00021 <span class="preprocessor"></span> +00022 <span class="preprocessor">#include "ElectrometerProtocol.h"</span> +00023 +<a name="l00030"></a><a class="code" href="class_abstract_electrometer_class.html">00030</a> <span class="keyword">class </span><a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00031 { +00032 <span class="keyword">public</span>: +00033 +00037 <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> (std::string comLink_device_name); +00038 +00042 <span class="keyword">virtual</span> ~<a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> (<span class="keywordtype">void</span>); +00043 +00047 <span class="keyword">virtual</span> <span class="keywordtype">void</span> range_up (<span class="keywordtype">void</span>) = 0; +00048 <span class="keyword">virtual</span> <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>) = 0; +00049 <span class="keyword">virtual</span> <span class="keywordtype">void</span> reset (<span class="keywordtype">void</span>); +00050 <span class="keyword">virtual</span> <span class="keywordtype">void</span> local (<span class="keywordtype">void</span>); +00051 <span class="keyword">virtual</span> <span class="keywordtype">void</span> remote (<span class="keywordtype">void</span>); +00052 +00056 std::string get_value (<span class="keywordtype">void</span>); +00057 +00061 <span class="keywordtype">void</span> autoRange_on (<span class="keywordtype">void</span>); +00062 <span class="keywordtype">void</span> zero_check_on (<span class="keywordtype">void</span>); +00063 <span class="keywordtype">void</span> zero_check_off (<span class="keywordtype">void</span>); +00064 <span class="keywordtype">void</span> zero_correct_on (<span class="keywordtype">void</span>); +00065 <span class="keywordtype">void</span> zero_correct_off (<span class="keywordtype">void</span>); +00066 <span class="keywordtype">void</span> auto_zero_on (<span class="keywordtype">void</span>); +00067 <span class="keywordtype">void</span> auto_zero_off (<span class="keywordtype">void</span>); +00068 <span class="keyword">virtual</span> <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00069 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setAmperMeterMode (<span class="keywordtype">void</span>); +00070 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00071 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00072 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setCoulombMeterMode(<span class="keywordtype">void</span>); +00073 +00078 <span class="keywordtype">void</span> init_keithley (<span class="keywordtype">void</span>); +00079 <span class="keywordtype">void</span> clear_registers (<span class="keywordtype">void</span>); +00080 <span class="keywordtype">void</span> averageStateON (<span class="keywordtype">void</span>); +00081 <span class="keywordtype">void</span> averageStateOFF (<span class="keywordtype">void</span>); +00082 <span class="keywordtype">void</span> set_knplc (std::string nPLC); +00083 <span class="keywordtype">void</span> set_triggercount (std::string trigcounts); +00084 <span class="keywordtype">void</span> set_averagecount (std::string avercounts); +00085 <span class="keywordtype">void</span> set_averagecontrol (std::string averctrl); +00086 std::string get_knplc (<span class="keywordtype">void</span>); +00087 std::string get_triggercount (<span class="keywordtype">void</span>); +00088 std::string get_averagecount (<span class="keywordtype">void</span>); +00089 std::string get_averagecontrol (<span class="keywordtype">void</span>); +00090 +00096 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_Zero_VonF_function (<span class="keywordtype">void</span>); +00097 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_Offset_ZeroV1_function (<span class="keywordtype">void</span>); +00098 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_Leakage_ZeroV2_function(<span class="keywordtype">void</span>); +00099 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_Test_function (<span class="keywordtype">void</span>); +00100 <span class="keyword">virtual</span> <span class="keywordtype">void</span> mcce_on (<span class="keywordtype">void</span>); +00101 <span class="keyword">virtual</span> <span class="keywordtype">void</span> mcce_off (<span class="keywordtype">void</span>); +00105 <span class="keyword">virtual</span> std::string get_ElectroMeterPolarity (<span class="keywordtype">void</span>); +00106 <span class="keyword">virtual</span> std::string get_ElectroMeterFrequency(<span class="keywordtype">void</span>); +00107 <span class="keyword">virtual</span> std::string get_ElectroMeterGain (<span class="keywordtype">void</span>); +00108 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_ElectroMeterPolarity (std::string pola); +00109 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_ElectroMeterFrequency (std::string freq); +00110 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_ElectroMeterGain (std::string gain); +00111 +00115 <span class="keyword">virtual</span> std::string electrometer_status (<span class="keywordtype">void</span>); +00116 +00120 <span class="keyword">virtual</span> std::string get_ElectroMeterMode (<span class="keywordtype">void</span>); +00121 <span class="keyword">virtual</span> std::string get_ElectroMeterRange (<span class="keywordtype">void</span>); +00122 +00123 +00124 <span class="keyword">protected</span> : +00125 <span class="keywordtype">short</span> _range; +00126 std::string _rangeStr; +00127 std::string _mode; +00128 <a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a>* _electrometerProtocol; +00129 std::string _device_proxy_name; +00130 +00131 <span class="keyword">private</span> : +00132 +00133 +00134 }; +00135 +00136 <span class="preprocessor">#endif // _ABSTRACT_ELECTROMETER_CLASS_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_communication_link_8h-source.html b/doc/html/_communication_link_8h-source.html new file mode 100644 index 0000000..d482a26 --- /dev/null +++ b/doc/html/_communication_link_8h-source.html @@ -0,0 +1,69 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: CommunicationLink.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>CommunicationLink.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// CommunicationLink.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">//</span> +00013 <span class="comment">// $Author: stephle $</span> +00014 <span class="comment">//</span> +00015 <span class="comment">// $Revision: 1.1 $</span> +00016 <span class="comment">//</span> +00017 <span class="comment">// $Log: not supported by cvs2svn $ +00017 <span class="comment">// Revision 1.1 2006/12/01 14:56:41 elattaoui +00017 <span class="comment">// xavier : +00017 <span class="comment">// Doxygen doc added +00017 <span class="comment">//</span> +00018 <span class="comment">//</span> +00019 <span class="comment">// ============================================================================</span> +00020 +00021 <span class="preprocessor">#ifndef _COMMUNICATION_LINK_H_</span> +00022 <span class="preprocessor"></span><span class="preprocessor">#define _COMMUNICATION_LINK_H_</span> +00023 <span class="preprocessor"></span> +00024 <span class="preprocessor">#include <string></span> +00025 +00026 <span class="comment">// ============================================================================</span> +00027 <span class="comment">// DEPENDENCIES</span> +00028 <span class="comment">// ============================================================================</span> +00029 +00030 +<a name="l00043"></a><a class="code" href="class_communication_link.html">00043</a> <span class="keyword">class </span><a class="code" href="class_communication_link.html">CommunicationLink</a> +00044 { +00045 <span class="keyword">public</span> : +00046 +00050 <a class="code" href="class_communication_link.html">CommunicationLink</a> (std::string& communication_link_name); +00051 +00055 <span class="keyword">virtual</span> ~<a class="code" href="class_communication_link.html">CommunicationLink</a> (<span class="keywordtype">void</span>); +00056 +00062 <span class="keyword">virtual</span> <span class="keywordtype">void</span> write(std::string) = 0; +00063 +00069 <span class="keyword">virtual</span> std::string read(<span class="keywordtype">void</span>) = 0; +00070 +00076 <span class="keyword">virtual</span> std::string write_read(std::string cmd_to_send) = 0; +00077 +00078 <span class="keyword">protected</span> : +00079 std::string _communication_Device_name; +00080 +00081 }; +00082 <span class="comment">//- end addtogroup</span> +00084 +00085 <span class="preprocessor">#endif // _COMMUNICATION_LINK_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_electrometer_exception_8h-source.html b/doc/html/_electrometer_exception_8h-source.html new file mode 100644 index 0000000..940e94f --- /dev/null +++ b/doc/html/_electrometer_exception_8h-source.html @@ -0,0 +1,135 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: ElectrometerException.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>ElectrometerException.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">//******************************************************************************************</span> +00002 <span class="comment">//</span> +00003 <span class="comment">//</span> +00004 <span class="comment">// july 24, 2006 : Header file for the Electrometers exceptions</span> +00005 <span class="comment">// (avaiable for all models Keithley and Novelec)</span> +00006 <span class="comment">//</span> +00007 <span class="comment">//</span> +00008 <span class="comment">// author : X.Elattaoui</span> +00009 <span class="comment">//</span> +00010 <span class="comment">// ElectrometerException.cpp: interface for the electrometer exceptions class.</span> +00011 <span class="comment">//</span> +00012 <span class="comment">//******************************************************************************************</span> +00013 +00014 <span class="preprocessor">#ifndef _ELECTROMETER_EXCEPTION</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _ELECTROMETER_EXCEPTION</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include <string></span> +00018 <span class="preprocessor">#include <vector></span> +00019 +00020 <span class="keyword">namespace </span>electrometer{ +00021 +00022 <span class="comment">// ============================================================================</span> +00023 <span class="comment">// Electrometer Errors severities</span> +00024 <span class="comment">// ============================================================================</span> +00025 <span class="keyword">typedef</span> <span class="keyword">enum</span> { +00026 WARN, +00027 ERR, +00028 PANIC +00029 } ErrorSeverity; +00030 +00031 <span class="comment">// ============================================================================</span> +00033 <span class="comment"></span><span class="comment">// ============================================================================</span> +00037 <span class="comment"></span><span class="comment">// ============================================================================</span> +<a name="l00038"></a><a class="code" href="classelectrometer_1_1_error.html">00038</a> <span class="keyword">class </span><a class="code" href="classelectrometer_1_1_error.html">Error</a> +00039 { +00040 <span class="keyword">public</span>: +00041 +00045 <a class="code" href="classelectrometer_1_1_error.html">Error</a> (<span class="keywordtype">void</span>); +00046 +00050 <a class="code" href="classelectrometer_1_1_error.html">Error</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *reason, +00051 <span class="keyword">const</span> <span class="keywordtype">char</span> *desc, +00052 <span class="keyword">const</span> <span class="keywordtype">char</span> *origin, +00053 <span class="keywordtype">int</span> severity = electrometer::ERR); +00054 +00055 +00059 <a class="code" href="classelectrometer_1_1_error.html">Error</a> (<span class="keyword">const</span> std::string& reason, +00060 <span class="keyword">const</span> std::string& desc, +00061 <span class="keyword">const</span> std::string& origin, +00062 <span class="keywordtype">int</span> severity = electrometer::ERR); +00063 +00067 <a class="code" href="classelectrometer_1_1_error.html">Error</a> (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_error.html">Error</a>& src); +00068 +00072 <span class="keyword">virtual</span> ~<a class="code" href="classelectrometer_1_1_error.html">Error</a> (<span class="keywordtype">void</span>); +00073 +00077 <a class="code" href="classelectrometer_1_1_error.html">Error</a>& operator= (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_error.html">Error</a>& _src); +00078 +<a name="l00082"></a><a class="code" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">00082</a> std::string reason; +00083 +<a name="l00087"></a><a class="code" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">00087</a> std::string desc; +00088 +<a name="l00092"></a><a class="code" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">00092</a> std::string origin; +00093 +<a name="l00097"></a><a class="code" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">00097</a> <span class="keywordtype">int</span> severity; +00098 +00099 }; +00100 +00101 <span class="comment">// ============================================================================</span> +00102 <span class="comment">// The Electrometer error list.</span> +00103 <span class="comment">// ============================================================================</span> +00104 <span class="keyword">typedef</span> std::vector<Error> ErrorList; +00105 +00106 +00107 <span class="comment">// ============================================================================</span> +00109 <span class="comment"></span><span class="comment">// ============================================================================</span> +00113 <span class="comment"></span><span class="comment">// ============================================================================</span> +<a name="l00114"></a><a class="code" href="classelectrometer_1_1_electrometer_exception.html">00114</a> <span class="keyword">class </span><a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> +00115 { +00116 <span class="keyword">public</span>: +00117 +00121 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keywordtype">void</span>); +00122 +00126 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *reason, +00127 <span class="keyword">const</span> <span class="keywordtype">char</span> *desc, +00128 <span class="keyword">const</span> <span class="keywordtype">char</span> *origin, +00129 <span class="keywordtype">int</span> severity = electrometer::ERR); +00130 +00134 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keyword">const</span> std::string& reason, +00135 <span class="keyword">const</span> std::string& desc, +00136 <span class="keyword">const</span> std::string& origin, +00137 <span class="keywordtype">int</span> severity = electrometer::ERR); +00138 +00142 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_error.html">Error</a>& error); +00143 +00144 +00148 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a>& src); +00149 +00153 <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a>& operator= (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a>& _src); +00154 +00158 <span class="keyword">virtual</span> ~<a class="code" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (<span class="keywordtype">void</span>); +00159 +00163 <span class="keywordtype">void</span> push_error (<span class="keyword">const</span> <span class="keywordtype">char</span> *reason, +00164 <span class="keyword">const</span> <span class="keywordtype">char</span> *desc, +00165 <span class="keyword">const</span> <span class="keywordtype">char</span> *origin, +00166 <span class="keywordtype">int</span> severity = electrometer::ERR); +00167 +00171 <span class="keywordtype">void</span> push_error (<span class="keyword">const</span> std::string& reason, +00172 <span class="keyword">const</span> std::string& desc, +00173 <span class="keyword">const</span> std::string& origin, +00174 <span class="keywordtype">int</span> severity = electrometer::ERR); +00175 +00179 <span class="keywordtype">void</span> push_error (<span class="keyword">const</span> <a class="code" href="classelectrometer_1_1_error.html">Error</a>& error); +00180 +<a name="l00184"></a><a class="code" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">00184</a> ErrorList errors; +00185 +00186 +00187 }; +00188 +00189 } <span class="comment">// end namspace Electrometer</span> +00190 <span class="preprocessor">#endif //_ELECTROMETER_EXCEPTION</span> +00191 <span class="preprocessor"></span> +00192 +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_electrometer_protocol_8h-source.html b/doc/html/_electrometer_protocol_8h-source.html new file mode 100644 index 0000000..a555728 --- /dev/null +++ b/doc/html/_electrometer_protocol_8h-source.html @@ -0,0 +1,116 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: ElectrometerProtocol.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>ElectrometerProtocol.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// ElectrometerProtocol.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">//</span> +00013 <span class="comment">// $Author: stephle $</span> +00014 <span class="comment">//</span> +00015 <span class="comment">// $Revision: 1.1 $</span> +00016 <span class="comment">//</span> +00017 <span class="comment">// $Log: not supported by cvs2svn $ +00017 <span class="comment">// Revision 1.1 2006/12/01 14:56:41 elattaoui +00017 <span class="comment">// xavier : +00017 <span class="comment">// Doxygen doc added +00017 <span class="comment">//</span> +00018 <span class="comment">//</span> +00019 <span class="comment">// ============================================================================</span> +00020 +00021 <span class="preprocessor">#ifndef _ELECTROMETER_PROTOCOL_H_</span> +00022 <span class="preprocessor"></span><span class="preprocessor">#define _ELECTROMETER_PROTOCOL_H_</span> +00023 <span class="preprocessor"></span> +00024 <span class="preprocessor">#include "CommunicationLink.h"</span> +00025 +<a name="l00038"></a><a class="code" href="class_electrometer_protocol.html">00038</a> <span class="keyword">class </span><a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> +00039 { +00040 <span class="keyword">public</span>: +00041 +00045 <a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> (); +00046 +00050 <span class="keyword">virtual</span> ~<a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> (); +00051 +00055 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_range (std::string val)= 0; +00056 <span class="keyword">virtual</span> <span class="keywordtype">void</span> reset (<span class="keywordtype">void</span>) = 0; +00057 <span class="keyword">virtual</span> <span class="keywordtype">void</span> local (<span class="keywordtype">void</span>); +00058 <span class="keyword">virtual</span> <span class="keywordtype">void</span> remote (<span class="keywordtype">void</span>); +00059 +00063 <span class="keyword">virtual</span> std::string get_value(<span class="keywordtype">void</span>) = 0; +00064 <span class="keyword">virtual</span> std::string get_mode (<span class="keywordtype">void</span>) = 0; +00065 <span class="keyword">virtual</span> std::string get_range(<span class="keywordtype">void</span>) = 0; +00066 +00070 <span class="keyword">virtual</span> std::string get_raw_status (<span class="keywordtype">void</span>) = 0; +00071 +00075 <span class="keyword">virtual</span> <span class="keywordtype">void</span> init_keithley (<span class="keywordtype">void</span>); +00076 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_knplc(std::string nPLC); +00077 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_triggercount(std::string trigcounts); +00078 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_averagecount(std::string avercounts); +00079 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_averagecontrol(std::string averctrl); +00080 <span class="keyword">virtual</span> std::string get_knplc (<span class="keywordtype">void</span>); +00081 <span class="keyword">virtual</span> std::string get_triggercount (<span class="keywordtype">void</span>); +00082 <span class="keyword">virtual</span> std::string get_averagecount (<span class="keywordtype">void</span>); +00083 <span class="keyword">virtual</span> std::string get_averagecontrol (<span class="keywordtype">void</span>); +00084 <span class="keyword">virtual</span> <span class="keywordtype">void</span> clear_registers (<span class="keywordtype">void</span>); +00085 <span class="keyword">virtual</span> <span class="keywordtype">void</span> averageStateON (<span class="keywordtype">void</span>); +00086 <span class="keyword">virtual</span> <span class="keywordtype">void</span> averageStateOFF (<span class="keywordtype">void</span>); +00087 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setAmperMeterMode (<span class="keywordtype">void</span>); +00088 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00089 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00090 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setCoulombMeterMode(<span class="keywordtype">void</span>); +00091 <span class="keyword">virtual</span> <span class="keywordtype">void</span> autoRange_on (<span class="keywordtype">void</span>); +00092 <span class="keyword">virtual</span> <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00093 +00094 <span class="keyword">virtual</span> <span class="keywordtype">void</span> zero_check_on (<span class="keywordtype">void</span>); +00095 <span class="keyword">virtual</span> <span class="keywordtype">void</span> zero_check_off (<span class="keywordtype">void</span>); +00096 <span class="keyword">virtual</span> <span class="keywordtype">void</span> zero_correct_on(<span class="keywordtype">void</span>); +00097 <span class="keyword">virtual</span> <span class="keywordtype">void</span> zero_correct_off(<span class="keywordtype">void</span>); +00098 <span class="keyword">virtual</span> <span class="keywordtype">void</span> auto_zero_on (<span class="keywordtype">void</span>); +00099 <span class="keyword">virtual</span> <span class="keywordtype">void</span> auto_zero_off (<span class="keywordtype">void</span>); +00100 +00101 +00105 <span class="keyword">virtual</span> <span class="keywordtype">void</span> switch_MCCE2_ON (<span class="keywordtype">void</span>); +00106 <span class="keyword">virtual</span> <span class="keywordtype">void</span> switch_MCCE2_OFF (<span class="keywordtype">void</span>); +00107 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unable_zeroVF_func (<span class="keywordtype">void</span>); +00108 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unable_offset_zeroV1_func (<span class="keywordtype">void</span>); +00109 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unable_leakage_zeroV2_func (<span class="keywordtype">void</span>); +00110 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unable_test_func (<span class="keywordtype">void</span>); +00111 <span class="keyword">virtual</span> std::string get_polarity (<span class="keywordtype">void</span>); +00112 <span class="keyword">virtual</span> std::string get_frequency (<span class="keywordtype">void</span>); +00113 <span class="keyword">virtual</span> std::string get_gain (<span class="keywordtype">void</span>); +00114 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_polarity (std::string pola); +00115 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_frequency (std::string freq); +00116 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_gain (std::string gain); +00117 +00118 +00119 +00120 <span class="keyword">protected</span> : +00121 <span class="keywordtype">short</span> _range; +00122 std::string _mode; +00123 <a class="code" href="class_communication_link.html">CommunicationLink</a>* _communication_link; +00124 +00125 <span class="keyword">private</span> : +00126 +00127 +00128 }; +00129 <span class="comment">//- end addtogroup</span> +00131 +00132 <span class="preprocessor">#endif // _ELECTROMETER_PROTOCOL_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__485_8h-source.html b/doc/html/_keithley__485_8h-source.html new file mode 100644 index 0000000..3bc5d46 --- /dev/null +++ b/doc/html/_keithley__485_8h-source.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_485.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_485.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_485.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_485_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_485_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__485.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__485.html">Keithley_485</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__485.html#_keithley__485a0">Keithley_485</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__485.html#_keithley__485a1">~Keithley_485</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__485.html#_keithley__485a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00054 std::string <a class="code" href="class_keithley__485.html#_keithley__485a4">get_ElectroMeterRange</a>(<span class="keywordtype">void</span>); +00055 +00059 std::string <a class="code" href="class_keithley__485.html#_keithley__485a5">electrometer_status</a> (<span class="keywordtype">void</span>); +00060 }; +00061 <span class="comment">//- end addtogroup</span> +00063 +00064 <span class="preprocessor">#endif // _KEITHLEY_485_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__486_8h-source.html b/doc/html/_keithley__486_8h-source.html new file mode 100644 index 0000000..e1bf6c3 --- /dev/null +++ b/doc/html/_keithley__486_8h-source.html @@ -0,0 +1,56 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_486.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_486.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - DDC Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_486.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_486_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_486_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__486.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__486.html">Keithley_486</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__486.html#_keithley__486a0">Keithley_486</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__486.html#_keithley__486a1">~Keithley_486</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__486.html#_keithley__486a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00051 +00055 std::string <a class="code" href="class_keithley__486.html#_keithley__486a5">get_ElectroMeterRange</a>(<span class="keywordtype">void</span>); +00056 +00060 std::string <a class="code" href="class_keithley__486.html#_keithley__486a6">electrometer_status</a> (<span class="keywordtype">void</span>); +00061 +00062 <span class="comment">//- TODO :</span> +00063 <span class="comment">// DDC_Filters* _ddcFilters;</span> +00064 <span class="comment">// DDC_Triggers* _ddcTriggers;</span> +00065 +00066 }; +00067 <span class="comment">//- end addtogroup</span> +00069 +00070 <span class="preprocessor">#endif // _KEITHLEY_486_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__487_8h-source.html b/doc/html/_keithley__487_8h-source.html new file mode 100644 index 0000000..4cc51b7 --- /dev/null +++ b/doc/html/_keithley__487_8h-source.html @@ -0,0 +1,59 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_487.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_487.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_487.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_487_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_487_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__487.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__487.html">Keithley_487</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__487.html#_keithley__487a0">Keithley_487</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__487.html#_keithley__487a1">~Keithley_487</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__487.html#_keithley__487a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00054 <span class="keywordtype">void</span> <a class="code" href="class_keithley__487.html#_keithley__487a5">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00055 +00059 std::string <a class="code" href="class_keithley__487.html#_keithley__487a6">get_ElectroMeterMode</a>(<span class="keywordtype">void</span>); +00060 std::string get_ElectroMeterRange(<span class="keywordtype">void</span>); +00061 +00065 std::string <a class="code" href="class_keithley__487.html#_keithley__487a8">electrometer_status</a> (<span class="keywordtype">void</span>); +00066 +00067 +00068 <span class="comment">//- TODO :</span> +00069 <span class="comment">// DDC_Filters* _ddcFilters;</span> +00070 <span class="comment">// DDC_Triggers* _ddcTriggers;</span> +00071 +00072 }; +00073 <span class="comment">//- end addtogroup</span> +00075 +00076 <span class="preprocessor">#endif // _KEITHLEY_487_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__617_8h-source.html b/doc/html/_keithley__617_8h-source.html new file mode 100644 index 0000000..4cd946b --- /dev/null +++ b/doc/html/_keithley__617_8h-source.html @@ -0,0 +1,63 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_617.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_617.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - DDC Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_617.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_617_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_617_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__617.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__617.html">Keithley_617</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__617.html#_keithley__617a0">Keithley_617</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__617.html#_keithley__617a1">~Keithley_617</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__617.html#_keithley__617a2">autoRange_off</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> <a class="code" href="class_keithley__617.html#_keithley__617a3">range_up</a> (<span class="keywordtype">void</span>); +00050 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00051 +00055 <span class="keywordtype">void</span> <a class="code" href="class_keithley__617.html#_keithley__617a5">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00056 <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00057 <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00058 <span class="keywordtype">void</span> setCoulombMeterMode (<span class="keywordtype">void</span>); +00059 +00063 std::string <a class="code" href="class_keithley__617.html#_keithley__617a9">get_ElectroMeterMode</a> (<span class="keywordtype">void</span>); +00064 std::string get_ElectroMeterRange(<span class="keywordtype">void</span>); +00065 +00069 std::string <a class="code" href="class_keithley__617.html#_keithley__617a11">electrometer_status</a> (<span class="keywordtype">void</span>); +00070 +00071 +00072 <span class="comment">//- TODO :</span> +00073 <span class="comment">// DDC_Filters* _ddcFilters;</span> +00074 <span class="comment">// DDC_Triggers* _ddcTriggers;</span> +00075 +00076 }; +00077 <span class="comment">//- end addtogroup</span> +00079 +00080 <span class="preprocessor">#endif // _KEITHLEY_617_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__6485_8h-source.html b/doc/html/_keithley__6485_8h-source.html new file mode 100644 index 0000000..e52af76 --- /dev/null +++ b/doc/html/_keithley__6485_8h-source.html @@ -0,0 +1,51 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6485.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_6485.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_6485.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_6485_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_6485_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__6485.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__6485.html">Keithley_6485</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__6485.html#_keithley__6485a0">Keithley_6485</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__6485.html#_keithley__6485a1">~Keithley_6485</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6485.html#_keithley__6485a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00051 <span class="keyword">private</span>: +00052 <span class="comment">//- method to obtain the range index</span> +00053 <span class="keywordtype">void</span> update_range (<span class="keywordtype">void</span>); +00054 +00055 }; +00056 <span class="comment">//- end addtogroup</span> +00058 +00059 <span class="preprocessor">#endif // _KEITHLEY_6485_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__6487_8h-source.html b/doc/html/_keithley__6487_8h-source.html new file mode 100644 index 0000000..9f3f21f --- /dev/null +++ b/doc/html/_keithley__6487_8h-source.html @@ -0,0 +1,56 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6487.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_6487.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - SCPI Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_6487.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_6487_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_6487_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__6487.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__6487.html">Keithley_6487</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__6487.html#_keithley__6487a0">Keithley_6487</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__6487.html#_keithley__6487a1">~Keithley_6487</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6487.html#_keithley__6487a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00054 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6487.html#_keithley__6487a4">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00055 +00056 <span class="comment">//- TODO :</span> +00057 <span class="comment">// SCPI_Filters* _ddcFilters;</span> +00058 <span class="comment">// SCPI_Triggers* _ddcTriggers;</span> +00059 <span class="keyword">private</span>: +00060 <span class="comment">//- method to obtain the range index</span> +00061 <span class="keywordtype">void</span> update_range (<span class="keywordtype">void</span>); +00062 +00063 }; +00064 <span class="comment">//- end addtogroup</span> +00066 +00067 <span class="preprocessor">#endif // _KEITHLEY_6487_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__6512_8h-source.html b/doc/html/_keithley__6512_8h-source.html new file mode 100644 index 0000000..647b1f6 --- /dev/null +++ b/doc/html/_keithley__6512_8h-source.html @@ -0,0 +1,63 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6512.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_6512.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - DDC Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_6512.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_6512_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_6512_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__6512.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__6512.html">Keithley_6512</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__6512.html#_keithley__6512a0">Keithley_6512</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__6512.html#_keithley__6512a1">~Keithley_6512</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6512.html#_keithley__6512a2">autoRange_off</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6512.html#_keithley__6512a3">range_up</a> (<span class="keywordtype">void</span>); +00050 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00051 +00055 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6512.html#_keithley__6512a5">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00056 <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00057 <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00058 <span class="keywordtype">void</span> setCoulombMeterMode (<span class="keywordtype">void</span>); +00059 +00063 std::string <a class="code" href="class_keithley__6512.html#_keithley__6512a9">get_ElectroMeterMode</a> (<span class="keywordtype">void</span>); +00064 std::string get_ElectroMeterRange(<span class="keywordtype">void</span>); +00065 +00069 std::string <a class="code" href="class_keithley__6512.html#_keithley__6512a11">electrometer_status</a> (<span class="keywordtype">void</span>); +00070 +00071 +00072 <span class="comment">//- TODO :</span> +00073 <span class="comment">// DDC_Filters* _ddcFilters;</span> +00074 <span class="comment">// DDC_Triggers* _ddcTriggers;</span> +00075 +00076 }; +00077 <span class="comment">//- end addtogroup</span> +00079 +00080 <span class="preprocessor">#endif // _KEITHLEY_6512_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley__6514_8h-source.html b/doc/html/_keithley__6514_8h-source.html new file mode 100644 index 0000000..a623d99 --- /dev/null +++ b/doc/html/_keithley__6514_8h-source.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6514.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Keithley_6514.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - SCPI Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Keithley_6514.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _Keithley_6514_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _Keithley_6514_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_keithley__6514.html">00031</a> <span class="keyword">class </span><a class="code" href="class_keithley__6514.html">Keithley_6514</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_keithley__6514.html#_keithley__6514a0">Keithley_6514</a> (std::string& comLink_device_name); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_keithley__6514.html#_keithley__6514a1">~Keithley_6514</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6514.html#_keithley__6514a2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00054 <span class="keywordtype">void</span> <a class="code" href="class_keithley__6514.html#_keithley__6514a4">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00055 <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00056 <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00057 <span class="keywordtype">void</span> setCoulombMeterMode (<span class="keywordtype">void</span>); +00058 +00059 <span class="comment">//- TODO :</span> +00060 <span class="comment">// SCPI_Filters* _ddcFilters;</span> +00061 <span class="comment">// SCPI_Triggers* _ddcTriggers;</span> +00062 <span class="keyword">private</span>: +00063 <span class="comment">//- method to obtain the range index</span> +00064 <span class="keywordtype">void</span> update_range (<span class="keywordtype">void</span>); +00065 std::string _kmode; +00066 +00067 }; +00068 <span class="comment">//- end addtogroup</span> +00070 +00071 <span class="preprocessor">#endif // _Keithley_6514_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley_d_d_c_protocol_8h-source.html b/doc/html/_keithley_d_d_c_protocol_8h-source.html new file mode 100644 index 0000000..fc9b81e --- /dev/null +++ b/doc/html/_keithley_d_d_c_protocol_8h-source.html @@ -0,0 +1,92 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: KeithleyDDCProtocol.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>KeithleyDDCProtocol.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - DDC Keithley Electrometer Support Library</span> +00005 <span class="comment">// ( DDC for Device Dependent Command )</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// KeithleyDDCProtocol.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_DDC_PROTOCOL_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_DDC_PROTOCOL_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "ElectrometerProtocol.h"</span> +00018 <span class="preprocessor">#include "ElectrometerException.h"</span> +00019 +<a name="l00032"></a><a class="code" href="class_keithley_d_d_c_protocol.html">00032</a> <span class="keyword">class </span><a class="code" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a> : <span class="keyword">public</span> <a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> +00033 { +00034 <span class="keyword">public</span>: +00035 +00039 <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola0">KeithleyDDCProtocol</a> (std::string& gpib_device_name); +00040 +00044 <span class="keyword">virtual</span> <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola1">~KeithleyDDCProtocol</a> (<span class="keywordtype">void</span>); +00045 +00049 <span class="keywordtype">void</span> <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola2">set_range</a> (std::string value); +00050 <span class="keywordtype">void</span> autoRange_on (<span class="keywordtype">void</span>); +00051 <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00052 <span class="keywordtype">void</span> autoRange_OFF_forK486_487 (<span class="keywordtype">void</span>); +00053 <span class="keywordtype">void</span> autoRange_OFF_forK617_6512(<span class="keywordtype">void</span>); +00054 +00055 <span class="keywordtype">void</span> zero_check_on (<span class="keywordtype">void</span>); +00056 <span class="keywordtype">void</span> zero_check_off (<span class="keywordtype">void</span>); +00057 <span class="keywordtype">void</span> zero_correct_on (<span class="keywordtype">void</span>); +00058 <span class="keywordtype">void</span> zero_correct_off (<span class="keywordtype">void</span>); +00059 <span class="keywordtype">void</span> auto_zero_on (<span class="keywordtype">void</span>); +00060 <span class="keywordtype">void</span> auto_zero_off (<span class="keywordtype">void</span>); +00061 +00062 <span class="keywordtype">void</span> reset (<span class="keywordtype">void</span>); +00063 <span class="comment">// void local (void); // To be implemented in future library versions</span> +00064 <span class="comment">// void remote (void);</span> +00065 +00069 std::string <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola14">get_value</a>(<span class="keywordtype">void</span>); +00070 +00074 <span class="keywordtype">void</span> <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola15">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00075 <span class="keywordtype">void</span> setAmperMeterMode_forK487 (<span class="keywordtype">void</span>); +00076 <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00077 <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00078 <span class="keywordtype">void</span> setCoulombMeterMode(<span class="keywordtype">void</span>); +00079 <span class="keywordtype">void</span> clear_registers (<span class="keywordtype">void</span>); +00080 +00084 std::string <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola21">get_raw_status</a> (<span class="keywordtype">void</span>) ; +00085 +<a name="l00089"></a><a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">00089</a> std::string <a class="code" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">get_mode</a> (<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> _mode; }; +00090 std::string get_range (<span class="keywordtype">void</span>); +00091 +00092 <span class="comment">/* TODO : for next PicoLib evolution</span> +00093 <span class="comment"> //- CMD B</span> +00094 <span class="comment">// virtual void reading_mode (void);</span> +00095 <span class="comment"> virtual void reading_source (void);</span> +00096 <span class="comment"> //- CMD Q</span> +00097 <span class="comment"> virtual void data_store (void);</span> +00098 <span class="comment"> //- CMD G</span> +00099 <span class="comment"> virtual void data_format (void);</span> +00100 <span class="comment"> //- = REL</span> +00101 <span class="comment"> virtual void baseline_suppression_ON(void);</span> +00102 <span class="comment"> virtual void baseline_suppression_OFF(void);</span> +00103 <span class="comment"> */</span> +00104 <span class="keyword">protected</span> : +00105 +00106 <span class="keyword">private</span> : +00107 +00108 }; +00109 <span class="comment">//- end addtogroup</span> +00111 +00112 <span class="preprocessor">#endif // _KEITHLEY_DDC_PROTOCOL_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_keithley_s_c_p_i_protocol_8h-source.html b/doc/html/_keithley_s_c_p_i_protocol_8h-source.html new file mode 100644 index 0000000..5aa025d --- /dev/null +++ b/doc/html/_keithley_s_c_p_i_protocol_8h-source.html @@ -0,0 +1,104 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: KeithleySCPIProtocol.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>KeithleySCPIProtocol.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - SCPI Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// KeithleySCPIProtocol.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _KEITHLEY_SCPI_PROTOCOL_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _KEITHLEY_SCPI_PROTOCOL_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "ElectrometerProtocol.h"</span> +00018 <span class="preprocessor">#include "ElectrometerException.h"</span> +00019 +<a name="l00032"></a><a class="code" href="class_keithley_s_c_p_i_protocol.html">00032</a> <span class="keyword">class </span><a class="code" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a> : <span class="keyword">public</span> <a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> +00033 { +00034 <span class="keyword">public</span>: +00035 +00039 <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola0">KeithleySCPIProtocol</a> (std::string& gpib_device_name); +00040 +00044 <span class="keyword">virtual</span> <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola1">~KeithleySCPIProtocol</a> (<span class="keywordtype">void</span>); +00045 +00049 <span class="keywordtype">void</span> <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola2">set_range</a> (std::string value) ; +00050 <span class="keywordtype">void</span> autoRange_on (<span class="keywordtype">void</span>); +00051 <span class="keywordtype">void</span> autoRange_off (<span class="keywordtype">void</span>); +00052 +00053 <span class="keywordtype">void</span> zero_check_on (<span class="keywordtype">void</span>); +00054 <span class="keywordtype">void</span> zero_check_off (<span class="keywordtype">void</span>); +00055 <span class="keywordtype">void</span> zero_correct_on (<span class="keywordtype">void</span>); +00056 <span class="keywordtype">void</span> zero_correct_off (<span class="keywordtype">void</span>); +00057 <span class="keywordtype">void</span> zero_correct_state_on (<span class="keywordtype">void</span>); +00058 <span class="keywordtype">void</span> zero_correct_state_off(<span class="keywordtype">void</span>); +00059 <span class="keywordtype">void</span> auto_zero_on (<span class="keywordtype">void</span>); +00060 <span class="keywordtype">void</span> auto_zero_off (<span class="keywordtype">void</span>); +00061 <span class="keywordtype">void</span> reset (<span class="keywordtype">void</span>); +00062 +00066 <span class="keywordtype">void</span> <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola14">setAmperMeterMode</a> (<span class="keywordtype">void</span>); +00067 <span class="keywordtype">void</span> setVoltMeterMode (<span class="keywordtype">void</span>); +00068 <span class="keywordtype">void</span> setOhmMeterMode (<span class="keywordtype">void</span>); +00069 <span class="keywordtype">void</span> setCoulombMeterMode(<span class="keywordtype">void</span>); +00070 +00074 std::string <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola18">get_value</a> (<span class="keywordtype">void</span>); +00075 <span class="keywordtype">void</span> <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola19">init_keithley</a> (<span class="keywordtype">void</span>); +00076 <span class="keywordtype">void</span> set_knplc (std::string nPLC); +00077 <span class="keywordtype">void</span> set_triggercount (std::string trigcounts); +00078 <span class="keywordtype">void</span> set_averagecount (std::string avercounts); +00079 <span class="keywordtype">void</span> set_averagecontrol(std::string averctrl); +00080 std::string get_knplc (<span class="keywordtype">void</span>); +00081 std::string get_triggercount (<span class="keywordtype">void</span>); +00082 std::string get_averagecount (<span class="keywordtype">void</span>); +00083 std::string get_averagecontrol (<span class="keywordtype">void</span>); +00084 <span class="keywordtype">void</span> clear_registers (<span class="keywordtype">void</span>); +00085 <span class="keywordtype">void</span> averageStateON (<span class="keywordtype">void</span>); +00086 <span class="keywordtype">void</span> averageStateOFF (<span class="keywordtype">void</span>); +00087 +00088 +00092 std::string <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola31">get_raw_status</a> (<span class="keywordtype">void</span>) ; +00093 +00097 std::string <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola32">get_mode</a> (<span class="keywordtype">void</span>); +00098 std::string get_range (<span class="keywordtype">void</span>); +00099 +<a name="l00103"></a><a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">00103</a> <span class="keywordtype">void</span> <a class="code" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">set_isDiffSuportedMode</a> (<span class="keywordtype">bool</span> supportDiffMode) +00104 { isDiffSuportedMode = supportDiffMode; }; +00105 +00106 <span class="comment">/* TODO : for next PicoLib evolution</span> +00107 <span class="comment"> //- CMD B</span> +00108 <span class="comment">// void reading_mode (void);</span> +00109 <span class="comment"> void reading_source (void);</span> +00110 <span class="comment"> //- CMD Q</span> +00111 <span class="comment"> void data_store (void);</span> +00112 <span class="comment"> //- CMD G</span> +00113 <span class="comment"> void data_format (void);</span> +00114 <span class="comment"> //- = REL</span> +00115 <span class="comment"> void baseline_suppression_ON(void);</span> +00116 <span class="comment"> void baseline_suppression_OFF(void);</span> +00117 <span class="comment"> */</span> +00118 <span class="keyword">protected</span> : +00119 +00120 <span class="keyword">private</span> : +00121 <span class="keywordtype">bool</span> isDiffSuportedMode; +00122 +00123 }; +00124 <span class="comment">//- end addtogroup</span> +00126 +00127 <span class="preprocessor">#endif // _KEITHLEY_SCPI_PROTOCOL_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_n___photo_conducteur_8h-source.html b/doc/html/_n___photo_conducteur_8h-source.html new file mode 100644 index 0000000..60750d0 --- /dev/null +++ b/doc/html/_n___photo_conducteur_8h-source.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: N_PhotoConducteur.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>N_PhotoConducteur.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Novelec Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// N_PhotoConducteur.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _NOVELEC_PHOTOCONDUCTEUR_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _NOVELEC_PHOTOCONDUCTEUR_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "Novelec_MCCE2.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_n___photo_conducteur.html">00031</a> <span class="keyword">class </span><a class="code" href="class_n___photo_conducteur.html">N_PhotoConducteur</a> : <span class="keyword">public</span> <a class="code" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_n___photo_conducteur.html#_n___photo_conducteura0">N_PhotoConducteur</a> (std::string& comLink_device_name, <span class="keywordtype">short</span> channel_address, <span class="keywordtype">short</span> electroType); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_n___photo_conducteur.html#_n___photo_conducteura1">~N_PhotoConducteur</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_n___photo_conducteur.html#_n___photo_conducteura2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00054 std::string <a class="code" href="class_n___photo_conducteur.html#_n___photo_conducteura4">get_ElectroMeterGain</a> (<span class="keywordtype">void</span>); +00055 <span class="keywordtype">void</span> set_ElectroMeterGain (std::string); +00056 +00057 <span class="keyword">protected</span> : +00058 +00059 }; +00060 <span class="comment">//- end addtogroup</span> +00062 +00063 <span class="preprocessor">#endif // _NOVELEC_PHOTOCONDUCTEUR_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_n___photo_voltaique_8h-source.html b/doc/html/_n___photo_voltaique_8h-source.html new file mode 100644 index 0000000..b1d3399 --- /dev/null +++ b/doc/html/_n___photo_voltaique_8h-source.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: N_PhotoVoltaique.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>N_PhotoVoltaique.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Novelec Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// N_PhotoVoltaique.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _NOVELEC_PHOTOVOLTAIQUE_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _NOVELEC_PHOTOVOLTAIQUE_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "Novelec_MCCE2.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_n___photo_voltaique.html">00031</a> <span class="keyword">class </span><a class="code" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a> : <span class="keyword">public</span> <a class="code" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_n___photo_voltaique.html#_n___photo_voltaiquea0">N_PhotoVoltaique</a> (std::string comLink_device_name, <span class="keywordtype">short</span> channel_address, <span class="keywordtype">short</span> electroType); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_n___photo_voltaique.html#_n___photo_voltaiquea1">~N_PhotoVoltaique</a> (<span class="keywordtype">void</span>); +00044 +00048 <span class="keywordtype">void</span> <a class="code" href="class_n___photo_voltaique.html#_n___photo_voltaiquea2">range_up</a> (<span class="keywordtype">void</span>); +00049 <span class="keywordtype">void</span> range_down (<span class="keywordtype">void</span>); +00050 +00054 std::string <a class="code" href="class_n___photo_voltaique.html#_n___photo_voltaiquea4">get_ElectroMeterFrequency</a>(<span class="keywordtype">void</span>); +00055 <span class="keywordtype">void</span> set_ElectroMeterFrequency (std::string); +00056 +00060 <span class="comment">// std::string electrometer_status (void);</span> +00061 +00062 <span class="keyword">protected</span> : +00063 +00064 }; +00065 <span class="comment">//- end addtogroup</span> +00067 +00068 <span class="preprocessor">#endif // _NOVELEC_PHOTOVOLTAIQUE_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_novelec___m_c_c_e2_8h-source.html b/doc/html/_novelec___m_c_c_e2_8h-source.html new file mode 100644 index 0000000..6763d70 --- /dev/null +++ b/doc/html/_novelec___m_c_c_e2_8h-source.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Novelec_MCCE2.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>Novelec_MCCE2.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Novelec Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// Novelec_MCCE2.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _NOVELEC_MCCE2_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _NOVELEC_MCCE2_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "AbstractElectrometerClass.h"</span> +00018 +<a name="l00031"></a><a class="code" href="class_novelec___m_c_c_e2.html">00031</a> <span class="keyword">class </span><a class="code" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +00032 { +00033 <span class="keyword">public</span>: +00034 +00038 <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a> (std::string& comLink_device_name, <span class="keywordtype">short</span> channel_address, <span class="keywordtype">short</span> electroType); +00039 +00043 <span class="keyword">virtual</span> <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">~Novelec_MCCE2</a> (<span class="keywordtype">void</span>); +00044 +00045 std::string <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a>(<span class="keywordtype">void</span>); +00046 <span class="keywordtype">void</span> set_ElectroMeterPolarity (std::string); +00047 +00051 <span class="keywordtype">void</span> <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a> (<span class="keywordtype">void</span>); +00052 <span class="keywordtype">void</span> set_Offset_ZeroV1_function (<span class="keywordtype">void</span>); +00053 <span class="keywordtype">void</span> set_Leakage_ZeroV2_function (<span class="keywordtype">void</span>); +00054 <span class="keywordtype">void</span> set_Test_function (<span class="keywordtype">void</span>); +00055 +00063 <span class="keywordtype">void</span> <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a> (<span class="keywordtype">void</span>); +00064 <span class="keywordtype">void</span> mcce_off (<span class="keywordtype">void</span>); +00065 +00069 std::string <a class="code" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a> (<span class="keywordtype">void</span>); +00070 +00071 <span class="keyword">protected</span> : +00072 <span class="keywordtype">short</span> _rangeLimit; <span class="comment">//- define the range limit for each novelec type</span> +00073 +00074 }; +00075 <span class="comment">//- end addtogroup</span> +00077 +00078 <span class="preprocessor">#endif // _NOVELEC_MCCE2_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_novelec_protocol_8h-source.html b/doc/html/_novelec_protocol_8h-source.html new file mode 100644 index 0000000..81cfc71 --- /dev/null +++ b/doc/html/_novelec_protocol_8h-source.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: NovelecProtocol.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>NovelecProtocol.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Novelec Electrometer Support Library</span> +00005 <span class="comment">// ( Supported type : MCCE-2 )</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// NovelecProtocol.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _NOVELEC_MCCE2_PROTOCOL_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _NOVELEC_MCCE2_PROTOCOL_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="preprocessor">#include "ElectrometerProtocol.h"</span> +00018 <span class="preprocessor">#include "ElectrometerException.h"</span> +00019 +<a name="l00032"></a><a class="code" href="class_novelec_protocol.html">00032</a> <span class="keyword">class </span><a class="code" href="class_novelec_protocol.html">NovelecProtocol</a> : <span class="keyword">public</span> <a class="code" href="class_electrometer_protocol.html">ElectrometerProtocol</a> +00033 { +00034 <span class="keyword">public</span>: +00035 +00039 <a class="code" href="class_novelec_protocol.html#_novelec_protocola0">NovelecProtocol</a> (std::string& gpib_device_name, <span class="keywordtype">short</span> channel_address, <span class="keywordtype">short</span> electroTypeNumber); +00040 +00044 <span class="keyword">virtual</span> <a class="code" href="class_novelec_protocol.html#_novelec_protocola1">~NovelecProtocol</a>(<span class="keywordtype">void</span>); +00045 +00049 <span class="keywordtype">void</span> <a class="code" href="class_novelec_protocol.html#_novelec_protocola2">set_range</a> (std::string value); +00050 std::string get_range (<span class="keywordtype">void</span>); +00051 +00052 <span class="keywordtype">void</span> reset (<span class="keywordtype">void</span>); +00053 <span class="keywordtype">void</span> local (<span class="keywordtype">void</span>); +00054 <span class="keywordtype">void</span> remote(<span class="keywordtype">void</span>); +00058 std::string <a class="code" href="class_novelec_protocol.html#_novelec_protocola7">get_value</a> (<span class="keywordtype">void</span>); +00059 +00063 <span class="keywordtype">void</span> <a class="code" href="class_novelec_protocol.html#_novelec_protocola8">switch_MCCE2_ON</a> (<span class="keywordtype">void</span>); +00064 <span class="keywordtype">void</span> switch_MCCE2_OFF (<span class="keywordtype">void</span>); +00065 <span class="keywordtype">void</span> unable_zeroVF_func (<span class="keywordtype">void</span>); +00066 <span class="keywordtype">void</span> unable_offset_zeroV1_func (<span class="keywordtype">void</span>); +00067 <span class="keywordtype">void</span> unable_leakage_zeroV2_func (<span class="keywordtype">void</span>); +00068 <span class="keywordtype">void</span> unable_test_func (<span class="keywordtype">void</span>); +00069 +00073 std::string <a class="code" href="class_novelec_protocol.html#_novelec_protocola14">get_raw_status</a> (<span class="keywordtype">void</span>) ; +00077 std::string <a class="code" href="class_novelec_protocol.html#_novelec_protocola15">get_mode</a> (<span class="keywordtype">void</span>); +00078 std::string get_polarity (<span class="keywordtype">void</span>); +00079 std::string get_frequency (<span class="keywordtype">void</span>); +00080 std::string get_gain (<span class="keywordtype">void</span>); +00081 std::string get_errors (<span class="keywordtype">void</span>); +00082 std::string get_electrotype (<span class="keywordtype">void</span>); +00083 <span class="keywordtype">void</span> set_polarity (std::string pola); +00084 <span class="keywordtype">void</span> set_frequency (std::string freq); +00085 <span class="keywordtype">void</span> set_gain (std::string gain); +00086 +00087 <span class="keyword">protected</span> : +00088 <span class="keywordtype">short</span> _devAdd; <span class="comment">//- novelec active channel address</span> +00089 <span class="keywordtype">short</span> _novType; <span class="comment">//- novelec type number (1 to 5)</span> +00090 <span class="keywordtype">short</span> _rangeParameterNum; <span class="comment">//- command number for the range </span> +00091 std::string _function; <span class="comment">//- the novelec mode</span> +00092 +00093 <span class="comment">//- check if the cmd is understood, and extract data from the response</span> +00094 std::string check_and_extract_data (std::string resp_to_check); +00095 +00096 <span class="keyword">private</span> : +00097 +00098 }; +00099 <span class="comment">//- end addtogroup</span> +00101 +00102 <span class="preprocessor">#endif // _NOVELEC_MCCE2_PROTOCOL_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_tango_gpib_link_8h-source.html b/doc/html/_tango_gpib_link_8h-source.html new file mode 100644 index 0000000..6b612dd --- /dev/null +++ b/doc/html/_tango_gpib_link_8h-source.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: TangoGpibLink.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>TangoGpibLink.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// TangoGpibLink.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _TANGO_GPIB_LINK_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _TANGO_GPIB_LINK_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="comment">// ============================================================================</span> +00018 <span class="comment">// DEPENDENCIES</span> +00019 <span class="comment">// ============================================================================</span> +00020 <span class="preprocessor">#include <tango.h></span> +00021 <span class="preprocessor">#include <DeviceProxyHelper.h></span> +00022 <span class="preprocessor">#include "CommunicationLink.h"</span> +00023 +<a name="l00036"></a><a class="code" href="class_tango_gpib_link.html">00036</a> <span class="keyword">class </span><a class="code" href="class_tango_gpib_link.html">TangoGpibLink</a> : <span class="keyword">public</span> <a class="code" href="class_communication_link.html">CommunicationLink</a> +00037 { +00038 +00039 <span class="keyword">public</span> : +00043 <a class="code" href="class_tango_gpib_link.html#_tango_gpib_linka0">TangoGpibLink</a> (std::string& gpib_device_name); +00044 +00048 <span class="keyword">virtual</span> <a class="code" href="class_tango_gpib_link.html#_tango_gpib_linka1">~TangoGpibLink</a> (<span class="keywordtype">void</span>); +00049 +00055 <span class="keywordtype">void</span> <a class="code" href="class_tango_gpib_link.html#_tango_gpib_linka2">write</a>(std::string cmd) <span class="keywordflow">throw</span> (Tango::DevFailed); +00056 +00062 std::string <a class="code" href="class_tango_gpib_link.html#_tango_gpib_linka3">read</a>(<span class="keywordtype">void</span>) <span class="keywordflow">throw</span> (Tango::DevFailed); +00063 +00069 std::string <a class="code" href="class_tango_gpib_link.html#_tango_gpib_linka4">write_read</a>(std::string cmd) <span class="keywordflow">throw</span> (Tango::DevFailed); +00070 +00071 <span class="keyword">private</span> : +00072 +00076 <span class="keywordtype">void</span> create_gpib_proxy(<span class="keywordtype">void</span>) <span class="keywordflow">throw</span> (Tango::DevFailed); +00077 +00078 Tango::DeviceProxyHelper* _gpib_proxy; +00079 +00080 <span class="keywordtype">bool</span> _is_gpib_proxy_created; +00081 +00082 std::string response; +00083 +00084 }; +00085 <span class="comment">//- end addtogroup</span> +00087 +00088 <span class="preprocessor">#endif // _TANGO_GPIB_LINK_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/_tango_serial_link_8h-source.html b/doc/html/_tango_serial_link_8h-source.html new file mode 100644 index 0000000..8fcaf2e --- /dev/null +++ b/doc/html/_tango_serial_link_8h-source.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: TangoSerialLink.h Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>TangoSerialLink.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// ============================================================================</span> +00002 <span class="comment">//</span> +00003 <span class="comment">// = CONTEXT</span> +00004 <span class="comment">// TANGO Project - Keithley Electrometer Support Library</span> +00005 <span class="comment">//</span> +00006 <span class="comment">// = FILENAME</span> +00007 <span class="comment">// TangoSerialLink.h</span> +00008 <span class="comment">//</span> +00009 <span class="comment">// = AUTHOR</span> +00010 <span class="comment">// X. Elattaoui</span> +00011 <span class="comment">//</span> +00012 <span class="comment">// ============================================================================</span> +00013 +00014 <span class="preprocessor">#ifndef _TANGO_SERIAL_LINK_H_</span> +00015 <span class="preprocessor"></span><span class="preprocessor">#define _TANGO_SERIAL_LINK_H_</span> +00016 <span class="preprocessor"></span> +00017 <span class="comment">// ============================================================================</span> +00018 <span class="comment">// DEPENDENCIES</span> +00019 <span class="comment">// ============================================================================</span> +00020 <span class="preprocessor">#include <tango.h></span> +00021 <span class="preprocessor">#include <DeviceProxyHelper.h></span> +00022 <span class="preprocessor">#include "CommunicationLink.h"</span> +00023 +<a name="l00036"></a><a class="code" href="class_tango_serial_link.html">00036</a> <span class="keyword">class </span><a class="code" href="class_tango_serial_link.html">TangoSerialLink</a> : <span class="keyword">public</span> <a class="code" href="class_communication_link.html">CommunicationLink</a> +00037 { +00038 +00039 <span class="keyword">public</span> : +00043 <a class="code" href="class_tango_serial_link.html#_tango_serial_linka0">TangoSerialLink</a> (std::string& serial_device_name); +00044 +00048 <span class="keyword">virtual</span> <a class="code" href="class_tango_serial_link.html#_tango_serial_linka1">~TangoSerialLink</a> (<span class="keywordtype">void</span>); +00049 +00055 <span class="keywordtype">void</span> <a class="code" href="class_tango_serial_link.html#_tango_serial_linka2">write</a>(std::string cmd) <span class="keywordflow">throw</span> (Tango::DevFailed); +00056 +00062 std::string <a class="code" href="class_tango_serial_link.html#_tango_serial_linka3">read</a>(<span class="keywordtype">void</span>) <span class="keywordflow">throw</span> (Tango::DevFailed); +00063 +00069 std::string <a class="code" href="class_tango_serial_link.html#_tango_serial_linka4">write_read</a>(std::string cmd) <span class="keywordflow">throw</span> (Tango::DevFailed); +00070 +00071 +00072 <span class="keyword">private</span> : +00076 <span class="keywordtype">void</span> create_serial_proxy(<span class="keywordtype">void</span>) <span class="keywordflow">throw</span> (Tango::DevFailed); +00077 +00078 Tango::DeviceProxyHelper* _serial_proxy; +00079 +00080 <span class="keywordtype">bool</span> _is_serial_proxy_created; +00081 +00082 std::string response; +00083 +00084 }; +00085 <span class="comment">//- end addtogroup</span> +00087 +00088 <span class="preprocessor">#endif // _TANGO_SERIAL_LINK_H_</span> +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..115f9e1 --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Class List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindexHL" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table> + <tr><td class="indexkey"><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td class="indexvalue">Visible class from the DServer </td></tr> + <tr><td class="indexkey"><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td class="indexvalue">Abstract class to manage a specific communication bus </td></tr> + <tr><td class="indexkey"><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td class="indexvalue">Detailed description to be written </td></tr> + <tr><td class="indexkey"><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td class="indexvalue">This abstract class manage the Electrometers Commands Protocol </td></tr> + <tr><td class="indexkey"><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td class="indexvalue">Detailed description to be written </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td class="indexvalue">This class manage 485 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td class="indexvalue">This class manage 486 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td class="indexvalue">This class manage 487 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td class="indexvalue">This class manage 617 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td><td class="indexvalue">This class manage 6485 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td class="indexvalue">This class manage 6487 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td class="indexvalue">This class manage 6512 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td class="indexvalue">This class manage 6514 Keithley type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td class="indexvalue">This class manage the Keithley DDC Commands Protocol </td></tr> + <tr><td class="indexkey"><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td class="indexvalue">This class manage the Keithley SCPI Commands Protocol </td></tr> + <tr><td class="indexkey"><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td class="indexvalue">This class manage Novelec PhotoConductor types </td></tr> + <tr><td class="indexkey"><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td class="indexvalue">This class manage Novelec PhotoVoltaique types </td></tr> + <tr><td class="indexkey"><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td class="indexvalue">This class manage Novelec MCCE-2 type </td></tr> + <tr><td class="indexkey"><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td class="indexvalue">This class manage the Novelec Commands Protocol </td></tr> + <tr><td class="indexkey"><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td class="indexvalue">This class manage the GPIB communication bus </td></tr> + <tr><td class="indexkey"><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td class="indexvalue">This class manage the SERIAL communication bus </td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_abstract_electrometer_class-members.html b/doc/html/class_abstract_electrometer_class-members.html new file mode 100644 index 0000000..c2bd39d --- /dev/null +++ b/doc/html/class_abstract_electrometer_class-members.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>AbstractElectrometerClass Member List</h1>This is the complete list of members for <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void)=0 (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">range_up</a>(void)=0</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_abstract_electrometer_class.html b/doc/html/class_abstract_electrometer_class.html new file mode 100644 index 0000000..5275707 --- /dev/null +++ b/doc/html/class_abstract_electrometer_class.html @@ -0,0 +1,271 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: AbstractElectrometerClass Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>AbstractElectrometerClass Class Reference</h1>Visible class from the DServer. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_abstract_electrometer_class_8h-source.html">AbstractElectrometerClass.h</a>></code> +<p> +<p>Inheritance diagram for AbstractElectrometerClass: +<p><center><img src="class_abstract_electrometer_class.png" usemap="#AbstractElectrometerClass_map" border="0" alt=""></center> +<map name="AbstractElectrometerClass_map"> +<area href="class_keithley__485.html" alt="Keithley_485" shape="rect" coords="171,56,332,80"> +<area href="class_keithley__486.html" alt="Keithley_486" shape="rect" coords="171,112,332,136"> +<area href="class_keithley__487.html" alt="Keithley_487" shape="rect" coords="171,168,332,192"> +<area href="class_keithley__617.html" alt="Keithley_617" shape="rect" coords="171,224,332,248"> +<area href="class_keithley__6485.html" alt="Keithley_6485" shape="rect" coords="171,280,332,304"> +<area href="class_keithley__6487.html" alt="Keithley_6487" shape="rect" coords="171,336,332,360"> +<area href="class_keithley__6512.html" alt="Keithley_6512" shape="rect" coords="171,392,332,416"> +<area href="class_keithley__6514.html" alt="Keithley_6514" shape="rect" coords="171,448,332,472"> +<area href="class_novelec___m_c_c_e2.html" alt="Novelec_MCCE2" shape="rect" coords="171,504,332,528"> +</map> +<a href="class_abstract_electrometer_class-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_abstract_electrometer_classa0" doxytag="AbstractElectrometerClass::AbstractElectrometerClass"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a> (std::string comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_abstract_electrometer_classa1" doxytag="AbstractElectrometerClass::~AbstractElectrometerClass"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a11" doxytag="AbstractElectrometerClass::range_up"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">range_up</a> (void)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer common functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a12" doxytag="AbstractElectrometerClass::range_down"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)=0</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="AbstractElectrometerClass::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="AbstractElectrometerClass::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="AbstractElectrometerClass::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="AbstractElectrometerClass::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="AbstractElectrometerClass::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="AbstractElectrometerClass::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="AbstractElectrometerClass::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="AbstractElectrometerClass::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="AbstractElectrometerClass::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="AbstractElectrometerClass::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="AbstractElectrometerClass::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="AbstractElectrometerClass::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="AbstractElectrometerClass::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="AbstractElectrometerClass::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="AbstractElectrometerClass::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="AbstractElectrometerClass::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="AbstractElectrometerClass::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="AbstractElectrometerClass::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="AbstractElectrometerClass::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="AbstractElectrometerClass::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="AbstractElectrometerClass::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="AbstractElectrometerClass::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="AbstractElectrometerClass::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="AbstractElectrometerClass::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="AbstractElectrometerClass::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="AbstractElectrometerClass::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="AbstractElectrometerClass::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="AbstractElectrometerClass::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="AbstractElectrometerClass::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="AbstractElectrometerClass::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="AbstractElectrometerClass::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="AbstractElectrometerClass::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="AbstractElectrometerClass::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="AbstractElectrometerClass::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="AbstractElectrometerClass::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="AbstractElectrometerClass::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="AbstractElectrometerClass::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="AbstractElectrometerClass::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a44" doxytag="AbstractElectrometerClass::electrometer_status"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="AbstractElectrometerClass::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="AbstractElectrometerClass::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="AbstractElectrometerClass::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="AbstractElectrometerClass::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="AbstractElectrometerClass::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="AbstractElectrometerClass::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="AbstractElectrometerClass::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +Visible class from the DServer. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="AbstractElectrometerClass::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="AbstractElectrometerClass::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_abstract_electrometer_class_8h-source.html">AbstractElectrometerClass.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_abstract_electrometer_class.png b/doc/html/class_abstract_electrometer_class.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f42c73f5357dc952cf60d0ab2603412e9526fa GIT binary patch literal 2330 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 literal 0 HcmV?d00001 diff --git a/doc/html/class_communication_link-members.html b/doc/html/class_communication_link-members.html new file mode 100644 index 0000000..aecc37c --- /dev/null +++ b/doc/html/class_communication_link-members.html @@ -0,0 +1,19 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>CommunicationLink Member List</h1>This is the complete list of members for <a class="el" href="class_communication_link.html">CommunicationLink</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_Device_name</b> (defined in <a class="el" href="class_communication_link.html">CommunicationLink</a>)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a>(std::string &communication_link_name)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka3">read</a>(void)=0</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka2">write</a>(std::string)=0</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka4">write_read</a>(std::string cmd_to_send)=0</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka1">~CommunicationLink</a>(void)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_communication_link.html b/doc/html/class_communication_link.html new file mode 100644 index 0000000..def0610 --- /dev/null +++ b/doc/html/class_communication_link.html @@ -0,0 +1,225 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: CommunicationLink Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>CommunicationLink Class Reference<br> +<small> +[<a class="el" href="group___communication.html">Management</a>]</small> +</h1>Abstract class to manage a specific communication bus. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_communication_link_8h-source.html">CommunicationLink.h</a>></code> +<p> +<p>Inheritance diagram for CommunicationLink: +<p><center><img src="class_communication_link.png" usemap="#CommunicationLink_map" border="0" alt=""></center> +<map name="CommunicationLink_map"> +<area href="class_tango_gpib_link.html" alt="TangoGpibLink" shape="rect" coords="0,56,120,80"> +<area href="class_tango_serial_link.html" alt="TangoSerialLink" shape="rect" coords="130,56,250,80"> +</map> +<a href="class_communication_link-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a> (std::string &communication_link_name)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html#_communication_linka1">~CommunicationLink</a> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html#_communication_linka2">write</a> (std::string)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Send command (data) as string to hardware. <a href="#_communication_linka2"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html#_communication_linka3">read</a> (void)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets hardware response as string. <a href="#_communication_linka3"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html#_communication_linka4">write_read</a> (std::string cmd_to_send)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs a write read operation as string. <a href="#_communication_linka4"></a><br></td></tr> +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_tango_serial_linkp0" doxytag="CommunicationLink::_communication_Device_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_communication_Device_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +Abstract class to manage a specific communication bus. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="_communication_linka0" doxytag="CommunicationLink::CommunicationLink"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">CommunicationLink::CommunicationLink </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>communication_link_name</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="_communication_linka1" doxytag="CommunicationLink::~CommunicationLink"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual CommunicationLink::~<a class="el" href="class_communication_link.html">CommunicationLink</a> </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Release resources. </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_communication_linka3" doxytag="CommunicationLink::read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual std::string CommunicationLink::read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [pure virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Gets hardware response as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implemented in <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka3">TangoGpibLink</a>, and <a class="el" href="class_tango_serial_link.html#_tango_serial_linka3">TangoSerialLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_communication_linka2" doxytag="CommunicationLink::write"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void CommunicationLink::write </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [pure virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Send command (data) as string to hardware. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implemented in <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka2">TangoGpibLink</a>, and <a class="el" href="class_tango_serial_link.html#_tango_serial_linka2">TangoSerialLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_communication_linka4" doxytag="CommunicationLink::write_read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual std::string CommunicationLink::write_read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> <em>cmd_to_send</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [pure virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Performs a write read operation as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implemented in <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka4">TangoGpibLink</a>, and <a class="el" href="class_tango_serial_link.html#_tango_serial_linka4">TangoSerialLink</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_communication_link_8h-source.html">CommunicationLink.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_communication_link.png b/doc/html/class_communication_link.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9ccf8fc51369d7b72b0cdc014f01778b658be2 GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0y~yVEDzrz!1Q~%)r2K$hEYMfq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfe}iba4!+nDcg8Vp+2S&+)U< zYt?o#zG1uF`s?1k*MIvr2nZ}>DtmNmty-=i=l?$nZm&&pB_7lnM;|ojW!vHv{)<6& zqqOX%I2qHO^*wyjjR|+HC+G$KcxTF{_Cfk7e}nx81%>UGj3v^#wO{frG%j~a*ys3= z`S|zliFGd$Q@T#e_?f?yKB#!{sMWGc)&7Odc9Zi~RofeUHc-9wXYTohuJ-F*J*jiw zeBq$WoGUihD^^sNDK4A3=fq~emtNt&7QgVXUHtC$ZT;i_Pk(v+bjz3RufJ~j5`2Bn zrK#(_TwfUP{?^DzUWlJPVArLo>q?et|NVc-e)qSlU;Eg96zqN*`@)%VN?nna(xqPU zK)#gP$8+pkmN~_r&XrnV<CT;5qVkT3!%64Ykx%c17iqPh(Cf3hyJ+*YP?tXOcj-Ta zCmr)w_~JV`ZesB_jd`c!oc37Vt-hh|dtgcM!o}0Ke~&vg^Rc_jlf|sNz6Z~J_vpya zhRu4HRBQA<@4VxA>`?l`({fQW^<TbA{}QBk@{oi3o@T$i+50B`jFHom6P;Q9_RR9m zhlhTyj*BV(xPA4yDeP9EFM3yP&R`B%HKl$^mfXZmbG8}HKfU%(($m6+(MP7tHnrWp zW&hRKIg!63%YWa<Vq4MO{=&p<`;L<G3&ua?e%*Z({<A;$SM$ri;*a*-{pfagd;ay5 XeHnAS&n{+QU|{fc^>bP0l+XkKdN(j< literal 0 HcmV?d00001 diff --git a/doc/html/class_electrometer_protocol-members.html b/doc/html/class_electrometer_protocol-members.html new file mode 100644 index 0000000..fd6516d --- /dev/null +++ b/doc/html/class_electrometer_protocol-members.html @@ -0,0 +1,62 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>ElectrometerProtocol Member List</h1>This is the complete list of members for <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_link</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_frequency</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_gain</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_mode</b>(void)=0 (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_polarity</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_range</b>(void)=0 (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola9">get_raw_status</a>(void)=0</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola6">get_value</a>(void)=0</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void)=0 (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_frequency</b>(std::string freq) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_gain</b>(std::string gain) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_polarity</b>(std::string pola) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola2">set_range</a>(std::string val)=0</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>switch_MCCE2_OFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_leakage_zeroV2_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_offset_zeroV1_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_test_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_zeroVF_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">~ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_electrometer_protocol.html b/doc/html/class_electrometer_protocol.html new file mode 100644 index 0000000..53e31bf --- /dev/null +++ b/doc/html/class_electrometer_protocol.html @@ -0,0 +1,195 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: ElectrometerProtocol Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>ElectrometerProtocol Class Reference<br> +<small> +[<a class="el" href="group___standard.html">Commands Protocol</a>]</small> +</h1>This abstract class manage the Electrometers Commands Protocol. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_electrometer_protocol_8h-source.html">ElectrometerProtocol.h</a>></code> +<p> +<p>Inheritance diagram for ElectrometerProtocol: +<p><center><img src="class_electrometer_protocol.png" usemap="#ElectrometerProtocol_map" border="0" alt=""></center> +<map name="ElectrometerProtocol_map"> +<area href="class_keithley_d_d_c_protocol.html" alt="KeithleyDDCProtocol" shape="rect" coords="0,56,132,80"> +<area href="class_keithley_s_c_p_i_protocol.html" alt="KeithleySCPIProtocol" shape="rect" coords="142,56,274,80"> +<area href="class_novelec_protocol.html" alt="NovelecProtocol" shape="rect" coords="284,56,416,80"> +</map> +<a href="class_electrometer_protocol-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola0" doxytag="ElectrometerProtocol::ElectrometerProtocol"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola1" doxytag="ElectrometerProtocol::~ElectrometerProtocol"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">~ElectrometerProtocol</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola2" doxytag="ElectrometerProtocol::set_range"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola2">set_range</a> (std::string val)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common Electrometer Functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola3" doxytag="ElectrometerProtocol::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)=0</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola35" doxytag="ElectrometerProtocol::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola36" doxytag="ElectrometerProtocol::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola6" doxytag="ElectrometerProtocol::get_value"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola6">get_value</a> (void)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common Electrometer : getters & setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola7" doxytag="ElectrometerProtocol::get_mode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_mode</b> (void)=0</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola8" doxytag="ElectrometerProtocol::get_range"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_range</b> (void)=0</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_electrometer_protocola9" doxytag="ElectrometerProtocol::get_raw_status"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola9">get_raw_status</a> (void)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common Get Raw Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola24" doxytag="ElectrometerProtocol::init_keithley"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Keithley protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola25" doxytag="ElectrometerProtocol::set_knplc"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola26" doxytag="ElectrometerProtocol::set_triggercount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola27" doxytag="ElectrometerProtocol::set_averagecount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola28" doxytag="ElectrometerProtocol::set_averagecontrol"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola29" doxytag="ElectrometerProtocol::get_knplc"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola30" doxytag="ElectrometerProtocol::get_triggercount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola31" doxytag="ElectrometerProtocol::get_averagecount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola32" doxytag="ElectrometerProtocol::get_averagecontrol"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola33" doxytag="ElectrometerProtocol::clear_registers"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola34" doxytag="ElectrometerProtocol::averageStateON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola35" doxytag="ElectrometerProtocol::averageStateOFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola36" doxytag="ElectrometerProtocol::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola37" doxytag="ElectrometerProtocol::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola38" doxytag="ElectrometerProtocol::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola39" doxytag="ElectrometerProtocol::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola40" doxytag="ElectrometerProtocol::autoRange_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola41" doxytag="ElectrometerProtocol::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola42" doxytag="ElectrometerProtocol::zero_check_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola43" doxytag="ElectrometerProtocol::zero_check_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola44" doxytag="ElectrometerProtocol::zero_correct_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola45" doxytag="ElectrometerProtocol::zero_correct_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola46" doxytag="ElectrometerProtocol::auto_zero_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola47" doxytag="ElectrometerProtocol::auto_zero_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola37" doxytag="ElectrometerProtocol::switch_MCCE2_ON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Novelec protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola38" doxytag="ElectrometerProtocol::switch_MCCE2_OFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>switch_MCCE2_OFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola39" doxytag="ElectrometerProtocol::unable_zeroVF_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_zeroVF_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola40" doxytag="ElectrometerProtocol::unable_offset_zeroV1_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_offset_zeroV1_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola41" doxytag="ElectrometerProtocol::unable_leakage_zeroV2_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_leakage_zeroV2_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola42" doxytag="ElectrometerProtocol::unable_test_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_test_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola43" doxytag="ElectrometerProtocol::get_polarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_polarity</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola44" doxytag="ElectrometerProtocol::get_frequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_frequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola45" doxytag="ElectrometerProtocol::get_gain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_gain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola46" doxytag="ElectrometerProtocol::set_polarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_polarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola47" doxytag="ElectrometerProtocol::set_frequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_frequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola48" doxytag="ElectrometerProtocol::set_gain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_gain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp4" doxytag="ElectrometerProtocol::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp5" doxytag="ElectrometerProtocol::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp6" doxytag="ElectrometerProtocol::_communication_link"></a> +<a class="el" href="class_communication_link.html">CommunicationLink</a> * </td><td class="memItemRight" valign="bottom"><b>_communication_link</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This abstract class manage the Electrometers Commands Protocol. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_electrometer_protocol_8h-source.html">ElectrometerProtocol.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_electrometer_protocol.png b/doc/html/class_electrometer_protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9832f28364e364293c71378729ca14202068ab GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0y~yU|hh!z!1Q~%)r2~_V1qK3=9ks0X`wF|NsAIU|{(F z|G@nD2@@C?7{K_zfdkct{y$-0U|=i>@(X5gcy=R=fr06xr;B4q#hkY@0@poO;BlQi z|0i2nLK?fVw3F1z-|>eMq%}Mhb49;Dbi1>BdXPeU_2dU(v0{=pFAEtdsTPZE@Y*48 zg=foko-c{9Mgr4T$>hA(|GIwZtgFJ;j&UwdT~!~VA8=RelI)3D74nY?V>f2{lt|r= zconZX;o<g=6Vz7oZE?$Pi(8QyemJ(`fL_lTVIR}TbcI{aZwezX&-aY<d3C@xWtBts zGl!b?9Y#4!fdSbolYj1VxO3y)Le<&-PC2BOZ;`W{_uIExLtJlNUe28)#RLCjI@DLJ zFIsNGTpMA0A<p<hyD9TqQ|8);>AxjkuRN5&e2Hr@FURZaxm%bMWA!e)6?2Q8aP=uu z>^hAz4zEPrq$h+)<T^wpZeh%9y~wr%NuY7jY^~PMjVuDY4461#B^X=udKjF<-53^f zD>qzd6?AxUh(n<y5vTMYjc4zT|5lqhN<QniUwQwD3%^_cWXTo17aymvWhE;y?J56p zjB%fn+~#YQ8>U6AY;1Z}vSMzDfq>ym2A0&FU619MceYD*Ui-X}lV#`rvPTsME;4d` zR=A+Z78IiKx4kh(J>dFrHGw$i=W|Q>)+=3TTqn3Bkj+xOT}RI5?%vu3a?1oP1Q?uW zI4(DNC-Ci3K$WI;S<RKk2L1e)^Pd*2lRfb%K(hR{LoUybb_YG*)zh<BSEb(xfAeDn z^UX&`N|__8*xo(<XBZ&e+-cPKUEs&5MekXg!WJ;g?{?=?e`Z-2nDzGEh06}PKE5Z` zhBG~EK6+l=`D4M8WZ{nQpZ{K3=KkZZgY21?4m@A;S+usB`k(Q8rL~>a^xFl)Wx^|V zw_ghLex6_EefhYVK!9rF7U4|eH+Jopl*F#T4Be@=tcLF@|NNtKYh#|;gl~(ndR=wx zOCW0&=dHWEvUNwe6XU|oCuEoJf9=BYc~@0q-2P4Nek}(1FJ{I2O|_WWcuT_8FKvO@ kvzPqt{;qyk68<rJA9ye?CgH?#1_lNOPgg&ebxsLQ0QnSoivR!s literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__485-members.html b/doc/html/class_keithley__485-members.html new file mode 100644 index 0000000..5e8e8a3 --- /dev/null +++ b/doc/html/class_keithley__485-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_485 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__485.html">Keithley_485</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__485.html#_keithley__485a5">electrometer_status</a>(void)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__485.html#_keithley__485a4">get_ElectroMeterRange</a>(void)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__485.html#_keithley__485a0">Keithley_485</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__485.html">Keithley_485</a>)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__485.html#_keithley__485a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__485.html#_keithley__485a1">~Keithley_485</a>(void)</td><td><a class="el" href="class_keithley__485.html">Keithley_485</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__485.html b/doc/html/class_keithley__485.html new file mode 100644 index 0000000..e8dfa4a --- /dev/null +++ b/doc/html/class_keithley__485.html @@ -0,0 +1,267 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_485 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_485 Class Reference<br> +<small> +[<a class="el" href="group___d_d_c.html">Keithley</a>]</small> +</h1>This class manage 485 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__485_8h-source.html">Keithley_485.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_485: +<p><center><img src="class_keithley__485.png" usemap="#Keithley_485_map" border="0" alt=""></center> +<map name="Keithley_485_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__485-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a0" doxytag="Keithley_485::Keithley_485"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html#_keithley__485a0">Keithley_485</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a1" doxytag="Keithley_485::~Keithley_485"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html#_keithley__485a1">~Keithley_485</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a2" doxytag="Keithley_485::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html#_keithley__485a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a3" doxytag="Keithley_485::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a4" doxytag="Keithley_485::get_ElectroMeterRange"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html#_keithley__485a4">get_ElectroMeterRange</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getter(s) & setter(s) <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__485a5" doxytag="Keithley_485::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html#_keithley__485a5">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_485::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_485::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_485::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_485::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_485::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_485::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_485::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_485::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_485::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_485::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_485::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="Keithley_485::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="Keithley_485::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Keithley_485::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Keithley_485::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Keithley_485::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_485::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_485::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_485::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_485::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_485::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_485::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_485::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_485::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_485::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_485::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_485::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_485::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_485::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_485::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_485::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_485::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_485::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_485::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_485::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_485::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_485::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_485::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Keithley_485::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_485::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_485::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_485::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_485::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_485::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 485 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_485::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_485::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__485_8h-source.html">Keithley_485.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__485.png b/doc/html/class_keithley__485.png new file mode 100644 index 0000000000000000000000000000000000000000..dc34fc43f23f45a831e335b6c59630e54f6f29d4 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfh*Xba4!+nDcgOWYJ*-p0=~z z^C#vh%w2FfPQ!oaf59#>G4*B1)+Lil6jT@$Yd!wNO?!XvZSl`X8*_!)g#xRyLZ){x z9yq(2^&7`#=4pk_Dz{XUq;D!N`kgD-C@EpkdwH9Rv+}c<x(aIdO>d7k<1ruX9p` z)`TUKYmPp$oHkRJVd2at?mkD|tG%yid_2Ya+cIe0&Ewlkm8$!mHE+#g_+oSQILk@P zXOYfV<}zpn9?QL&^6*6I^R^k2Gm1;9)g~#<2s={LcgOnp+Eu=<cNcGw3C%XrboF-H zE$5pZzoD1m=9Y8U7rU(4B6m}*P)J^}uYUKt-064c`777O#LutT8y7e42Va!`BNaa= z67DqEaa5IWU8>OkX%b@59ghDF`}#Cod8lFd<e;vhhYwG5;C|uBvFmg@1Y7u1Cs$08 z&^a%{8CI3k5moBmpeM*>xUSP`pZ%TK(9;joBX;d>$}XLip?Oti>mAqm%x@)S6ruux zw+h>yHa@Z-sy*Xj!0C|GX^T&ll-<18ClI>&+}xtB9r{PN*M0j_{^-N@*Zj)UR67@` TGqW%-Ffe$!`njxgN@xNApuyno literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__486-members.html b/doc/html/class_keithley__486-members.html new file mode 100644 index 0000000..823653b --- /dev/null +++ b/doc/html/class_keithley__486-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_486 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__486.html">Keithley_486</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_keithley__486.html">Keithley_486</a>)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__486.html#_keithley__486a6">electrometer_status</a>(void)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__486.html#_keithley__486a5">get_ElectroMeterRange</a>(void)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__486.html#_keithley__486a0">Keithley_486</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__486.html">Keithley_486</a>)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__486.html#_keithley__486a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__486.html#_keithley__486a1">~Keithley_486</a>(void)</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__486.html b/doc/html/class_keithley__486.html new file mode 100644 index 0000000..c48caff --- /dev/null +++ b/doc/html/class_keithley__486.html @@ -0,0 +1,267 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_486 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_486 Class Reference<br> +<small> +[<a class="el" href="group___d_d_c.html">Keithley</a>]</small> +</h1>This class manage 486 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__486_8h-source.html">Keithley_486.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_486: +<p><center><img src="class_keithley__486.png" usemap="#Keithley_486_map" border="0" alt=""></center> +<map name="Keithley_486_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__486-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a0" doxytag="Keithley_486::Keithley_486"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html#_keithley__486a0">Keithley_486</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a1" doxytag="Keithley_486::~Keithley_486"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html#_keithley__486a1">~Keithley_486</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a2" doxytag="Keithley_486::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html#_keithley__486a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a3" doxytag="Keithley_486::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a4" doxytag="Keithley_486::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a5" doxytag="Keithley_486::get_ElectroMeterRange"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html#_keithley__486a5">get_ElectroMeterRange</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getter(s) & setter(s) <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__486a6" doxytag="Keithley_486::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html#_keithley__486a6">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_486::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_486::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_486::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_486::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_486::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_486::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_486::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_486::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_486::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_486::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_486::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="Keithley_486::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Keithley_486::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Keithley_486::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Keithley_486::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_486::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_486::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_486::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_486::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_486::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_486::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_486::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_486::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_486::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_486::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_486::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_486::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_486::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_486::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_486::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_486::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_486::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_486::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_486::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_486::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_486::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_486::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Keithley_486::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_486::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_486::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_486::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_486::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_486::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 486 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_486::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_486::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__486_8h-source.html">Keithley_486.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__486.png b/doc/html/class_keithley__486.png new file mode 100644 index 0000000000000000000000000000000000000000..db9d737f58cf1a9d47c7854db45fa8a33d556732 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfh*Yba4!+nDcgObQzN(Pus(# z=T)pd!Y*9SJE8u4f6FB9=`+2~TP$^dtGKAh)9#;u%;D!L)%@}{*To981h=Lx-sZx? zV7E6ip?^c=fm`o8T+BOfxbt<qsN3FgfQM(s@5<;&>jY1q5EIy(FV}ERxbW-6unr{~ zb&pFP_lzD(y*?q<aADaK=Vhz<x6NA-_$XB9Tk#U3P1EyVyOi}lYu3$XD4F{znN?Hj z^a|xyehj@Df9<k26+GEi?5?9!)oT~uk;1WzcjG+e{&OG0u7$nMf1V+=^;*i(DN#bV zYPUrFZpvjj5%#)BUNtHB^~`M@-9Mxs{i(mcxXkj+PlHFdzy9pJ{`%?5&h-JWU1N?w zQH_G2S~OQ?kzV(Y?MEbX6kUJz?ViE$vyW#<Pv^#xZ$~r?HQ#NsbnwwqcJxxHSutBh zoiE3uXPL2k)6#iXi#|Nw8|kdNOgHd%rAg4w;A?`j_WXI>6}P(Jn~d&~%qu0$cI<va zx+_lK>U_B6*d2%Srw=W>yRi6s;fB+UyW3Z6ZR$LdEENCi=I8sJm;cA^XHYn&+O_Z1 SqJInw3=E#GelF{r5}E)z`S0cc literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__487-members.html b/doc/html/class_keithley__487-members.html new file mode 100644 index 0000000..4596047 --- /dev/null +++ b/doc/html/class_keithley__487-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_487 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__487.html">Keithley_487</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_keithley__487.html">Keithley_487</a>)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a8">electrometer_status</a>(void)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a6">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_keithley__487.html">Keithley_487</a>)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a0">Keithley_487</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__487.html">Keithley_487</a>)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a5">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__487.html#_keithley__487a1">~Keithley_487</a>(void)</td><td><a class="el" href="class_keithley__487.html">Keithley_487</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__487.html b/doc/html/class_keithley__487.html new file mode 100644 index 0000000..fa2b8d5 --- /dev/null +++ b/doc/html/class_keithley__487.html @@ -0,0 +1,267 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_487 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_487 Class Reference<br> +<small> +[<a class="el" href="group___d_d_c.html">Keithley</a>]</small> +</h1>This class manage 487 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__487_8h-source.html">Keithley_487.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_487: +<p><center><img src="class_keithley__487.png" usemap="#Keithley_487_map" border="0" alt=""></center> +<map name="Keithley_487_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__487-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a0" doxytag="Keithley_487::Keithley_487"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a0">Keithley_487</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a1" doxytag="Keithley_487::~Keithley_487"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a1">~Keithley_487</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a2" doxytag="Keithley_487::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a3" doxytag="Keithley_487::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a4" doxytag="Keithley_487::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a5" doxytag="Keithley_487::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a5">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Function(s). <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a6" doxytag="Keithley_487::get_ElectroMeterMode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a6">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getter(s) & setter(s) <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a7" doxytag="Keithley_487::get_ElectroMeterRange"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__487a8" doxytag="Keithley_487::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html#_keithley__487a8">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_487::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_487::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_487::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_487::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_487::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_487::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_487::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_487::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_487::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_487::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_487::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Keithley_487::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Keithley_487::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Keithley_487::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_487::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_487::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_487::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_487::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_487::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_487::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_487::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_487::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_487::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_487::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_487::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_487::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_487::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_487::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_487::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_487::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_487::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_487::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_487::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_487::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_487::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_487::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_487::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_487::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_487::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_487::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_487::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 487 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_487::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_487::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__487_8h-source.html">Keithley_487.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__487.png b/doc/html/class_keithley__487.png new file mode 100644 index 0000000000000000000000000000000000000000..506a90eb7f0bf5a1d069f556e1f188ee9e0a2cbf GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfh*bba4!+nDcgOWYJ*-p0=~z z^C#vh_+7}<pR)YUe-77QM;~2zcSCcoimb?_h6#3CDkAOJPyhZj@z^O9KGjXVI+wPo z2u@rbE`8E=f%>}7eHxoQpWG{MKascHb;%SB!RM8BVI^Eik%`Tgx1X`jj8h4fmTq0q z_?*SH{YAK`Tykt;bIZa@@}Z&9(zX}(Tv?^^rgX}tL&y6|lRil#9@foP`et#KjaSof zTB!S$$sJOG&ugzSmHWMY(ihS6BDthikxRfc>`2t{E#b%4uDSR+ztpAYTDGJ1*6D|K z$X(37f57nw=U%<*i>uaD*#@Z<3e`Ky{4cZBntpg1zw*A=`SUCG#?71egKO`+Bc5}h zh+Qai!x2@!bE!iAr%8zA99i)H;W709xsquTr=CocP}*~7+I{~cYp!Q^C#gIQwpFnz zTpqLgNP|W3wU#T%?mS!Os0XPYGrjmM>U8dd{>bc)+&cGT4_23&3o34v(7k(f9&@?S z#I)&Kg`=k|?>tx~tK{YJw#YI4oKU%+r9yhgwbgU2pXxo@C=mba=I8sJhwrb87wT7S TVt%X)ia-WWS3j3^P6<r_?e*t$ literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__617-members.html b/doc/html/class_keithley__617-members.html new file mode 100644 index 0000000..563c421 --- /dev/null +++ b/doc/html/class_keithley__617-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_617 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__617.html">Keithley_617</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a2">autoRange_off</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a11">electrometer_status</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a9">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_keithley__617.html">Keithley_617</a>)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a0">Keithley_617</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__617.html">Keithley_617</a>)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a3">range_up</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a5">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_keithley__617.html">Keithley_617</a>)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_keithley__617.html">Keithley_617</a>)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_keithley__617.html">Keithley_617</a>)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__617.html#_keithley__617a1">~Keithley_617</a>(void)</td><td><a class="el" href="class_keithley__617.html">Keithley_617</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__617.html b/doc/html/class_keithley__617.html new file mode 100644 index 0000000..8c997ca --- /dev/null +++ b/doc/html/class_keithley__617.html @@ -0,0 +1,268 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_617 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_617 Class Reference<br> +<small> +[<a class="el" href="group___d_d_c.html">Keithley</a>]</small> +</h1>This class manage 617 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__617_8h-source.html">Keithley_617.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_617: +<p><center><img src="class_keithley__617.png" usemap="#Keithley_617_map" border="0" alt=""></center> +<map name="Keithley_617_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__617-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a0" doxytag="Keithley_617::Keithley_617"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a0">Keithley_617</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a1" doxytag="Keithley_617::~Keithley_617"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a1">~Keithley_617</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a2" doxytag="Keithley_617::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a2">autoRange_off</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a3" doxytag="Keithley_617::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a3">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer common functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a4" doxytag="Keithley_617::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a5" doxytag="Keithley_617::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a5">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a6" doxytag="Keithley_617::setVoltMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a7" doxytag="Keithley_617::setOhmMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a8" doxytag="Keithley_617::setCoulombMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a9" doxytag="Keithley_617::get_ElectroMeterMode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a9">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getter(s) & setter(s) <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a10" doxytag="Keithley_617::get_ElectroMeterRange"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__617a11" doxytag="Keithley_617::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html#_keithley__617a11">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_617::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_617::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_617::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_617::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_617::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_617::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_617::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_617::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_617::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_617::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_617::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_617::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_617::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_617::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_617::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_617::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_617::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_617::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_617::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_617::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_617::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_617::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_617::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_617::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_617::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_617::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_617::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_617::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_617::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_617::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_617::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_617::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_617::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_617::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_617::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_617::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_617::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_617::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 617 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_617::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_617::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__617_8h-source.html">Keithley_617.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__617.png b/doc/html/class_keithley__617.png new file mode 100644 index 0000000000000000000000000000000000000000..fa046c7dd5726c89d7593c09fb42e0b215321d15 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfh*cba4!+nDcgOY!Q<p&++Ng z?bLTVS~xD>JHh|ne-70@oTsA-uTAZ{#Tcl_xxZ%Pt{Q&1`KQBWtknuN0zdgUhfj4& z(|gpbG);KI<}0PnA$z^1d`oH9IQmX%V)By{ldhdydrQdWzN6x#oXc&SV@$(l+sw^q zT+VWJ*{$0us>gOUH-#!};uj8`Z4;ejml`&&VCCXpeCr==6G-k9G~1MRR!8+*PIFsD z&%W%Ao5G*Hwv^7^`e?_ItHsV=6mCg$-|6IXxx%~gn&G!s6}s79euc{lCcoRdXzDd@ z(L3&6c4<85P+fGrPX6tYW!IIDtN1-qKJxMZy6WSZ+n-+Ukbiz%ect)y)7AGmuU9V= zf})R|E^;;*3lHw}d30asFcT~5Z@#r!rN$?jKJPv9pqqP9CeN<Y&FvnRQb|f?T)QVX zBzv!qiA{1a(ad&x_2h`d@s60z5=WIQJ0^cQyJqbVK5zf<hRldQA;C*h$x-$mF0*{E zi66OVyU+2=^cJRtEisD^)$W;n<Kw2}JI-hJzOvD5@A&Oh^ZNe0|9&$6-v460ct&Nr U9`9)x1_lNOPgg&ebxsLQ05rMk*#H0l literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__6485-members.html b/doc/html/class_keithley__6485-members.html new file mode 100644 index 0000000..8572ce3 --- /dev/null +++ b/doc/html/class_keithley__6485-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6485 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__6485.html">Keithley_6485</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6485.html#_keithley__6485a0">Keithley_6485</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__6485.html">Keithley_6485</a>)</td><td><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6485.html#_keithley__6485a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6485.html#_keithley__6485a1">~Keithley_6485</a>(void)</td><td><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6485.html b/doc/html/class_keithley__6485.html new file mode 100644 index 0000000..0bae2c2 --- /dev/null +++ b/doc/html/class_keithley__6485.html @@ -0,0 +1,266 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6485 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6485 Class Reference<br> +<small> +[<a class="el" href="group___s_c_p_i.html">Keithley</a>]</small> +</h1>This class manage 6485 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__6485_8h-source.html">Keithley_6485.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_6485: +<p><center><img src="class_keithley__6485.png" usemap="#Keithley_6485_map" border="0" alt=""></center> +<map name="Keithley_6485_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__6485-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6485a0" doxytag="Keithley_6485::Keithley_6485"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6485.html#_keithley__6485a0">Keithley_6485</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6485a1" doxytag="Keithley_6485::~Keithley_6485"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6485.html#_keithley__6485a1">~Keithley_6485</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6485a2" doxytag="Keithley_6485::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6485.html#_keithley__6485a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6485a3" doxytag="Keithley_6485::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_6485::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_6485::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_6485::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_6485::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_6485::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_6485::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_6485::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_6485::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_6485::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_6485::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_6485::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="Keithley_6485::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="Keithley_6485::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Keithley_6485::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Keithley_6485::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Keithley_6485::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_6485::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_6485::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_6485::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_6485::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_6485::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_6485::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_6485::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_6485::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_6485::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_6485::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_6485::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_6485::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_6485::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_6485::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_6485::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_6485::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_6485::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_6485::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_6485::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_6485::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_6485::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_6485::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a44" doxytag="Keithley_6485::electrometer_status"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Keithley_6485::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="Keithley_6485::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_6485::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_6485::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_6485::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_6485::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_6485::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 6485 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_6485::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_6485::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__6485_8h-source.html">Keithley_6485.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6485.png b/doc/html/class_keithley__6485.png new file mode 100644 index 0000000000000000000000000000000000000000..fb300c33ab774da26ec4f9d5150472c48310e662 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfcCmba4!+nDcgOY!Q<p&vA48 zTD6^y7LLpJPVm3?pF=gip={=^X??dCFSe@u`O$9h?wjS#z4`K$dC^B!x?GBrG8a#G zDf!&0{F`gD^3_83lzXZ{`->b@`fn>IotrW7)Q+6fMkYyT&Nzl7oo2auZccX3H-)Yb zlN7wue|8-;y*ATw!bzV`%FCn{?^S=L)!EhZSH?2!+sE9wGh!DX4LB_|F=qL(2uG*n zGggb<wcO}1dbc?(+HdFEJA%$G>o2}_OmR-xr*N(K%;MrZr*CEbeJkU;_}Z+sQ-ZwJ zcK3&6m)~&nxS1vUJuochN>y6)5!XMwh5v4Uy;io%@>AlG?VmpjpMQS&vT*#uYu!6K zpy-E#l3!k?_vGTpBl}ejr9ET$)N-#iO@m+aHKWpz2VE=Vt{hj`DQLK|r$zH+QIGEv z_6K}QGiFUPje4coG2zPUNO{F1)n(dAOwxz9y<IJn&U@p@RHce(0+#Y>zb38P*rOfz z(_mM{<J-kkOO=ncxpywu+Lq$p@s)4uZw_~@&DS41pU~{G_UgVhzdN>j)ja$^@4x?? de`SA}X8cx7vX^LbVqjok@O1TaS?83{1OU~!_>%wt literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__6487-members.html b/doc/html/class_keithley__6487-members.html new file mode 100644 index 0000000..ff17621 --- /dev/null +++ b/doc/html/class_keithley__6487-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6487 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__6487.html">Keithley_6487</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6487.html#_keithley__6487a0">Keithley_6487</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__6487.html">Keithley_6487</a>)</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6487.html#_keithley__6487a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6487.html#_keithley__6487a4">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6487.html#_keithley__6487a1">~Keithley_6487</a>(void)</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6487.html b/doc/html/class_keithley__6487.html new file mode 100644 index 0000000..a391618 --- /dev/null +++ b/doc/html/class_keithley__6487.html @@ -0,0 +1,267 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6487 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6487 Class Reference<br> +<small> +[<a class="el" href="group___s_c_p_i.html">Keithley</a>]</small> +</h1>This class manage 6487 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__6487_8h-source.html">Keithley_6487.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_6487: +<p><center><img src="class_keithley__6487.png" usemap="#Keithley_6487_map" border="0" alt=""></center> +<map name="Keithley_6487_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__6487-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6487a0" doxytag="Keithley_6487::Keithley_6487"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6487.html#_keithley__6487a0">Keithley_6487</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6487a1" doxytag="Keithley_6487::~Keithley_6487"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6487.html#_keithley__6487a1">~Keithley_6487</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6487a2" doxytag="Keithley_6487::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6487.html#_keithley__6487a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6487a3" doxytag="Keithley_6487::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6487a4" doxytag="Keithley_6487::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6487.html#_keithley__6487a4">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_6487::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_6487::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_6487::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_6487::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_6487::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_6487::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_6487::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_6487::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_6487::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_6487::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_6487::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="Keithley_6487::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Keithley_6487::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Keithley_6487::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Keithley_6487::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_6487::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_6487::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_6487::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_6487::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_6487::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_6487::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_6487::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_6487::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_6487::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_6487::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_6487::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_6487::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_6487::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_6487::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_6487::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_6487::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_6487::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_6487::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_6487::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_6487::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_6487::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_6487::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a44" doxytag="Keithley_6487::electrometer_status"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Keithley_6487::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="Keithley_6487::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_6487::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_6487::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_6487::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_6487::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_6487::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 6487 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_6487::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_6487::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__6487_8h-source.html">Keithley_6487.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:20 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6487.png b/doc/html/class_keithley__6487.png new file mode 100644 index 0000000000000000000000000000000000000000..7bdda173136d6d0bd4b9a67508e45158a7e10d2f GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfcCkba4!+nDch3chO-59*4EQ z*FDSy)L(27Kc)5E-svL$hV1PhTl^;Racy%H;;*&&_{lQj-t>N(FttLBi6tTr(;oG7 ztc#P}^xnWWXl}X7vsk6C*8Ck$>Z)DNNE!#toSq!H%&ljtWJgzi<bqc-i@#nJbm82i za>6J=?_xzyX)0Ta(bPLGp|vGnT<)sIP26yOVsfgz{k6`U$tLnyk;;>fue7^1p~Emt zHqhTG$7SaC$j!OS@A$pz5Ok4W{JQx>+lf6&*Q}l`wtAPEyZ2w1dv{><*=t@eRVVN5 zzm{!&!_nhrmF)Y)Zz8@{E%AAza?e@jf9c*(J@ab2o*!kkb&tMQRaQOH{!%5RUI<0< z9!CyNnr31#-SdyPlFl+e1^*Ym8C{<yY@4Ux<YVTtb%FI9B{g2<M6X@85>?C_MBluz zQE74w-sI+O%PKf2sxZ3uen&)Srn65%v4zL4_BD*r6-zl2`UEWJt5v<s?n#a7JZ0~@ z<;t!#(uRC@^dB1vZn-{TO-sb@3-^u(AF;J$xZ`*w?xDk@wTk;b)Sv&a&i8*;9plrF XDxVJ3u>WLWU|{fc^>bP0l+XkK(ktY( literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__6512-members.html b/doc/html/class_keithley__6512-members.html new file mode 100644 index 0000000..3f01029 --- /dev/null +++ b/doc/html/class_keithley__6512-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6512 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__6512.html">Keithley_6512</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a2">autoRange_off</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a11">electrometer_status</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a9">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_keithley__6512.html">Keithley_6512</a>)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a0">Keithley_6512</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__6512.html">Keithley_6512</a>)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a3">range_up</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a5">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6512.html">Keithley_6512</a>)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6512.html">Keithley_6512</a>)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6512.html">Keithley_6512</a>)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6512.html#_keithley__6512a1">~Keithley_6512</a>(void)</td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6512.html b/doc/html/class_keithley__6512.html new file mode 100644 index 0000000..0a446f4 --- /dev/null +++ b/doc/html/class_keithley__6512.html @@ -0,0 +1,268 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6512 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6512 Class Reference<br> +<small> +[<a class="el" href="group___d_d_c.html">Keithley</a>]</small> +</h1>This class manage 6512 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__6512_8h-source.html">Keithley_6512.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_6512: +<p><center><img src="class_keithley__6512.png" usemap="#Keithley_6512_map" border="0" alt=""></center> +<map name="Keithley_6512_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__6512-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a0" doxytag="Keithley_6512::Keithley_6512"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a0">Keithley_6512</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a1" doxytag="Keithley_6512::~Keithley_6512"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a1">~Keithley_6512</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a2" doxytag="Keithley_6512::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a2">autoRange_off</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a3" doxytag="Keithley_6512::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a3">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer common functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a4" doxytag="Keithley_6512::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a5" doxytag="Keithley_6512::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a5">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a6" doxytag="Keithley_6512::setVoltMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a7" doxytag="Keithley_6512::setOhmMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a8" doxytag="Keithley_6512::setCoulombMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a9" doxytag="Keithley_6512::get_ElectroMeterMode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a9">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getter(s) & setter(s) <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a10" doxytag="Keithley_6512::get_ElectroMeterRange"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6512a11" doxytag="Keithley_6512::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html#_keithley__6512a11">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_6512::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_6512::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_6512::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_6512::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_6512::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_6512::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_6512::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_6512::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_6512::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_6512::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_6512::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_6512::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_6512::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_6512::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_6512::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_6512::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_6512::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_6512::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_6512::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_6512::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_6512::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_6512::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_6512::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_6512::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_6512::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_6512::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_6512::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_6512::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_6512::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_6512::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_6512::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_6512::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_6512::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_6512::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_6512::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_6512::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_6512::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_6512::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 6512 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_6512::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_6512::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__6512_8h-source.html">Keithley_6512.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6512.png b/doc/html/class_keithley__6512.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e881155c89cfefacb2c10876509b1d991489a0 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfcCnba4!+nDcgOU=gz-N88h- z=MV9IV43^Psq)m{{s6&(yCK%I*UeRt?e!FS_}SgZti~_z{X^xmx!o31J(fN{c3Vi@ z#pH9IVr0v$iLZ7j8kKimapUVqsk2pD*21aT|9P8^v+6G&@s3UT^Aa{1FMk!hOW3u- zZ^F{edyXbaz4j5G;OYBGaoMZjDsP>@M^8C#TW&i4CH1zH;Y_!$3w5(yjOHG7=YAwr zdrjc9Ux#$yvD|BG9!}XdS9(!*hUu)koohOdSSQ&YH?cY%cP;95{__=5-fJVhHMgc* z`n_W7HrBfwnwe|=+IbyWcg^^=lHMc9M}L;TzF21Y=BL4<+h2cnUVr`cW#{^U*RC-~ zpr}ScP<^|^qbD(9AN4y0uE;p<TNrz4>y)ZA=?Aec9}e;go@qJ!#qCJM6_*~t)~0=& zEK~UpvblFAWGO6ICO4O3(pI5`!j>vYs>h_0LZ+_!I&Tf5dF4*A1$_cq8}&c7pPF)F zm0`cOp;lqR+hg0GtG)j0qOrAYg?opo=gw}c$=Q`NZe%wnTRZA(ef8g`&fP}qW9$Fw gfA)pHE`Q}t<W>!R^<U>D0|Nttr>mdKI;Vst0FnywB>(^b literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley__6514-members.html b/doc/html/class_keithley__6514-members.html new file mode 100644 index 0000000..6dfe5c6 --- /dev/null +++ b/doc/html/class_keithley__6514-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6514 Member List</h1>This is the complete list of members for <a class="el" href="class_keithley__6514.html">Keithley_6514</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6514.html#_keithley__6514a0">Keithley_6514</a>(std::string &comLink_device_name)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_keithley__6514.html">Keithley_6514</a>)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6514.html#_keithley__6514a2">range_up</a>(void)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string pola) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6514.html#_keithley__6514a4">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6514.html">Keithley_6514</a>)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6514.html">Keithley_6514</a>)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_keithley__6514.html">Keithley_6514</a>)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley__6514.html#_keithley__6514a1">~Keithley_6514</a>(void)</td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6514.html b/doc/html/class_keithley__6514.html new file mode 100644 index 0000000..e154e09 --- /dev/null +++ b/doc/html/class_keithley__6514.html @@ -0,0 +1,267 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley_6514 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley_6514 Class Reference<br> +<small> +[<a class="el" href="group___s_c_p_i.html">Keithley</a>]</small> +</h1>This class manage 6514 Keithley type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley__6514_8h-source.html">Keithley_6514.h</a>></code> +<p> +<p>Inheritance diagram for Keithley_6514: +<p><center><img src="class_keithley__6514.png" usemap="#Keithley_6514_map" border="0" alt=""></center> +<map name="Keithley_6514_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_keithley__6514-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a0" doxytag="Keithley_6514::Keithley_6514"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6514.html#_keithley__6514a0">Keithley_6514</a> (std::string &comLink_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a1" doxytag="Keithley_6514::~Keithley_6514"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6514.html#_keithley__6514a1">~Keithley_6514</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a2" doxytag="Keithley_6514::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6514.html#_keithley__6514a2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a3" doxytag="Keithley_6514::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a4" doxytag="Keithley_6514::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6514.html#_keithley__6514a4">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a5" doxytag="Keithley_6514::setVoltMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a6" doxytag="Keithley_6514::setOhmMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a7" doxytag="Keithley_6514::setCoulombMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Keithley_6514::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Keithley_6514::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Keithley_6514::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Keithley_6514::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Keithley_6514::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Keithley_6514::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Keithley_6514::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Keithley_6514::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Keithley_6514::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Keithley_6514::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Keithley_6514::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="Keithley_6514::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Keithley_6514::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Keithley_6514::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Keithley_6514::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Keithley_6514::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Keithley_6514::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Keithley_6514::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Keithley_6514::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Keithley_6514::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Keithley_6514::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Keithley_6514::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Keithley_6514::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec Electrometer methods. <a href="#_keithley__6514a32"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a33" doxytag="Keithley_6514::set_Offset_ZeroV1_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a34" doxytag="Keithley_6514::set_Leakage_ZeroV2_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a35" doxytag="Keithley_6514::set_Test_function"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a36" doxytag="Keithley_6514::mcce_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a37" doxytag="Keithley_6514::mcce_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a38" doxytag="Keithley_6514::get_ElectroMeterPolarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Keithley_6514::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Keithley_6514::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a41" doxytag="Keithley_6514::set_ElectroMeterPolarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Keithley_6514::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Keithley_6514::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley__6514a44" doxytag="Keithley_6514::electrometer_status"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Keithley_6514::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="Keithley_6514::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Keithley_6514::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Keithley_6514::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Keithley_6514::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Keithley_6514::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Keithley_6514::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage 6514 Keithley type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Keithley_6514::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_keithley__6514a32" doxytag="Keithley_6514::set_Zero_VonF_function"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual void AbstractElectrometerClass::set_Zero_VonF_function </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Novelec Electrometer methods. +<p> +Following functions are only supported for Novelec Protocol +<p> +Reimplemented in <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley__6514_8h-source.html">Keithley_6514.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley__6514.png b/doc/html/class_keithley__6514.png new file mode 100644 index 0000000000000000000000000000000000000000..d39d86fe91640033faed0dd350e5eaefd5930967 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z!1Q~%)r3Vyph9_fq_9Hz$e7@|Ns9C3=IGO zADBNsVFCjK0~jATaG?6o|0fI#42&f~e!&b5&u*kKFfcCmba4!+nDcgOY!Q<p&+(Jq z^F8wf{4QkbKbid9-sz-x_bxxzmn&oiVmVIs*K<5x_WtBs<Jze^a|M?Rc~<A{(Jgdz zF`us^(r;iLBwg<EELQ33#PE(Mb=599tlUAe*K;G=+<Io}3WVOba@=Y>{n=vM4y8S6 zCoV<qODgQmP2)b1qV`iT`18ek!lqt(loIXT`)1bGM5~Kk&#>E)+Uv0{xOR=gLc=uK zz;dTM9Y*gqr*SXe^!ARRv&;I6Zyi&dMeG!}73*9-SE!%8`s-24S#E1hqcxXK^C^>G zdu?BWw4&(h(mU>*7AwD=+1AnhgQM`@?XTC$cHI1&d8GgGYvKOmhffRNUwEy1M+X%B za8dHhvwV7Tr_Q5zA;p=N%{B|;S8bhA<z%(_zgLUI9KnOW8Xpvs!b~NL-4-U~Fr9pI zU7aVBC7e05W7)iBj!9o-U2=}pxSd%h^ku^FO>B3bT#ah5bmCIt33pSTeatHFNREr< zPlk(^-fY^Z(06a%t)<r{yye(<^mOc(n;eDf-yXMjx)Sv^{?+e}?OrvH|IhpHKj&ZB aUq*`%RbHdVrF;ww3=E#GelF{r5}E*@PwL<R literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley_d_d_c_protocol-members.html b/doc/html/class_keithley_d_d_c_protocol-members.html new file mode 100644 index 0000000..064bcdd --- /dev/null +++ b/doc/html/class_keithley_d_d_c_protocol-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>KeithleyDDCProtocol Member List</h1>This is the complete list of members for <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_link</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_OFF_forK486_487</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_OFF_forK617_6512</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_on</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_frequency</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_gain</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">get_mode</a>(void)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [inline, virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_polarity</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_range</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola21">get_raw_status</a>(void)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola14">get_value</a>(void)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola0">KeithleyDDCProtocol</a>(std::string &gpib_device_name)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_frequency</b>(std::string freq) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_gain</b>(std::string gain) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_polarity</b>(std::string pola) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola2">set_range</a>(std::string value)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola15">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode_forK487</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>switch_MCCE2_OFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_leakage_zeroV2_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_offset_zeroV1_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_test_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_zeroVF_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a>)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">~ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola1">~KeithleyDDCProtocol</a>(void)</td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley_d_d_c_protocol.html b/doc/html/class_keithley_d_d_c_protocol.html new file mode 100644 index 0000000..6fb1866 --- /dev/null +++ b/doc/html/class_keithley_d_d_c_protocol.html @@ -0,0 +1,204 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: KeithleyDDCProtocol Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>KeithleyDDCProtocol Class Reference<br> +<small> +[<a class="el" href="group___standard.html">Commands Protocol</a>]</small> +</h1>This class manage the Keithley DDC Commands Protocol. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley_d_d_c_protocol_8h-source.html">KeithleyDDCProtocol.h</a>></code> +<p> +<p>Inheritance diagram for KeithleyDDCProtocol: +<p><center><img src="class_keithley_d_d_c_protocol.png" usemap="#KeithleyDDCProtocol_map" border="0" alt=""></center> +<map name="KeithleyDDCProtocol_map"> +<area href="class_electrometer_protocol.html" alt="ElectrometerProtocol" shape="rect" coords="0,0,131,24"> +</map> +<a href="class_keithley_d_d_c_protocol-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola0" doxytag="KeithleyDDCProtocol::KeithleyDDCProtocol"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola0">KeithleyDDCProtocol</a> (std::string &gpib_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola1" doxytag="KeithleyDDCProtocol::~KeithleyDDCProtocol"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola1">~KeithleyDDCProtocol</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola2" doxytag="KeithleyDDCProtocol::set_range"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola2">set_range</a> (std::string value)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola3" doxytag="KeithleyDDCProtocol::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola4" doxytag="KeithleyDDCProtocol::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola5" doxytag="KeithleyDDCProtocol::autoRange_OFF_forK486_487"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_OFF_forK486_487</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola6" doxytag="KeithleyDDCProtocol::autoRange_OFF_forK617_6512"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_OFF_forK617_6512</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola7" doxytag="KeithleyDDCProtocol::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola8" doxytag="KeithleyDDCProtocol::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola9" doxytag="KeithleyDDCProtocol::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola10" doxytag="KeithleyDDCProtocol::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola11" doxytag="KeithleyDDCProtocol::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola12" doxytag="KeithleyDDCProtocol::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola13" doxytag="KeithleyDDCProtocol::reset"></a> +void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola14" doxytag="KeithleyDDCProtocol::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola14">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola15" doxytag="KeithleyDDCProtocol::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola15">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola16" doxytag="KeithleyDDCProtocol::setAmperMeterMode_forK487"></a> +void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode_forK487</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola17" doxytag="KeithleyDDCProtocol::setVoltMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola18" doxytag="KeithleyDDCProtocol::setOhmMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola19" doxytag="KeithleyDDCProtocol::setCoulombMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola20" doxytag="KeithleyDDCProtocol::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola21" doxytag="KeithleyDDCProtocol::get_raw_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola21">get_raw_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get Raw Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola22" doxytag="KeithleyDDCProtocol::get_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">get_mode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode : getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_d_d_c_protocola23" doxytag="KeithleyDDCProtocol::get_range"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_range</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola35" doxytag="KeithleyDDCProtocol::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola36" doxytag="KeithleyDDCProtocol::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola24" doxytag="KeithleyDDCProtocol::init_keithley"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Keithley protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola25" doxytag="KeithleyDDCProtocol::set_knplc"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola26" doxytag="KeithleyDDCProtocol::set_triggercount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola27" doxytag="KeithleyDDCProtocol::set_averagecount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola28" doxytag="KeithleyDDCProtocol::set_averagecontrol"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola29" doxytag="KeithleyDDCProtocol::get_knplc"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola30" doxytag="KeithleyDDCProtocol::get_triggercount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola31" doxytag="KeithleyDDCProtocol::get_averagecount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola32" doxytag="KeithleyDDCProtocol::get_averagecontrol"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola34" doxytag="KeithleyDDCProtocol::averageStateON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola35" doxytag="KeithleyDDCProtocol::averageStateOFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola37" doxytag="KeithleyDDCProtocol::switch_MCCE2_ON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Novelec protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola38" doxytag="KeithleyDDCProtocol::switch_MCCE2_OFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>switch_MCCE2_OFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola39" doxytag="KeithleyDDCProtocol::unable_zeroVF_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_zeroVF_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola40" doxytag="KeithleyDDCProtocol::unable_offset_zeroV1_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_offset_zeroV1_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola41" doxytag="KeithleyDDCProtocol::unable_leakage_zeroV2_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_leakage_zeroV2_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola42" doxytag="KeithleyDDCProtocol::unable_test_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_test_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola43" doxytag="KeithleyDDCProtocol::get_polarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_polarity</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola44" doxytag="KeithleyDDCProtocol::get_frequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_frequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola45" doxytag="KeithleyDDCProtocol::get_gain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_gain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola46" doxytag="KeithleyDDCProtocol::set_polarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_polarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola47" doxytag="KeithleyDDCProtocol::set_frequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_frequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola48" doxytag="KeithleyDDCProtocol::set_gain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_gain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp4" doxytag="KeithleyDDCProtocol::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp5" doxytag="KeithleyDDCProtocol::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp6" doxytag="KeithleyDDCProtocol::_communication_link"></a> +<a class="el" href="class_communication_link.html">CommunicationLink</a> * </td><td class="memItemRight" valign="bottom"><b>_communication_link</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage the Keithley DDC Commands Protocol. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley_d_d_c_protocol_8h-source.html">KeithleyDDCProtocol.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley_d_d_c_protocol.png b/doc/html/class_keithley_d_d_c_protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1a38455b77c5a95e468fd14922b308e7f6864d GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0y~yU}$DwU<hDgW?*1AA$j`>0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|`Jlba4!+nDch3cis^Lj<&OD z*ADQ`5e|9Vy6e>6{s6hMq~+gKl*2<!jJWxKHtMq&dHs;u+W%oE&n*`jfr%Z-VLSXz z>{?<XRN*YL(w0R$PF&FQ-O-{=a)w!=JC!CWxoq}+G^NI+L*Q-unN%+!b<d`G0;iv3 zi7nF$d$^RfDOapeQ^31-gWe?{?-oxNJ>BOVWy{|wEsb@1vOLH3guY9*Smuc*vp<Af z61;S;Ro%qQC{6g|v<~|p9CL0yHhF9>@cKKiK!538#z$(>GdntGfKf%7NtQ&xmb0A} z3JMk+im^LiZfHEQ=gA7kKt5}xO+iW*m^0k>`HCyHznd=L`T9*jp!V59u|+K&{Ry&S z93T9aH2lfj(5t|oTX;usi{ggv3y}$e{H97j?i7VQ<B(gqtD^5i<Ga|7|5{3=`|LZE zU-e$$uuwW+#`Gd^_SuJfJ+j5tZ=E>JF*+|oyzuYd_loPx3zyfws#Z8=&t(60@>_=K U8GdsZ7#J8lUHx3vIVCg!0Cr8o?EnA( literal 0 HcmV?d00001 diff --git a/doc/html/class_keithley_s_c_p_i_protocol-members.html b/doc/html/class_keithley_s_c_p_i_protocol-members.html new file mode 100644 index 0000000..ad2960d --- /dev/null +++ b/doc/html/class_keithley_s_c_p_i_protocol-members.html @@ -0,0 +1,67 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>KeithleySCPIProtocol Member List</h1>This is the complete list of members for <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_link</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_on</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_frequency</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_gain</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola32">get_mode</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_polarity</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_range</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola31">get_raw_status</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola18">get_value</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola19">init_keithley</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola0">KeithleySCPIProtocol</a>(std::string &gpib_device_name)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_frequency</b>(std::string freq) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_gain</b>(std::string gain) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">set_isDiffSuportedMode</a>(bool supportDiffMode)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [inline]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_polarity</b>(std::string pola) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola2">set_range</a>(std::string value)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola14">setAmperMeterMode</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>switch_MCCE2_OFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_leakage_zeroV2_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_offset_zeroV1_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_test_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_zeroVF_func</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_state_off</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_state_on</b>(void) (defined in <a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a>)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">~ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola1">~KeithleySCPIProtocol</a>(void)</td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley_s_c_p_i_protocol.html b/doc/html/class_keithley_s_c_p_i_protocol.html new file mode 100644 index 0000000..5aec6a0 --- /dev/null +++ b/doc/html/class_keithley_s_c_p_i_protocol.html @@ -0,0 +1,232 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: KeithleySCPIProtocol Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>KeithleySCPIProtocol Class Reference<br> +<small> +[<a class="el" href="group___standard.html">Commands Protocol</a>]</small> +</h1>This class manage the Keithley SCPI Commands Protocol. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_keithley_s_c_p_i_protocol_8h-source.html">KeithleySCPIProtocol.h</a>></code> +<p> +<p>Inheritance diagram for KeithleySCPIProtocol: +<p><center><img src="class_keithley_s_c_p_i_protocol.png" usemap="#KeithleySCPIProtocol_map" border="0" alt=""></center> +<map name="KeithleySCPIProtocol_map"> +<area href="class_electrometer_protocol.html" alt="ElectrometerProtocol" shape="rect" coords="0,0,132,24"> +</map> +<a href="class_keithley_s_c_p_i_protocol-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola0" doxytag="KeithleySCPIProtocol::KeithleySCPIProtocol"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola0">KeithleySCPIProtocol</a> (std::string &gpib_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola1" doxytag="KeithleySCPIProtocol::~KeithleySCPIProtocol"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola1">~KeithleySCPIProtocol</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola2" doxytag="KeithleySCPIProtocol::set_range"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola2">set_range</a> (std::string value)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola3" doxytag="KeithleySCPIProtocol::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola4" doxytag="KeithleySCPIProtocol::autoRange_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola5" doxytag="KeithleySCPIProtocol::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola6" doxytag="KeithleySCPIProtocol::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola7" doxytag="KeithleySCPIProtocol::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola8" doxytag="KeithleySCPIProtocol::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola9" doxytag="KeithleySCPIProtocol::zero_correct_state_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_state_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola10" doxytag="KeithleySCPIProtocol::zero_correct_state_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_state_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola11" doxytag="KeithleySCPIProtocol::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola12" doxytag="KeithleySCPIProtocol::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola13" doxytag="KeithleySCPIProtocol::reset"></a> +void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola14" doxytag="KeithleySCPIProtocol::setAmperMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola14">setAmperMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola15" doxytag="KeithleySCPIProtocol::setVoltMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola16" doxytag="KeithleySCPIProtocol::setOhmMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola17" doxytag="KeithleySCPIProtocol::setCoulombMeterMode"></a> +void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola18" doxytag="KeithleySCPIProtocol::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola18">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola19" doxytag="KeithleySCPIProtocol::init_keithley"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola19">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Keithley protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola20" doxytag="KeithleySCPIProtocol::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola21" doxytag="KeithleySCPIProtocol::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola22" doxytag="KeithleySCPIProtocol::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola23" doxytag="KeithleySCPIProtocol::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola24" doxytag="KeithleySCPIProtocol::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola25" doxytag="KeithleySCPIProtocol::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola26" doxytag="KeithleySCPIProtocol::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola27" doxytag="KeithleySCPIProtocol::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola28" doxytag="KeithleySCPIProtocol::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola29" doxytag="KeithleySCPIProtocol::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola30" doxytag="KeithleySCPIProtocol::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola31" doxytag="KeithleySCPIProtocol::get_raw_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola31">get_raw_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get Raw Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola32" doxytag="KeithleySCPIProtocol::get_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola32">get_mode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : getter and setter. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola33" doxytag="KeithleySCPIProtocol::get_range"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_range</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">set_isDiffSuportedMode</a> (bool supportDiffMode)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola35" doxytag="KeithleySCPIProtocol::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola36" doxytag="KeithleySCPIProtocol::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola37" doxytag="KeithleySCPIProtocol::switch_MCCE2_ON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">switch_MCCE2_ON</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Novelec protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola38" doxytag="KeithleySCPIProtocol::switch_MCCE2_OFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>switch_MCCE2_OFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola39" doxytag="KeithleySCPIProtocol::unable_zeroVF_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_zeroVF_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola40" doxytag="KeithleySCPIProtocol::unable_offset_zeroV1_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_offset_zeroV1_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola41" doxytag="KeithleySCPIProtocol::unable_leakage_zeroV2_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_leakage_zeroV2_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola42" doxytag="KeithleySCPIProtocol::unable_test_func"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>unable_test_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola43" doxytag="KeithleySCPIProtocol::get_polarity"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_polarity</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola44" doxytag="KeithleySCPIProtocol::get_frequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_frequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola45" doxytag="KeithleySCPIProtocol::get_gain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_gain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola46" doxytag="KeithleySCPIProtocol::set_polarity"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_polarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola47" doxytag="KeithleySCPIProtocol::set_frequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_frequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_keithley_s_c_p_i_protocola48" doxytag="KeithleySCPIProtocol::set_gain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_gain</b> (std::string gain)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp4" doxytag="KeithleySCPIProtocol::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp5" doxytag="KeithleySCPIProtocol::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp6" doxytag="KeithleySCPIProtocol::_communication_link"></a> +<a class="el" href="class_communication_link.html">CommunicationLink</a> * </td><td class="memItemRight" valign="bottom"><b>_communication_link</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage the Keithley SCPI Commands Protocol. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_keithley_s_c_p_i_protocola34" doxytag="KeithleySCPIProtocol::set_isDiffSuportedMode"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void KeithleySCPIProtocol::set_isDiffSuportedMode </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">bool </td> + <td class="mdname1" valign="top" nowrap> <em>supportDiffMode</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> + </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_keithley_s_c_p_i_protocol_8h-source.html">KeithleySCPIProtocol.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_keithley_s_c_p_i_protocol.png b/doc/html/class_keithley_s_c_p_i_protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..1585c89d786fae03c0f6157ab43c8d37ef713d40 GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0y~yU}#}rU<hDgW?*2@I(lF&0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|=lsba4!+nDcgOY~Eo7p5q@+ z&&$noC~JP}RQu|0zd^lY!z44|*&?Akv`nAPpWnOC>&LupAGZ45dhS%hp>%7Jd(iR^ z6-g%-D~P(>S=!!l%i1O2NsP@hmAsxk=Y%g+1i5U{<kx#A(8(NFe`TqNu1a%@N+)NM zYF<_1Mctq3zb;>7zSJF|xJ@iEG{RrHWl^WehPe(iE{8q*c)4TK>5FbvM^=dMJXt2B zrkc6%i18toX5pEeS}VMd$nRl^yY+VKlmCM9-?bIqeZS2raNS~JYeWYGrMq1gE7;~0 z(ILio&|yaUJ~s{aWBdQ4s;jS_oaE@hedhG8h6e=|T@y+qCJ3l1zE}{%qxgp7LDGcq z$kU7MCJ81?-7vwY*NC;oVZrIHWeO`4HaKxO3oaEG&~nKTnAG%*DS~(2{nZ-x3=c`| z3O{I<_42tO<L=&+miZ?*8fBTb>}}ZQBzF4yqI*Ke-PDct74P3QSJ}G$eZRo-?j4ux gzuF3X)^C*W2>)W+KjG_H1_lNOPgg&ebxsLQ08OOPQ~&?~ literal 0 HcmV?d00001 diff --git a/doc/html/class_n___photo_conducteur-members.html b/doc/html/class_n___photo_conducteur-members.html new file mode 100644 index 0000000..308aa69 --- /dev/null +++ b/doc/html/class_n___photo_conducteur-members.html @@ -0,0 +1,70 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>N_PhotoConducteur Member List</h1>This is the complete list of members for <a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeLimit</b> (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura4">get_ElectroMeterGain</a>(void)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura0">N_PhotoConducteur</a>(std::string &comLink_device_name, short channel_address, short electroType)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a>(std::string &comLink_device_name, short channel_address, short electroType)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a>)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura2">range_up</a>(void)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string) (defined in <a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a>)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura1">~N_PhotoConducteur</a>(void)</td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">~Novelec_MCCE2</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_n___photo_conducteur.html b/doc/html/class_n___photo_conducteur.html new file mode 100644 index 0000000..8d7c3ef --- /dev/null +++ b/doc/html/class_n___photo_conducteur.html @@ -0,0 +1,272 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: N_PhotoConducteur Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>N_PhotoConducteur Class Reference<br> +<small> +[<a class="el" href="group___novelec.html">Novelec</a>]</small> +</h1>This class manage Novelec PhotoConductor types. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_n___photo_conducteur_8h-source.html">N_PhotoConducteur.h</a>></code> +<p> +<p>Inheritance diagram for N_PhotoConducteur: +<p><center><img src="class_n___photo_conducteur.png" usemap="#N_PhotoConducteur_map" border="0" alt=""></center> +<map name="N_PhotoConducteur_map"> +<area href="class_novelec___m_c_c_e2.html" alt="Novelec_MCCE2" shape="rect" coords="0,56,161,80"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_n___photo_conducteur-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura0" doxytag="N_PhotoConducteur::N_PhotoConducteur"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura0">N_PhotoConducteur</a> (std::string &comLink_device_name, short channel_address, short electroType)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura1" doxytag="N_PhotoConducteur::~N_PhotoConducteur"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura1">~N_PhotoConducteur</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura2" doxytag="N_PhotoConducteur::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura3" doxytag="N_PhotoConducteur::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura4" doxytag="N_PhotoConducteur::get_ElectroMeterGain"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura4">get_ElectroMeterGain</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_conducteura5" doxytag="N_PhotoConducteur::set_ElectroMeterGain"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a2" doxytag="N_PhotoConducteur::get_ElectroMeterPolarity"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a3" doxytag="N_PhotoConducteur::set_ElectroMeterPolarity"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a4" doxytag="N_PhotoConducteur::set_Zero_VonF_function"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions : mode for novelec types. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a5" doxytag="N_PhotoConducteur::set_Offset_ZeroV1_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a6" doxytag="N_PhotoConducteur::set_Leakage_ZeroV2_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a7" doxytag="N_PhotoConducteur::set_Test_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Commands to start/stop the data acquisition. <a href="#_novelec___m_c_c_e2a8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a9" doxytag="N_PhotoConducteur::mcce_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a10" doxytag="N_PhotoConducteur::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="N_PhotoConducteur::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="N_PhotoConducteur::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="N_PhotoConducteur::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="N_PhotoConducteur::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="N_PhotoConducteur::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="N_PhotoConducteur::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="N_PhotoConducteur::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="N_PhotoConducteur::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="N_PhotoConducteur::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="N_PhotoConducteur::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="N_PhotoConducteur::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="N_PhotoConducteur::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="N_PhotoConducteur::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="N_PhotoConducteur::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="N_PhotoConducteur::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="N_PhotoConducteur::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="N_PhotoConducteur::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="N_PhotoConducteur::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="N_PhotoConducteur::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="N_PhotoConducteur::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="N_PhotoConducteur::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="N_PhotoConducteur::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="N_PhotoConducteur::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="N_PhotoConducteur::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="N_PhotoConducteur::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="N_PhotoConducteur::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="N_PhotoConducteur::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="N_PhotoConducteur::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="N_PhotoConducteur::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="N_PhotoConducteur::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="N_PhotoConducteur::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p0" doxytag="N_PhotoConducteur::_rangeLimit"></a> +short </td><td class="memItemRight" valign="bottom"><b>_rangeLimit</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="N_PhotoConducteur::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="N_PhotoConducteur::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="N_PhotoConducteur::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="N_PhotoConducteur::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="N_PhotoConducteur::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage Novelec PhotoConductor types. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="N_PhotoConducteur::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_novelec___m_c_c_e2a8" doxytag="N_PhotoConducteur::mcce_on"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void Novelec_MCCE2::mcce_on </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Commands to start/stop the data acquisition. +<p> +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) +<p> +Reimplemented from <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_n___photo_conducteur_8h-source.html">N_PhotoConducteur.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:21 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_n___photo_conducteur.png b/doc/html/class_n___photo_conducteur.png new file mode 100644 index 0000000000000000000000000000000000000000..501bf9c0a4a9d16c69a73e191489cb1202ea54a6 GIT binary patch literal 692 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z|g_M%)r1<duLiT0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|{m{ba4!+nDcf<V%cE@j)t%2 z>$uGi2*1e{f3^PJe-2?sRo`1F`tP>hZBFaus#%oc>-1xu&isek=S9{1RFiDGE(8R! zG04VgY^pk8k&rK~bWu%k?Q>bBRd>Y%i`sZ1Zly*&S|$+fFVb;zTgiex;iq}Q{ccYV zoM!6ee`GIrQKH&k#6iRP&r#>Q%jBj-?7gu{H{$!mD1SSvwL+VZX_#4r@is`MZ=Kk( zMI!pVz-u3d<`cQQvxLgeB&Rv&INp#b-6QBJFjMTvzW$&0?DEz|745y{-nsGFES0Hq zyq$K+sa{_-p_5_rlU=d>Z#JIz>QlH#_`JaL`?39}o^E)0xkLW?b@jOQ)2FNNb6z+1 zg^Rk?#ZJGHN5Y+-=X>0LXnCho$3jd0R_vCI`vR{UF<n<;$iHLWQ7}Iuq~+_{`O{Kc z=Sn=CYxjNf6$Yz~q5e}!CuC#^ue}?x{Rs1Fw_8fzPVxvY3EJp?Ca6T|)ZTTMJC=N% zB=}hCh-{MF*Lk^*td96D5;<YAyu0>F|JkpKi=IrEHs2XGZ>L<PcUfopQv<<-zwZnC zDkA3m*mdM*`SqXv4F1Yhd($WRu!9}BNO<mxBlWH=Cnq`0+9Rg^kJXU%<*c5QoCy-H z$$Pz7Oudhu6<S>SU(`_5S*OB7(5ZX+c^k3SmjhJGtesjWC^auWCVg9C!{orF3ENU! zd&=amAGx9#xTbZ6oIoj~=dIl?4L4m_ZB&l=Ch@Qxot>%HZG9x6bI$2m7piQtlDyX? xORbtACzO6-Rz&@yWkTn>gyW}M{C)R}*)!kniq5IFSOx|L22WQ%mvv4FO#l%^H+ld7 literal 0 HcmV?d00001 diff --git a/doc/html/class_n___photo_voltaique-members.html b/doc/html/class_n___photo_voltaique-members.html new file mode 100644 index 0000000..4ef63cc --- /dev/null +++ b/doc/html/class_n___photo_voltaique-members.html @@ -0,0 +1,70 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>N_PhotoVoltaique Member List</h1>This is the complete list of members for <a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeLimit</b> (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea4">get_ElectroMeterFrequency</a>(void)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea0">N_PhotoVoltaique</a>(std::string comLink_device_name, short channel_address, short electroType)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a>(std::string &comLink_device_name, short channel_address, short electroType)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void) (defined in <a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a>)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea2">range_up</a>(void)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string) (defined in <a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a>)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea1">~N_PhotoVoltaique</a>(void)</td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">~Novelec_MCCE2</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_n___photo_voltaique.html b/doc/html/class_n___photo_voltaique.html new file mode 100644 index 0000000..3caf6bc --- /dev/null +++ b/doc/html/class_n___photo_voltaique.html @@ -0,0 +1,272 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: N_PhotoVoltaique Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>N_PhotoVoltaique Class Reference<br> +<small> +[<a class="el" href="group___novelec.html">Novelec</a>]</small> +</h1>This class manage Novelec PhotoVoltaique types. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_n___photo_voltaique_8h-source.html">N_PhotoVoltaique.h</a>></code> +<p> +<p>Inheritance diagram for N_PhotoVoltaique: +<p><center><img src="class_n___photo_voltaique.png" usemap="#N_PhotoVoltaique_map" border="0" alt=""></center> +<map name="N_PhotoVoltaique_map"> +<area href="class_novelec___m_c_c_e2.html" alt="Novelec_MCCE2" shape="rect" coords="0,56,161,80"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="0,0,161,24"> +</map> +<a href="class_n___photo_voltaique-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea0" doxytag="N_PhotoVoltaique::N_PhotoVoltaique"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea0">N_PhotoVoltaique</a> (std::string comLink_device_name, short channel_address, short electroType)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea1" doxytag="N_PhotoVoltaique::~N_PhotoVoltaique"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea1">~N_PhotoVoltaique</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea2" doxytag="N_PhotoVoltaique::range_up"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea2">range_up</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">device dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea3" doxytag="N_PhotoVoltaique::range_down"></a> +void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea4" doxytag="N_PhotoVoltaique::get_ElectroMeterFrequency"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea4">get_ElectroMeterFrequency</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_n___photo_voltaiquea5" doxytag="N_PhotoVoltaique::set_ElectroMeterFrequency"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a2" doxytag="N_PhotoVoltaique::get_ElectroMeterPolarity"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a3" doxytag="N_PhotoVoltaique::set_ElectroMeterPolarity"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a4" doxytag="N_PhotoVoltaique::set_Zero_VonF_function"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions : mode for novelec types. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a5" doxytag="N_PhotoVoltaique::set_Offset_ZeroV1_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a6" doxytag="N_PhotoVoltaique::set_Leakage_ZeroV2_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a7" doxytag="N_PhotoVoltaique::set_Test_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Commands to start/stop the data acquisition. <a href="#_novelec___m_c_c_e2a8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a9" doxytag="N_PhotoVoltaique::mcce_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a10" doxytag="N_PhotoVoltaique::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="N_PhotoVoltaique::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="N_PhotoVoltaique::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="N_PhotoVoltaique::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="N_PhotoVoltaique::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="N_PhotoVoltaique::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="N_PhotoVoltaique::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="N_PhotoVoltaique::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="N_PhotoVoltaique::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="N_PhotoVoltaique::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="N_PhotoVoltaique::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="N_PhotoVoltaique::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="N_PhotoVoltaique::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="N_PhotoVoltaique::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="N_PhotoVoltaique::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="N_PhotoVoltaique::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="N_PhotoVoltaique::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="N_PhotoVoltaique::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="N_PhotoVoltaique::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="N_PhotoVoltaique::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="N_PhotoVoltaique::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="N_PhotoVoltaique::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="N_PhotoVoltaique::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="N_PhotoVoltaique::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="N_PhotoVoltaique::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="N_PhotoVoltaique::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="N_PhotoVoltaique::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="N_PhotoVoltaique::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="N_PhotoVoltaique::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="N_PhotoVoltaique::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="N_PhotoVoltaique::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="N_PhotoVoltaique::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p0" doxytag="N_PhotoVoltaique::_rangeLimit"></a> +short </td><td class="memItemRight" valign="bottom"><b>_rangeLimit</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="N_PhotoVoltaique::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="N_PhotoVoltaique::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="N_PhotoVoltaique::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="N_PhotoVoltaique::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="N_PhotoVoltaique::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage Novelec PhotoVoltaique types. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="N_PhotoVoltaique::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_novelec___m_c_c_e2a8" doxytag="N_PhotoVoltaique::mcce_on"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void Novelec_MCCE2::mcce_on </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual, inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Commands to start/stop the data acquisition. +<p> +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) +<p> +Reimplemented from <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_n___photo_voltaique_8h-source.html">N_PhotoVoltaique.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_n___photo_voltaique.png b/doc/html/class_n___photo_voltaique.png new file mode 100644 index 0000000000000000000000000000000000000000..31693f7bea218f638adc6646e9cff4295f49dfc7 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0y~yU|7h&z|g_M%)r1<duLiT0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|{m~ba4!+nDcgqchO-59*4KS z*FDSy)L(27Kc)5E-svJckKxLbGyEp?rDS~;<X5!Zy7p=HrW(EY!gUsfT7pYe7Up&+ zF+`Lb3*@$aW1d#!s`5%`<GjlDj%C-Coq7ZqgKc%aV?vYiUNR(I^5vaSw<w}yNs5y6 zJTs4&j{iH3=jiClGB~|`BwQ{kt7#gTwlVD9hMyCQy!oTAbzIB|k-byK+mN>WMTWzs z-kqU>sj3aVC%#r)Uvk+nPdofbj!W+1ujxvfN<q##bv@tz+_=5<Sk-g)t$|6tQeJ(k z3-9$yWlLXZWmtU7>VCh?;?A!=g^PsG3p}@vb$@EK=BLS{<6pmaUVr`cY3F-^Y;~)P zoqi>Ygy;TndGyEpQh5b`xe|BYOz~{9(kc2`p2`J!Odry!+Bv>=W_ASZ`?b<nTjs`! z`(HN3n6L+QSXL*kaZH*z`@~n95^tFsra}D?VyinA%<M`|y0Sz#P^WUPkIL!kIcD#C zY!r^^-oLE=&i9RwsbiX9?w<^I+1HATj!oA#-)I(BYQM>wuQNS$2FHf~m2;H&x`pGX zTl{}%^`G}arpx*7K9gQLAl$jW!yxjIklOpBo%Jp;OP2^Ygca?MX+9^d-sZ%yUqF6i z;o6R#c2*~=&a_?YE=_!;Fw5o>hv5d-s#C{Lx%w$wpL<f)zU@?h>>|yzhmV-vz9F>p zwp8XupC|EmD<9puQSs*Zm;H;quUz^ic&u!%iCIyF>a|Dq-*k^#u`u!-t%|u;S3Z5l sqdn2TWD0$r3BT_UP8VEmA6w5L(QI8A*kRSlz`(%Z>FVdQ&MBb@02<sj3jhEB literal 0 HcmV?d00001 diff --git a/doc/html/class_novelec___m_c_c_e2-members.html b/doc/html/class_novelec___m_c_c_e2-members.html new file mode 100644 index 0000000..1fdf492 --- /dev/null +++ b/doc/html/class_novelec___m_c_c_e2-members.html @@ -0,0 +1,68 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Novelec_MCCE2 Member List</h1>This is the complete list of members for <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_device_proxy_name</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_electrometerProtocol</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeLimit</b> (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeStr</b> (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a>(std::string comLink_device_name)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterFrequency</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterGain</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_ElectroMeterRange</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>mcce_off</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a>(std::string &comLink_device_name, short channel_address, short electroType)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>range_down</b>(void)=0 (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">range_up</a>(void)=0</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [pure virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterFrequency</b>(std::string freq) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterGain</b>(std::string gain) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_ElectroMeterPolarity</b>(std::string) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Leakage_ZeroV2_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Offset_ZeroV1_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_Test_function</b>(void) (defined in <a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a>)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">~AbstractElectrometerClass</a>(void)</td><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">~Novelec_MCCE2</a>(void)</td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_novelec___m_c_c_e2.html b/doc/html/class_novelec___m_c_c_e2.html new file mode 100644 index 0000000..bfdaf17 --- /dev/null +++ b/doc/html/class_novelec___m_c_c_e2.html @@ -0,0 +1,272 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Novelec_MCCE2 Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Novelec_MCCE2 Class Reference<br> +<small> +[<a class="el" href="group___novelec.html">Novelec</a>]</small> +</h1>This class manage Novelec MCCE-2 type. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_novelec___m_c_c_e2_8h-source.html">Novelec_MCCE2.h</a>></code> +<p> +<p>Inheritance diagram for Novelec_MCCE2: +<p><center><img src="class_novelec___m_c_c_e2.png" usemap="#Novelec_MCCE2_map" border="0" alt=""></center> +<map name="Novelec_MCCE2_map"> +<area href="class_abstract_electrometer_class.html" alt="AbstractElectrometerClass" shape="rect" coords="85,0,246,24"> +<area href="class_n___photo_conducteur.html" alt="N_PhotoConducteur" shape="rect" coords="0,112,161,136"> +<area href="class_n___photo_voltaique.html" alt="N_PhotoVoltaique" shape="rect" coords="171,112,332,136"> +</map> +<a href="class_novelec___m_c_c_e2-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a0" doxytag="Novelec_MCCE2::Novelec_MCCE2"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a> (std::string &comLink_device_name, short channel_address, short electroType)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a1" doxytag="Novelec_MCCE2::~Novelec_MCCE2"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">~Novelec_MCCE2</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a2" doxytag="Novelec_MCCE2::get_ElectroMeterPolarity"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">get_ElectroMeterPolarity</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Novelec getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a3" doxytag="Novelec_MCCE2::set_ElectroMeterPolarity"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterPolarity</b> (std::string)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a4" doxytag="Novelec_MCCE2::set_Zero_VonF_function"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">set_Zero_VonF_function</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions : mode for novelec types. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a5" doxytag="Novelec_MCCE2::set_Offset_ZeroV1_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Offset_ZeroV1_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a6" doxytag="Novelec_MCCE2::set_Leakage_ZeroV2_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Leakage_ZeroV2_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a7" doxytag="Novelec_MCCE2::set_Test_function"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_Test_function</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">mcce_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Commands to start/stop the data acquisition. <a href="#_novelec___m_c_c_e2a8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a9" doxytag="Novelec_MCCE2::mcce_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>mcce_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a10" doxytag="Novelec_MCCE2::electrometer_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">electrometer_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a11" doxytag="Novelec_MCCE2::range_up"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">range_up</a> (void)=0</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer common functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a12" doxytag="Novelec_MCCE2::range_down"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>range_down</b> (void)=0</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a13" doxytag="Novelec_MCCE2::reset"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a14" doxytag="Novelec_MCCE2::local"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a15" doxytag="Novelec_MCCE2::remote"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a16" doxytag="Novelec_MCCE2::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a17" doxytag="Novelec_MCCE2::autoRange_on"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">autoRange_on</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Keithley Electrometer methods. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a18" doxytag="Novelec_MCCE2::zero_check_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a19" doxytag="Novelec_MCCE2::zero_check_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a20" doxytag="Novelec_MCCE2::zero_correct_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a21" doxytag="Novelec_MCCE2::zero_correct_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a22" doxytag="Novelec_MCCE2::auto_zero_on"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a23" doxytag="Novelec_MCCE2::auto_zero_off"></a> +void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a24" doxytag="Novelec_MCCE2::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a25" doxytag="Novelec_MCCE2::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a26" doxytag="Novelec_MCCE2::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a27" doxytag="Novelec_MCCE2::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a28" doxytag="Novelec_MCCE2::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Following functions are only supported for SCPI protocol. <a href="#_novelec___m_c_c_e2a29"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a30" doxytag="Novelec_MCCE2::clear_registers"></a> +void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a31" doxytag="Novelec_MCCE2::averageStateON"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a32" doxytag="Novelec_MCCE2::averageStateOFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a33" doxytag="Novelec_MCCE2::set_knplc"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a34" doxytag="Novelec_MCCE2::set_triggercount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a35" doxytag="Novelec_MCCE2::set_averagecount"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a36" doxytag="Novelec_MCCE2::set_averagecontrol"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a37" doxytag="Novelec_MCCE2::get_knplc"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a38" doxytag="Novelec_MCCE2::get_triggercount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a39" doxytag="Novelec_MCCE2::get_averagecount"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a40" doxytag="Novelec_MCCE2::get_averagecontrol"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a41" doxytag="Novelec_MCCE2::get_ElectroMeterFrequency"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterFrequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a42" doxytag="Novelec_MCCE2::get_ElectroMeterGain"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterGain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a43" doxytag="Novelec_MCCE2::set_ElectroMeterFrequency"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterFrequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a44" doxytag="Novelec_MCCE2::set_ElectroMeterGain"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_ElectroMeterGain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a45" doxytag="Novelec_MCCE2::get_ElectroMeterMode"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">get_ElectroMeterMode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Common getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2a46" doxytag="Novelec_MCCE2::get_ElectroMeterRange"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_ElectroMeterRange</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p0" doxytag="Novelec_MCCE2::_rangeLimit"></a> +short </td><td class="memItemRight" valign="bottom"><b>_rangeLimit</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p1" doxytag="Novelec_MCCE2::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p2" doxytag="Novelec_MCCE2::_rangeStr"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_rangeStr</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p3" doxytag="Novelec_MCCE2::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p4" doxytag="Novelec_MCCE2::_electrometerProtocol"></a> +<a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>_electrometerProtocol</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec___m_c_c_e2p5" doxytag="Novelec_MCCE2::_device_proxy_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_device_proxy_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage Novelec MCCE-2 type. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_novelec___m_c_c_e2a29" doxytag="Novelec_MCCE2::init_keithley"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void AbstractElectrometerClass::init_keithley </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inherited]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Following functions are only supported for SCPI protocol. +<p> + </td> + </tr> +</table> +<a class="anchor" name="_novelec___m_c_c_e2a8" doxytag="Novelec_MCCE2::mcce_on"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void Novelec_MCCE2::mcce_on </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Commands to start/stop the data acquisition. +<p> +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) +<p> +Reimplemented from <a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_novelec___m_c_c_e2_8h-source.html">Novelec_MCCE2.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_novelec___m_c_c_e2.png b/doc/html/class_novelec___m_c_c_e2.png new file mode 100644 index 0000000000000000000000000000000000000000..b424b27c238f4a082fefa0b4804e3b68bf5c44f6 GIT binary patch literal 995 zcmeAS@N?(olHy`uVBq!ia0y~yVDw>NVCZ0BW?*2b^E+R~z`!68;1lBd|Nnmm28RFt z56qvRFoA)A0gMkEI8c4){}ToV2F8*gzhDN3XE)Lq7?>+PT^vIy=DeMgn|IrQr!80H zMSigPf~v+u=CXNA%til|eUvmK{{^hlnIc<W^Eq+$ws_lxXSQfc@i}k4SEsqU_J#YG zXQf{gXSDs4Pg1(O_>Rp2XNLC5Y|qJ$89rC#`#di*^q#||cB-&FF{z@3rS0p7C(d$> zhL^?OJMbJx^qeSA^x3fFeP`!Ku}MPj6LrMH4N{GBPx7$~6$za>9<at*t=Fyjw9Tol zFH^enos?(z8T{mVWAoCZRKVDaS$T&^5r>!T)EOdN{*uOX3J)x?J}>;baM{PtOMd5? zS<W+*^>=yhseZ<0{?_c`@=H4}_3t#}oUApsOX*t09M^qjJ1?cOUp}rHzH3kZCCR($ zvB7PbGukp|+?V?-CEpPJweH=AwYxZ;z5Sfiq!!Ek`EQxE^g>thgL}L<C6_JZ2@Y;s zsd@Oyl*Fu42BxVqW*PbTA_-qPIYU`vweYj<-=&*O&xC(_ol-6EYzNQU>xY%aK66|a zSY35T<Xhm3VA*1>9z!GEj|(=qW`F-XWy?Vs=ZqecOhF;G%RQD$Crf<rIWu9&o(ZKl zP1hNihqTAezRZ_a$I7bq_eiArXA2)E&g~H@jT7cw(w-4^^N!Qp220);&C)ZzM*KC- zOqx&6Zq?lGx^#Z~$*Z#AVN=gdc=}uIfalbIS#|w4`_}IFj53SAxqkB6#C@CM)o;hm zxc-CTj@Iwh?aS7E<hK()xaWlZj~JHETB<2Xo?D)DZ<mMc=is}AFDCx*FFk(HpcK{b zEA!iL{<?eCzW4awj%91_%ly4-_3K0MPwmY;D|3D&&ge4o@zph)Tf+J1owlY+<Ie?A z&I_w&m_8PH&gb$XJ1WV^PFg%K!sst|+S!WE$m?3O*A;l5?G0jjWOQsvVZgnod$b$B zZ;muv_RTcKM|O&h)$wO%XH2+#G9hc<;f<TPgI<+>;YiDz^IPm`nu*_;_en{WoVkY2 z@0nlPuD*5ePod38F$v3#S?bO(s=p-p!rP}I>`a&8_J5Pqtc=wTy!!LpVDI(AC8=iD zqmm!3lm6Ajze72wiuFd@&ipgqpKk5so&3(*JTH&s&MA$lrUACkVqe@c&^|VieZ_wX zrb(M;+&_Hf!esl_Z})q)&tRB+{nLb1GjfluopJuvf*d>T-@Kl|Z7Wy$%~&h%82$AE e`-8N<tS(G0;Z^(7ZZj}2FnGH9xvX<aXaWGGhtz}s literal 0 HcmV?d00001 diff --git a/doc/html/class_novelec_protocol-members.html b/doc/html/class_novelec_protocol-members.html new file mode 100644 index 0000000..51ccff3 --- /dev/null +++ b/doc/html/class_novelec_protocol-members.html @@ -0,0 +1,71 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>NovelecProtocol Member List</h1>This is the complete list of members for <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_link</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_devAdd</b> (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_function</b> (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_mode</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_novType</b> (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_range</b> (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>_rangeParameterNum</b> (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>auto_zero_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>autoRange_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateOFF</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>averageStateON</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>check_and_extract_data</b>(std::string resp_to_check) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [protected]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>clear_registers</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecontrol</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_averagecount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_electrotype</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_errors</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_frequency</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_gain</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_knplc</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola15">get_mode</a>(void)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_polarity</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_range</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola14">get_raw_status</a>(void)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>get_triggercount</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola7">get_value</a>(void)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a>(void)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>local</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola0">NovelecProtocol</a>(std::string &gpib_device_name, short channel_address, short electroTypeNumber)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td></td></tr> + <tr bgcolor="#f0f0f0"><td><b>remote</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>reset</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecontrol</b>(std::string averctrl) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_averagecount</b>(std::string avercounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_frequency</b>(std::string freq) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_gain</b>(std::string gain) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_knplc</b>(std::string nPLC) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_polarity</b>(std::string pola) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola2">set_range</a>(std::string value)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>set_triggercount</b>(std::string trigcounts) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setAmperMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setCoulombMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setOhmMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>setVoltMeterMode</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>switch_MCCE2_OFF</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola8">switch_MCCE2_ON</a>(void)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_leakage_zeroV2_func</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_offset_zeroV1_func</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_test_func</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>unable_zeroVF_func</b>(void) (defined in <a class="el" href="class_novelec_protocol.html">NovelecProtocol</a>)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_check_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_off</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr bgcolor="#f0f0f0"><td><b>zero_correct_on</b>(void) (defined in <a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a>)</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">~ElectrometerProtocol</a>()</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_novelec_protocol.html#_novelec_protocola1">~NovelecProtocol</a>(void)</td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_novelec_protocol.html b/doc/html/class_novelec_protocol.html new file mode 100644 index 0000000..2631b70 --- /dev/null +++ b/doc/html/class_novelec_protocol.html @@ -0,0 +1,216 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: NovelecProtocol Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>NovelecProtocol Class Reference<br> +<small> +[<a class="el" href="group___standard.html">Commands Protocol</a>]</small> +</h1>This class manage the Novelec Commands Protocol. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_novelec_protocol_8h-source.html">NovelecProtocol.h</a>></code> +<p> +<p>Inheritance diagram for NovelecProtocol: +<p><center><img src="class_novelec_protocol.png" usemap="#NovelecProtocol_map" border="0" alt=""></center> +<map name="NovelecProtocol_map"> +<area href="class_electrometer_protocol.html" alt="ElectrometerProtocol" shape="rect" coords="0,0,130,24"> +</map> +<a href="class_novelec_protocol-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola0" doxytag="NovelecProtocol::NovelecProtocol"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola0">NovelecProtocol</a> (std::string &gpib_device_name, short channel_address, short electroTypeNumber)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola1" doxytag="NovelecProtocol::~NovelecProtocol"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola1">~NovelecProtocol</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola2" doxytag="NovelecProtocol::set_range"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola2">set_range</a> (std::string value)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Functions. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola3" doxytag="NovelecProtocol::get_range"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_range</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola4" doxytag="NovelecProtocol::reset"></a> +void </td><td class="memItemRight" valign="bottom"><b>reset</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola5" doxytag="NovelecProtocol::local"></a> +void </td><td class="memItemRight" valign="bottom"><b>local</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola6" doxytag="NovelecProtocol::remote"></a> +void </td><td class="memItemRight" valign="bottom"><b>remote</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola7" doxytag="NovelecProtocol::get_value"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola7">get_value</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : cmd to get electrometer data. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola8" doxytag="NovelecProtocol::switch_MCCE2_ON"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola8">switch_MCCE2_ON</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode : Novelec SUPPORTS these commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola9" doxytag="NovelecProtocol::switch_MCCE2_OFF"></a> +void </td><td class="memItemRight" valign="bottom"><b>switch_MCCE2_OFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola10" doxytag="NovelecProtocol::unable_zeroVF_func"></a> +void </td><td class="memItemRight" valign="bottom"><b>unable_zeroVF_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola11" doxytag="NovelecProtocol::unable_offset_zeroV1_func"></a> +void </td><td class="memItemRight" valign="bottom"><b>unable_offset_zeroV1_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola12" doxytag="NovelecProtocol::unable_leakage_zeroV2_func"></a> +void </td><td class="memItemRight" valign="bottom"><b>unable_leakage_zeroV2_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola13" doxytag="NovelecProtocol::unable_test_func"></a> +void </td><td class="memItemRight" valign="bottom"><b>unable_test_func</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola14" doxytag="NovelecProtocol::get_raw_status"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola14">get_raw_status</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get Raw Electrometer Status. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola15" doxytag="NovelecProtocol::get_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html#_novelec_protocola15">get_mode</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer Mode : getters and setters. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola16" doxytag="NovelecProtocol::get_polarity"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_polarity</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola17" doxytag="NovelecProtocol::get_frequency"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_frequency</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola18" doxytag="NovelecProtocol::get_gain"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_gain</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola19" doxytag="NovelecProtocol::get_errors"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_errors</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola20" doxytag="NovelecProtocol::get_electrotype"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>get_electrotype</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola21" doxytag="NovelecProtocol::set_polarity"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_polarity</b> (std::string pola)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola22" doxytag="NovelecProtocol::set_frequency"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_frequency</b> (std::string freq)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola23" doxytag="NovelecProtocol::set_gain"></a> +void </td><td class="memItemRight" valign="bottom"><b>set_gain</b> (std::string gain)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola24" doxytag="NovelecProtocol::init_keithley"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">init_keithley</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Electrometer : Keithley protocol dependent commands. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola25" doxytag="NovelecProtocol::set_knplc"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_knplc</b> (std::string nPLC)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola26" doxytag="NovelecProtocol::set_triggercount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_triggercount</b> (std::string trigcounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola27" doxytag="NovelecProtocol::set_averagecount"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecount</b> (std::string avercounts)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola28" doxytag="NovelecProtocol::set_averagecontrol"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>set_averagecontrol</b> (std::string averctrl)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola29" doxytag="NovelecProtocol::get_knplc"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_knplc</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola30" doxytag="NovelecProtocol::get_triggercount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_triggercount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola31" doxytag="NovelecProtocol::get_averagecount"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecount</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola32" doxytag="NovelecProtocol::get_averagecontrol"></a> +virtual std::string </td><td class="memItemRight" valign="bottom"><b>get_averagecontrol</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola33" doxytag="NovelecProtocol::clear_registers"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>clear_registers</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola34" doxytag="NovelecProtocol::averageStateON"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateON</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola35" doxytag="NovelecProtocol::averageStateOFF"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>averageStateOFF</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola36" doxytag="NovelecProtocol::setAmperMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setAmperMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola37" doxytag="NovelecProtocol::setVoltMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setVoltMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola38" doxytag="NovelecProtocol::setOhmMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setOhmMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola39" doxytag="NovelecProtocol::setCoulombMeterMode"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>setCoulombMeterMode</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola40" doxytag="NovelecProtocol::autoRange_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola41" doxytag="NovelecProtocol::autoRange_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>autoRange_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola42" doxytag="NovelecProtocol::zero_check_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_check_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola43" doxytag="NovelecProtocol::zero_check_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_check_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola44" doxytag="NovelecProtocol::zero_correct_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_correct_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola45" doxytag="NovelecProtocol::zero_correct_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>zero_correct_off</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola46" doxytag="NovelecProtocol::auto_zero_on"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>auto_zero_on</b> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocola47" doxytag="NovelecProtocol::auto_zero_off"></a> +virtual void </td><td class="memItemRight" valign="bottom"><b>auto_zero_off</b> (void)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolb0" doxytag="NovelecProtocol::check_and_extract_data"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>check_and_extract_data</b> (std::string resp_to_check)</td></tr> + +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp0" doxytag="NovelecProtocol::_devAdd"></a> +short </td><td class="memItemRight" valign="bottom"><b>_devAdd</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp1" doxytag="NovelecProtocol::_novType"></a> +short </td><td class="memItemRight" valign="bottom"><b>_novType</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp2" doxytag="NovelecProtocol::_rangeParameterNum"></a> +short </td><td class="memItemRight" valign="bottom"><b>_rangeParameterNum</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp3" doxytag="NovelecProtocol::_function"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_function</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp4" doxytag="NovelecProtocol::_range"></a> +short </td><td class="memItemRight" valign="bottom"><b>_range</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp5" doxytag="NovelecProtocol::_mode"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_novelec_protocolp6" doxytag="NovelecProtocol::_communication_link"></a> +<a class="el" href="class_communication_link.html">CommunicationLink</a> * </td><td class="memItemRight" valign="bottom"><b>_communication_link</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage the Novelec Commands Protocol. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_novelec_protocol_8h-source.html">NovelecProtocol.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_novelec_protocol.png b/doc/html/class_novelec_protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..65ca763312dd146b5d4b8cff8318a64b0d074a18 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0y~yU}$1sU<hDgW?*1YzrEoV0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|_WOba4!+nDcguW8Yx~9@oUn zrr&rI@(hX>t}FVleC39KkC&Hq#+ATSZKY?Q|1!CC{f^}QKKI(A(;U45j0Rz>)y`K> z8W|+0YCM-@3@vl(aEN!3GUPXWrX<k1#7CibdBf2fg$p*HxGh{Ygv2_<jtXpz{N8x< z2y4(vjuW*Vo`ON{4{WEDWifd(C@s}wRDJnf;n(GsszVnw-*GhCP5IVzr_n;Ood1^G zk%D@0@5Gk#N^AbVO)s2j^>5yW*!zAva&F(|{QpR=CxJy-;vk3H3C7hA4?U9GE7-?! zzCTKnF+lfM@~SmU6MZs1O?i;{?BG`M3v5in8N5tqGk2|4XNkHMU+uRzWp477b^`?u z`HJ}JmzD>Mr*bQXS4uuPvR=4p^}XvHd~;0RU1(>1=qT^?zxdMK)(bClChz`{D)DeL e$Ladt((6i}uuizx`j3Hufx*+&&t;ucLK6Vlq_fcg literal 0 HcmV?d00001 diff --git a/doc/html/class_tango_gpib_link-members.html b/doc/html/class_tango_gpib_link-members.html new file mode 100644 index 0000000..b30f3ef --- /dev/null +++ b/doc/html/class_tango_gpib_link-members.html @@ -0,0 +1,21 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>TangoGpibLink Member List</h1>This is the complete list of members for <a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_Device_name</b> (defined in <a class="el" href="class_communication_link.html">CommunicationLink</a>)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a>(std::string &communication_link_name)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka3">read</a>(void)</td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka0">TangoGpibLink</a>(std::string &gpib_device_name)</td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka2">write</a>(std::string cmd)</td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka4">write_read</a>(std::string cmd)</td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka1">~CommunicationLink</a>(void)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka1">~TangoGpibLink</a>(void)</td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_tango_gpib_link.html b/doc/html/class_tango_gpib_link.html new file mode 100644 index 0000000..39cae7d --- /dev/null +++ b/doc/html/class_tango_gpib_link.html @@ -0,0 +1,198 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: TangoGpibLink Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>TangoGpibLink Class Reference<br> +<small> +[<a class="el" href="group___communication.html">Management</a>]</small> +</h1>This class manage the GPIB communication bus. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_tango_gpib_link_8h-source.html">TangoGpibLink.h</a>></code> +<p> +<p>Inheritance diagram for TangoGpibLink: +<p><center><img src="class_tango_gpib_link.png" usemap="#TangoGpibLink_map" border="0" alt=""></center> +<map name="TangoGpibLink_map"> +<area href="class_communication_link.html" alt="CommunicationLink" shape="rect" coords="0,0,120,24"> +</map> +<a href="class_tango_gpib_link-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka0">TangoGpibLink</a> (std::string &gpib_device_name)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_tango_gpib_linka1" doxytag="TangoGpibLink::~TangoGpibLink"></a> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka1">~TangoGpibLink</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka2">write</a> (std::string cmd) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Send command (data) as string to hardware. <a href="#_tango_gpib_linka2"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka3">read</a> (void) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets hardware response as string. <a href="#_tango_gpib_linka3"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka4">write_read</a> (std::string cmd) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs a write read operation as string. <a href="#_tango_gpib_linka4"></a><br></td></tr> +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_tango_serial_linkp0" doxytag="TangoGpibLink::_communication_Device_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_communication_Device_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage the GPIB communication bus. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="_tango_gpib_linka0" doxytag="TangoGpibLink::TangoGpibLink"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">TangoGpibLink::TangoGpibLink </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>gpib_device_name</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_tango_gpib_linka3" doxytag="TangoGpibLink::read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string TangoGpibLink::read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Gets hardware response as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka3">CommunicationLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_tango_gpib_linka2" doxytag="TangoGpibLink::write"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void TangoGpibLink::write </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> <em>cmd</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Send command (data) as string to hardware. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka2">CommunicationLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_tango_gpib_linka4" doxytag="TangoGpibLink::write_read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string TangoGpibLink::write_read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> <em>cmd</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Performs a write read operation as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka4">CommunicationLink</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_tango_gpib_link_8h-source.html">TangoGpibLink.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:22 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_tango_gpib_link.png b/doc/html/class_tango_gpib_link.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b4d8dc486c4486b7c54a79d4bcb21a34157a55 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0y~yV5neVU<hDgW?*1Y*t%vH0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|{s{ba4!+nDcguW6@y+9@mS@ zviIdFR5gEdiv0P{U4u!|VB_o~^RCP_^kTXZ@89vh=kE8$g80Ppnm94B53@8rH@!af z&Z~9jv$bsZ*J{nlR_t(@_}J`M;)@o615784p3j|pL|2CO;SAQ37F#0suI#Lwsy12W zOTk~M<2#Qo^D*e0-`x0j!<zRoxBT+-6VDjrA2_<<%N*8)2QHeP_RHJ6b8Xy0F{{7t zEg$S};@?|U-+!C=Z|;ZVC1N(d+b2Kxd`Ip>1G~)w#{bq5?1z5-&Aqtw;fuI<jbAGt zdb0bLncaEsvyQuHnbe*1QiFqnmG1X;-)QrydU<)mq>DnbYdSZcG)Y+*qb3oRu{(Eh zj?=ugL1KTzd?F6L6TPwf_=mLH##7JxR6RO6bMn4aiAJNzclzw(@37TmX0qljUb#>9 r^#*$;;ai*caM(*;Z|UDtRnKsg?Vj#JmTMXe3=9mOu6{1-oD!M<EF;M{ literal 0 HcmV?d00001 diff --git a/doc/html/class_tango_serial_link-members.html b/doc/html/class_tango_serial_link-members.html new file mode 100644 index 0000000..88c5aac --- /dev/null +++ b/doc/html/class_tango_serial_link-members.html @@ -0,0 +1,21 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>TangoSerialLink Member List</h1>This is the complete list of members for <a class="el" href="class_tango_serial_link.html">TangoSerialLink</a>, including all inherited members.<p><table> + <tr bgcolor="#f0f0f0"><td><b>_communication_Device_name</b> (defined in <a class="el" href="class_communication_link.html">CommunicationLink</a>)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a>(std::string &communication_link_name)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_serial_link.html#_tango_serial_linka3">read</a>(void)</td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_serial_link.html#_tango_serial_linka0">TangoSerialLink</a>(std::string &serial_device_name)</td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_serial_link.html#_tango_serial_linka2">write</a>(std::string cmd)</td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_serial_link.html#_tango_serial_linka4">write_read</a>(std::string cmd)</td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_communication_link.html#_communication_linka1">~CommunicationLink</a>(void)</td><td><a class="el" href="class_communication_link.html">CommunicationLink</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_tango_serial_link.html#_tango_serial_linka1">~TangoSerialLink</a>(void)</td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_tango_serial_link.html b/doc/html/class_tango_serial_link.html new file mode 100644 index 0000000..4ce6a5b --- /dev/null +++ b/doc/html/class_tango_serial_link.html @@ -0,0 +1,201 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: TangoSerialLink Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>TangoSerialLink Class Reference<br> +<small> +[<a class="el" href="group___communication.html">Management</a>]</small> +</h1>This class manage the SERIAL communication bus. +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_tango_serial_link_8h-source.html">TangoSerialLink.h</a>></code> +<p> +<p>Inheritance diagram for TangoSerialLink: +<p><center><img src="class_tango_serial_link.png" usemap="#TangoSerialLink_map" border="0" alt=""></center> +<map name="TangoSerialLink_map"> +<area href="class_communication_link.html" alt="CommunicationLink" shape="rect" coords="0,0,120,24"> +</map> +<a href="class_tango_serial_link-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_tango_serial_linka0" doxytag="TangoSerialLink::TangoSerialLink"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html#_tango_serial_linka0">TangoSerialLink</a> (std::string &serial_device_name)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialization. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html#_tango_serial_linka1">~TangoSerialLink</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Release resources. <a href="#_tango_serial_linka1"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html#_tango_serial_linka2">write</a> (std::string cmd) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Send command (data) as string to hardware. <a href="#_tango_serial_linka2"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html#_tango_serial_linka3">read</a> (void) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets hardware response as string. <a href="#_tango_serial_linka3"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html#_tango_serial_linka4">write_read</a> (std::string cmd) throw (Tango::DevFailed)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs a write read operation as string. <a href="#_tango_serial_linka4"></a><br></td></tr> +<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="_tango_serial_linkp0" doxytag="TangoSerialLink::_communication_Device_name"></a> +std::string </td><td class="memItemRight" valign="bottom"><b>_communication_Device_name</b></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class manage the SERIAL communication bus. +<p> +<dl compact><dt><b>Author:</b></dt><dd>Xavier Elattaoui </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>11-2006 </dd></dl> + +<p> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="_tango_serial_linka1" doxytag="TangoSerialLink::~TangoSerialLink"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual TangoSerialLink::~<a class="el" href="class_tango_serial_link.html">TangoSerialLink</a> </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Release resources. +<p> + </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="_tango_serial_linka3" doxytag="TangoSerialLink::read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string TangoSerialLink::read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Gets hardware response as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka3">CommunicationLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_tango_serial_linka2" doxytag="TangoSerialLink::write"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void TangoSerialLink::write </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> <em>cmd</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Send command (data) as string to hardware. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka2">CommunicationLink</a>. </td> + </tr> +</table> +<a class="anchor" name="_tango_serial_linka4" doxytag="TangoSerialLink::write_read"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string TangoSerialLink::write_read </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string </td> + <td class="mdname1" valign="top" nowrap> <em>cmd</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> throw (Tango::DevFailed)<code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Performs a write read operation as string. +<p> +<dl compact><dt><b>Exceptions:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>Tango::DevFailed</em> </td><td></td></tr> + </table> +</dl> + +<p> +Implements <a class="el" href="class_communication_link.html#_communication_linka4">CommunicationLink</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_tango_serial_link_8h-source.html">TangoSerialLink.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/class_tango_serial_link.png b/doc/html/class_tango_serial_link.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9f110e7305d15bcac84b597479a5e969a10943 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0y~yV5neVU<hDgW?*1Y*t%vH0|SFZfKQ0)|Ns9P7#RNl zKQMoO!UP5e1~5Kw;6U}E|4$eg7#K@}{DK)Ap4~`eU|{t1ba4!+nDcguV^OmKkLz0B z>%Vq2-j&`WeyZ!Y{K8E+IX*sz4=gER>sB%QRW<F|<b$>IIlhbX9e<vi$p5ml?w-fp zr)$=4xUwtn#N~B|Uh1&C4;9H3)_05%U^;SGJu)bLati0_2d=9h2=`g!_#8X5WwWZc z-I|BLPR>~(D1N*}=cJv41>f(w=SJIh-aRxU@n%DJ;<q`rPK{T$#^mOCmswY}R$X{n zf1dHbXw9puzpHKHUgS61FI)W}vnqxq{`t2CcAE!`{6Fp=v=Hp;?{_V4ySn?TVTjN+ zqp5d`)1&5}&h1*sWjo_R$CSjfTT|EWzV<BowanKdALiqGw7xACk3M$rW^UW!bGA30 zZrb8fwNGn}bxzOS0~`4`+2Rh}DS4(-WW4RR)b1&|3GWWX9_E-b$Ef<`zMCdn=QJ4I xl**I;xbDTl8aA~OuJ4C-Kc4qtX83!4nREBe3=_ZCGB7YOc)I$ztaD0e0swLF&I$kk literal 0 HcmV?d00001 diff --git a/doc/html/classelectrometer_1_1_electrometer_exception-members.html b/doc/html/classelectrometer_1_1_electrometer_exception-members.html new file mode 100644 index 0000000..be95307 --- /dev/null +++ b/doc/html/classelectrometer_1_1_electrometer_exception-members.html @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>electrometer::ElectrometerException Member List</h1>This is the complete list of members for <a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a>, including all inherited members.<p><table> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona0">ElectrometerException</a>(void)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona1">ElectrometerException</a>(const char *reason, const char *desc, const char *origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona2">ElectrometerException</a>(const std::string &reason, const std::string &desc, const std::string &origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona3">ElectrometerException</a>(const Error &error)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona4">ElectrometerException</a>(const ElectrometerException &src)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">errors</a></td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona5">operator=</a>(const ElectrometerException &_src)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona7">push_error</a>(const char *reason, const char *desc, const char *origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona8">push_error</a>(const std::string &reason, const std::string &desc, const std::string &origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona9">push_error</a>(const Error &error)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona6">~ElectrometerException</a>(void)</td><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/classelectrometer_1_1_electrometer_exception.html b/doc/html/classelectrometer_1_1_electrometer_exception.html new file mode 100644 index 0000000..1d243d3 --- /dev/null +++ b/doc/html/classelectrometer_1_1_electrometer_exception.html @@ -0,0 +1,439 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: electrometer::ElectrometerException Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>electrometer::ElectrometerException Class Reference</h1>detailed description to be written +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_electrometer_exception_8h-source.html">ElectrometerException.h</a>></code> +<p> +<a href="classelectrometer_1_1_electrometer_exception-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona0">ElectrometerException</a> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona1">ElectrometerException</a> (const char *reason, const char *desc, const char *origin, int severity=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona2">ElectrometerException</a> (const std::string &reason, const std::string &desc, const std::string &origin, int severity=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona3">ElectrometerException</a> (const <a class="el" href="classelectrometer_1_1_error.html">Error</a> &error)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona4">ElectrometerException</a> (const <a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> &src)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona5">operator=</a> (const <a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> &_src)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona6">~ElectrometerException</a> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona7">push_error</a> (const char *reason, const char *desc, const char *origin, int severity=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona8">push_error</a> (const std::string &reason, const std::string &desc, const std::string &origin, int severity=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona9">push_error</a> (const <a class="el" href="classelectrometer_1_1_error.html">Error</a> &error)</td></tr> + +<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">ErrorList </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">errors</a></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +detailed description to be written +<p> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona0" doxytag="electrometer::ElectrometerException::ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::ElectrometerException::ElectrometerException </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona1" doxytag="electrometer::ElectrometerException::ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::ElectrometerException::ElectrometerException </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona2" doxytag="electrometer::ElectrometerException::ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::ElectrometerException::ElectrometerException </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona3" doxytag="electrometer::ElectrometerException::ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::ElectrometerException::ElectrometerException </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_error.html">Error</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>error</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona4" doxytag="electrometer::ElectrometerException::ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::ElectrometerException::ElectrometerException </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>src</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Copy constructor. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona6" doxytag="electrometer::ElectrometerException::~ElectrometerException"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual electrometer::ElectrometerException::~<a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Release resources. </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona5" doxytag="electrometer::ElectrometerException::operator="></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"><a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a>& electrometer::ElectrometerException::operator= </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>_src</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +operator= </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona9" doxytag="electrometer::ElectrometerException::push_error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void electrometer::ElectrometerException::push_error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_error.html">Error</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>error</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Push the specified error into the errors list. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona8" doxytag="electrometer::ElectrometerException::push_error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void electrometer::ElectrometerException::push_error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Push the specified error into the errors list. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiona7" doxytag="electrometer::ElectrometerException::push_error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void electrometer::ElectrometerException::push_error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Push the specified error into the errors list. </td> + </tr> +</table> +<hr><h2>Member Data Documentation</h2> +<a class="anchor" name="electrometer_1_1_electrometer_exceptiono0" doxytag="electrometer::ElectrometerException::errors"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">ErrorList <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">electrometer::ElectrometerException::errors</a> </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +The errors list </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_electrometer_exception_8h-source.html">ElectrometerException.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/classelectrometer_1_1_error-members.html b/doc/html/classelectrometer_1_1_error-members.html new file mode 100644 index 0000000..312e81c --- /dev/null +++ b/doc/html/classelectrometer_1_1_error-members.html @@ -0,0 +1,23 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Member List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>electrometer::Error Member List</h1>This is the complete list of members for <a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a>, including all inherited members.<p><table> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">desc</a></td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora0">Error</a>(void)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora1">Error</a>(const char *reason, const char *desc, const char *origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora2">Error</a>(const std::string &reason, const std::string &desc, const std::string &origin, int severity=electrometer::ERR)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora3">Error</a>(const Error &src)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora5">operator=</a>(const Error &_src)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">origin</a></td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">reason</a></td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">severity</a></td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora4">~Error</a>(void)</td><td><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a></td><td><code> [virtual]</code></td></tr> +</table><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/classelectrometer_1_1_error.html b/doc/html/classelectrometer_1_1_error.html new file mode 100644 index 0000000..7b546ea --- /dev/null +++ b/doc/html/classelectrometer_1_1_error.html @@ -0,0 +1,352 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: electrometer::Error Class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>electrometer::Error Class Reference</h1>detailed description to be written +<a href="#_details">More...</a> +<p> +<code>#include <<a class="el" href="_electrometer_exception_8h-source.html">ElectrometerException.h</a>></code> +<p> +<a href="classelectrometer_1_1_error-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora0">Error</a> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora1">Error</a> (const char *<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">reason</a>, const char *<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">desc</a>, const char *<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">origin</a>, int <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">severity</a>=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora2">Error</a> (const std::string &<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">reason</a>, const std::string &<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">desc</a>, const std::string &<a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">origin</a>, int <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">severity</a>=electrometer::ERR)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora3">Error</a> (const <a class="el" href="classelectrometer_1_1_error.html">Error</a> &src)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora4">~Error</a> (void)</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classelectrometer_1_1_error.html">Error</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora5">operator=</a> (const <a class="el" href="classelectrometer_1_1_error.html">Error</a> &_src)</td></tr> + +<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">reason</a></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">desc</a></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">origin</a></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">severity</a></td></tr> + +</table> +<hr><a name="_details"></a><h2>Detailed Description</h2> +detailed description to be written +<p> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="electrometer_1_1_errora0" doxytag="electrometer::Error::Error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::Error::Error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_errora1" doxytag="electrometer::Error::Error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::Error::Error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const char * </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_errora2" doxytag="electrometer::Error::Error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::Error::Error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname" nowrap> <em>reason</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>const std::string & </td> + <td class="mdname" nowrap> <em>origin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>int </td> + <td class="mdname" nowrap> <em>severity</em> = <code>electrometer::ERR</code></td> + </tr> + <tr> + <td class="md"></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialization. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_errora3" doxytag="electrometer::Error::Error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">electrometer::Error::Error </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_error.html">Error</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>src</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Copy constructor. </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_errora4" doxytag="electrometer::Error::~Error"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">virtual electrometer::Error::~<a class="el" href="classelectrometer_1_1_error.html">Error</a> </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [virtual]</code></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +<a class="el" href="classelectrometer_1_1_error.html">Error</a> details: code </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="electrometer_1_1_errora5" doxytag="electrometer::Error::operator="></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"><a class="el" href="classelectrometer_1_1_error.html">Error</a>& electrometer::Error::operator= </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="classelectrometer_1_1_error.html">Error</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>_src</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +operator= </td> + </tr> +</table> +<hr><h2>Member Data Documentation</h2> +<a class="anchor" name="electrometer_1_1_erroro1" doxytag="electrometer::Error::desc"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">electrometer::Error::desc</a> </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +<a class="el" href="classelectrometer_1_1_error.html">Error</a> details: description </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_erroro2" doxytag="electrometer::Error::origin"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">electrometer::Error::origin</a> </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +<a class="el" href="classelectrometer_1_1_error.html">Error</a> details: origin </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_erroro0" doxytag="electrometer::Error::reason"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">std::string <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">electrometer::Error::reason</a> </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +<a class="el" href="classelectrometer_1_1_error.html">Error</a> details: reason </td> + </tr> +</table> +<a class="anchor" name="electrometer_1_1_erroro3" doxytag="electrometer::Error::severity"></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">int <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">electrometer::Error::severity</a> </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +<a class="el" href="classelectrometer_1_1_error.html">Error</a> details: severity </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="_electrometer_exception_8h-source.html">ElectrometerException.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/classes.html b/doc/html/classes.html new file mode 100644 index 0000000..c4dba68 --- /dev/null +++ b/doc/html/classes.html @@ -0,0 +1,21 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Alphabetical List</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindexHL" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_T">T</a></div><p> +<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table> +</td><td><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> </td><td><a class="el" href="class_keithley__617.html">Keithley_617</a> </td><td><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a> </td><td><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a> </td></tr><tr><td><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> </td><td><a class="el" href="classelectrometer_1_1_error.html">Error</a> (electrometer) </td><td><a class="el" href="class_keithley__6485.html">Keithley_6485</a> </td><td><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a> </td><td><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a> </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table> +</td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> K </div></td></tr></table> +</td><td><a class="el" href="class_keithley__6487.html">Keithley_6487</a> </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table> +</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table> +</td></tr><tr><td><a class="el" href="class_communication_link.html">CommunicationLink</a> </td><td><a class="el" href="class_keithley__485.html">Keithley_485</a> </td><td><a class="el" href="class_keithley__6512.html">Keithley_6512</a> </td><td><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a> </td><td><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a> </td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table> +</td><td><a class="el" href="class_keithley__486.html">Keithley_486</a> </td><td><a class="el" href="class_keithley__6514.html">Keithley_6514</a> </td><td><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a> </td><td><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a> </td></tr><tr><td><a class="el" href="classelectrometer_1_1_electrometer_exception.html">ElectrometerException</a> (electrometer) </td><td><a class="el" href="class_keithley__487.html">Keithley_487</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_T">T</a></div><p> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/dir_000000.html b/doc/html/dir_000000.html new file mode 100644 index 0000000..a3e33b3 --- /dev/null +++ b/doc/html/dir_000000.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: D:/ Directory Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a></div> +<h1>D: Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Directories</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000001.html">DeviceServerSrc</a></td></tr> + +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/dir_000001.html b/doc/html/dir_000001.html new file mode 100644 index 0000000..2999594 --- /dev/null +++ b/doc/html/dir_000001.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: D:/DeviceServerSrc/ Directory Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a></div> +<h1>DeviceServerSrc Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Directories</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000002.html">ElectrometersLibrary</a></td></tr> + +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/dir_000002.html b/doc/html/dir_000002.html new file mode 100644 index 0000000..5d90e52 --- /dev/null +++ b/doc/html/dir_000002.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: D:/DeviceServerSrc/ElectrometersLibrary/ Directory Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a></div> +<h1>ElectrometersLibrary Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Directories</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000003.html">include</a></td></tr> + +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/dir_000003.html b/doc/html/dir_000003.html new file mode 100644 index 0000000..9ba21e4 --- /dev/null +++ b/doc/html/dir_000003.html @@ -0,0 +1,58 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: D:/DeviceServerSrc/ElectrometersLibrary/include/ Directory Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">D:</a> / <a class="el" href="dir_000001.html">DeviceServerSrc</a> / <a class="el" href="dir_000002.html">ElectrometersLibrary</a> / <a class="el" href="dir_000003.html">include</a></div> +<h1>include Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Files</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>AbstractElectrometerClass.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>CommunicationLink.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>ElectrometerException.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>ElectrometerProtocol.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_485.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_486.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_487.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_617.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_6485.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_6487.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_6512.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Keithley_6514.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>KeithleyDDCProtocol.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>KeithleySCPIProtocol.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>N_PhotoConducteur.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>N_PhotoVoltaique.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>Novelec_MCCE2.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>NovelecProtocol.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>TangoGpibLink.h</b></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><b>TangoSerialLink.h</b></td></tr> + +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..1d4d631 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,271 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +H1 { + text-align: center; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #eeeeff; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #eeeeff; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 12px; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 12px; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 12px; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 13px; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 12px; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 13px; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 12px; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #eeeeff; +} +TD.tiny { font-size: 75%; +} +a { + color: #252E78; +} +a:visited { + color: #3D2185; +} diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmeAS@N?(olHy`uVBq!ia0y~yU`SzLV9@1YW?*2*&$c_nz`($g?&#~tz;Nxx75@k$ z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHVh05u>n3It_%ze$M>CA zQd@cA-1}|2uU)?NYx1Id3)Vc?cIaz;`|_(dU!6R4?%|_n)qPib7ryS8d40jAAIsP5 zJaAy+-Mi<0{(SlM>+{#IpSrqOUcYuaBRy7LRyaPw#=%NCHzV}_|NnOn)EhD|Fvyn# z`33*S3mDEymI*L0F#q>-aSW-rl{CSbfsJFrVk-s?g%oAUmX_Am){F#B2Zn_aN;+Cv zT0YF)3``w*(->F;Vs#if6m~^02{@E&WKn2%k;Li1aPg>61B266mliXSidm{kN?SIt zC^Se+;1-#o%EQwk#5U7O#L8n)$0m-0X%15vI21a90xFqUlmxsJVgdx2lbkgaJ=r`J zGgdMSw!UuGX#ChR;fUfZMy3wNHO?%IEs{rCALJ++L`TGU#Ym_yhj8%uvUO-ovP)!B z32u>?z{7HrNx*^U!U~5VJ(Z?4EIwXNOhFQhIvoYh2)G+^t>G4vIHcirf{{g_S>{SW zM#jOA1I+x3BwJJ!<q{gy1PV8(3X~q=31C;)$+n1l4WmMXgu+he5Dp0yr$rBHnhvq< z3KwB&St4;DXTf4cA*X~OHWdvXG3HjuBODzQCmj-)C*#22cvSU>q{NaVst!7A8q*n1 zi8kG06k^(_s&eqrqadMxTqlLl1Vhh`NGBc+Q3XrO28NhkLna0V4yH<HXCdeR^=V4c zehbtY?%0O7pP2L`ht*<6ocC|jew$Z9!Hv&?PA-|E`cBxvfl*H30o&|Tyh(-&3XeL9 z@b?QucyzEc?PyeMyx}w{NTHIGEpG-(KnvrU$J3ak8B84c6dD?`b~ZFf%h=sf5M!Rf zU7|QcTSM=}QPyzAKqeu!jgCfl?g;n_gx+bIG^wfS5l@2Q0@VaVHp>PECN~>yV*w7P z<S2n735=gvQx#*xIuu-3PiPD1aa$O7Z$9v3hhmOcWTc~lE{9o@t5+B6qA)&%28WgN zm{}qsA{0zo_@8o}a<C9EyO1EsAsm##;k2c}#FJA=gy}A)QsXp-iXsL^mQy`VG9C?c z9i>hQ2?!)iPh;mid18Ze4;!0O1Vfm?NsdjMoq3WRj9TY1uJPbnBX(jkGlxQfrlJM| z`<o_(xdweE%pIB<s;of=&v9;JQE3QaIMuN9z`vw+X~v{R9mZnGCk#v%9N5em4k&Q^ zxwxU}(mVUKrPrp%1b9{`dT!xgrZlDZM8_oK6<mRlGyaz}#>L&fkzS^&P-_>?(CFpw z7{-#o!mOgEJcV@`i=@TRA3rQ48)Dqt6lMpzd9kS+I@WOESl0#qg%VE~m^vC8J4Fs0 z;5HFj)yjC{$x~KN2Hk_p+d-+xV^eG6^!fAWi>Gng%Y1lb+5!@skZpK~A*EBN=P>8y z=E)6u4Gc<a-PmWIKHc!(W7FP)o+ktv7?d{NWH1pw>9HWaqOqnaje$jAWv;NMrl#c< zJ>EoL21b`=HUTvT?AdWqw<-gpi#Wb~+rY?>lF)Q=Z}3)s1_lNOPgg&ebxsLQ0N#Mr Aa{vGU literal 0 HcmV?d00001 diff --git a/doc/html/files.html b/doc/html/files.html new file mode 100644 index 0000000..babd7c2 --- /dev/null +++ b/doc/html/files.html @@ -0,0 +1,34 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: File Index</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindexHL" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library File List</h1>Here is a list of all documented files with brief descriptions:<table> + <tr><td class="indexkey"><b>AbstractElectrometerClass.h</b> <a href="_abstract_electrometer_class_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>CommunicationLink.h</b> <a href="_communication_link_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>ElectrometerException.h</b> <a href="_electrometer_exception_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>ElectrometerProtocol.h</b> <a href="_electrometer_protocol_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_485.h</b> <a href="_keithley__485_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_486.h</b> <a href="_keithley__486_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_487.h</b> <a href="_keithley__487_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_617.h</b> <a href="_keithley__617_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_6485.h</b> <a href="_keithley__6485_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_6487.h</b> <a href="_keithley__6487_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_6512.h</b> <a href="_keithley__6512_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Keithley_6514.h</b> <a href="_keithley__6514_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>KeithleyDDCProtocol.h</b> <a href="_keithley_d_d_c_protocol_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>KeithleySCPIProtocol.h</b> <a href="_keithley_s_c_p_i_protocol_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>N_PhotoConducteur.h</b> <a href="_n___photo_conducteur_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>N_PhotoVoltaique.h</b> <a href="_n___photo_voltaique_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>Novelec_MCCE2.h</b> <a href="_novelec___m_c_c_e2_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>NovelecProtocol.h</b> <a href="_novelec_protocol_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>TangoGpibLink.h</b> <a href="_tango_gpib_link_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><b>TangoSerialLink.h</b> <a href="_tango_serial_link_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..32fb5e9 --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,121 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Class Members</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="functions.html">Class Members</a></div> +<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div> +<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_~">~</a></div> + +<p> + +<p> +Here is a list of all documented class members with links to the class documentation for each member:<h3><a class="anchor" name="index_a">- a -</a></h3><ul> +<li>AbstractElectrometerClass() +: <a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a><li>autoRange_off() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a2">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a2">Keithley_617</a><li>autoRange_on() +: <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_c">- c -</a></h3><ul> +<li>CommunicationLink() +: <a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a></ul> +<h3><a class="anchor" name="index_d">- d -</a></h3><ul> +<li>desc +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">electrometer::Error</a></ul> +<h3><a class="anchor" name="index_e">- e -</a></h3><ul> +<li>electrometer_status() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">Novelec_MCCE2</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a11">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a11">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a8">Keithley_487</a>, <a class="el" href="class_keithley__486.html#_keithley__486a6">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a5">Keithley_485</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">AbstractElectrometerClass</a><li>ElectrometerException() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona4">electrometer::ElectrometerException</a><li>ElectrometerProtocol() +: <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a><li>Error() +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora3">electrometer::Error</a><li>errors +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">electrometer::ElectrometerException</a></ul> +<h3><a class="anchor" name="index_g">- g -</a></h3><ul> +<li>get_ElectroMeterFrequency() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea4">N_PhotoVoltaique</a><li>get_ElectroMeterGain() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura4">N_PhotoConducteur</a><li>get_ElectroMeterMode() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a9">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a9">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a6">Keithley_487</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">AbstractElectrometerClass</a><li>get_ElectroMeterPolarity() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">Novelec_MCCE2</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">AbstractElectrometerClass</a><li>get_ElectroMeterRange() +: <a class="el" href="class_keithley__486.html#_keithley__486a5">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a4">Keithley_485</a><li>get_mode() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola15">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola32">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">KeithleyDDCProtocol</a><li>get_raw_status() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola14">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola31">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola21">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola9">ElectrometerProtocol</a><li>get_value() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola7">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola18">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola14">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola6">ElectrometerProtocol</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_i">- i -</a></h3><ul> +<li>init_keithley() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola19">KeithleySCPIProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">ElectrometerProtocol</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_k">- k -</a></h3><ul> +<li>Keithley_485() +: <a class="el" href="class_keithley__485.html#_keithley__485a0">Keithley_485</a><li>Keithley_486() +: <a class="el" href="class_keithley__486.html#_keithley__486a0">Keithley_486</a><li>Keithley_487() +: <a class="el" href="class_keithley__487.html#_keithley__487a0">Keithley_487</a><li>Keithley_617() +: <a class="el" href="class_keithley__617.html#_keithley__617a0">Keithley_617</a><li>Keithley_6485() +: <a class="el" href="class_keithley__6485.html#_keithley__6485a0">Keithley_6485</a><li>Keithley_6487() +: <a class="el" href="class_keithley__6487.html#_keithley__6487a0">Keithley_6487</a><li>Keithley_6512() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a0">Keithley_6512</a><li>Keithley_6514() +: <a class="el" href="class_keithley__6514.html#_keithley__6514a0">Keithley_6514</a><li>KeithleyDDCProtocol() +: <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola0">KeithleyDDCProtocol</a><li>KeithleySCPIProtocol() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola0">KeithleySCPIProtocol</a></ul> +<h3><a class="anchor" name="index_m">- m -</a></h3><ul> +<li>mcce_on() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">Novelec_MCCE2</a></ul> +<h3><a class="anchor" name="index_n">- n -</a></h3><ul> +<li>N_PhotoConducteur() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura0">N_PhotoConducteur</a><li>N_PhotoVoltaique() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea0">N_PhotoVoltaique</a><li>Novelec_MCCE2() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a><li>NovelecProtocol() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola0">NovelecProtocol</a></ul> +<h3><a class="anchor" name="index_o">- o -</a></h3><ul> +<li>operator=() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona5">electrometer::ElectrometerException</a>, <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora5">electrometer::Error</a><li>origin +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">electrometer::Error</a></ul> +<h3><a class="anchor" name="index_p">- p -</a></h3><ul> +<li>push_error() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona9">electrometer::ElectrometerException</a></ul> +<h3><a class="anchor" name="index_r">- r -</a></h3><ul> +<li>range_up() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea2">N_PhotoVoltaique</a>, <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura2">N_PhotoConducteur</a>, <a class="el" href="class_keithley__6514.html#_keithley__6514a2">Keithley_6514</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a3">Keithley_6512</a>, <a class="el" href="class_keithley__6487.html#_keithley__6487a2">Keithley_6487</a>, <a class="el" href="class_keithley__6485.html#_keithley__6485a2">Keithley_6485</a>, <a class="el" href="class_keithley__617.html#_keithley__617a3">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a2">Keithley_487</a>, <a class="el" href="class_keithley__486.html#_keithley__486a2">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a2">Keithley_485</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">AbstractElectrometerClass</a><li>read() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka3">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka3">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka3">CommunicationLink</a><li>reason +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">electrometer::Error</a></ul> +<h3><a class="anchor" name="index_s">- s -</a></h3><ul> +<li>set_isDiffSuportedMode() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">KeithleySCPIProtocol</a><li>set_range() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola2">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola2">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola2">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola2">ElectrometerProtocol</a><li>set_Zero_VonF_function() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">AbstractElectrometerClass</a><li>setAmperMeterMode() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola14">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola15">KeithleyDDCProtocol</a>, <a class="el" href="class_keithley__6514.html#_keithley__6514a4">Keithley_6514</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a5">Keithley_6512</a>, <a class="el" href="class_keithley__6487.html#_keithley__6487a4">Keithley_6487</a>, <a class="el" href="class_keithley__617.html#_keithley__617a5">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a5">Keithley_487</a><li>severity +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">electrometer::Error</a><li>switch_MCCE2_ON() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola8">NovelecProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">ElectrometerProtocol</a></ul> +<h3><a class="anchor" name="index_t">- t -</a></h3><ul> +<li>TangoGpibLink() +: <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka0">TangoGpibLink</a><li>TangoSerialLink() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka0">TangoSerialLink</a></ul> +<h3><a class="anchor" name="index_w">- w -</a></h3><ul> +<li>write() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka2">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka2">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka2">CommunicationLink</a><li>write_read() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka4">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka4">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka4">CommunicationLink</a></ul> +<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul> +<li>~AbstractElectrometerClass() +: <a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">AbstractElectrometerClass</a><li>~CommunicationLink() +: <a class="el" href="class_communication_link.html#_communication_linka1">CommunicationLink</a><li>~ElectrometerException() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona6">electrometer::ElectrometerException</a><li>~ElectrometerProtocol() +: <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">ElectrometerProtocol</a><li>~Error() +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora4">electrometer::Error</a><li>~Keithley_485() +: <a class="el" href="class_keithley__485.html#_keithley__485a1">Keithley_485</a><li>~Keithley_486() +: <a class="el" href="class_keithley__486.html#_keithley__486a1">Keithley_486</a><li>~Keithley_487() +: <a class="el" href="class_keithley__487.html#_keithley__487a1">Keithley_487</a><li>~Keithley_617() +: <a class="el" href="class_keithley__617.html#_keithley__617a1">Keithley_617</a><li>~Keithley_6485() +: <a class="el" href="class_keithley__6485.html#_keithley__6485a1">Keithley_6485</a><li>~Keithley_6487() +: <a class="el" href="class_keithley__6487.html#_keithley__6487a1">Keithley_6487</a><li>~Keithley_6512() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a1">Keithley_6512</a><li>~Keithley_6514() +: <a class="el" href="class_keithley__6514.html#_keithley__6514a1">Keithley_6514</a><li>~KeithleyDDCProtocol() +: <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola1">KeithleyDDCProtocol</a><li>~KeithleySCPIProtocol() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola1">KeithleySCPIProtocol</a><li>~N_PhotoConducteur() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura1">N_PhotoConducteur</a><li>~N_PhotoVoltaique() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea1">N_PhotoVoltaique</a><li>~Novelec_MCCE2() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">Novelec_MCCE2</a><li>~NovelecProtocol() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola1">NovelecProtocol</a><li>~TangoGpibLink() +: <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka1">TangoGpibLink</a><li>~TangoSerialLink() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka1">TangoSerialLink</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000..8a6d386 --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,114 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Class Members - Functions</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="functions.html">Class Members</a></div> +<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div> +<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_~">~</a></div> + +<p> + +<p> +<h3><a class="anchor" name="index_a">- a -</a></h3><ul> +<li>AbstractElectrometerClass() +: <a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa0">AbstractElectrometerClass</a><li>autoRange_off() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a2">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a2">Keithley_617</a><li>autoRange_on() +: <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a17">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_c">- c -</a></h3><ul> +<li>CommunicationLink() +: <a class="el" href="class_communication_link.html#_communication_linka0">CommunicationLink</a></ul> +<h3><a class="anchor" name="index_e">- e -</a></h3><ul> +<li>electrometer_status() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a10">Novelec_MCCE2</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a11">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a11">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a8">Keithley_487</a>, <a class="el" href="class_keithley__486.html#_keithley__486a6">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a5">Keithley_485</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a44">AbstractElectrometerClass</a><li>ElectrometerException() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona4">electrometer::ElectrometerException</a><li>ElectrometerProtocol() +: <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola0">ElectrometerProtocol</a><li>Error() +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora3">electrometer::Error</a></ul> +<h3><a class="anchor" name="index_g">- g -</a></h3><ul> +<li>get_ElectroMeterFrequency() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea4">N_PhotoVoltaique</a><li>get_ElectroMeterGain() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura4">N_PhotoConducteur</a><li>get_ElectroMeterMode() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a9">Keithley_6512</a>, <a class="el" href="class_keithley__617.html#_keithley__617a9">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a6">Keithley_487</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a45">AbstractElectrometerClass</a><li>get_ElectroMeterPolarity() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a2">Novelec_MCCE2</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a38">AbstractElectrometerClass</a><li>get_ElectroMeterRange() +: <a class="el" href="class_keithley__486.html#_keithley__486a5">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a4">Keithley_485</a><li>get_mode() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola15">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola32">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola22">KeithleyDDCProtocol</a><li>get_raw_status() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola14">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola31">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola21">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola9">ElectrometerProtocol</a><li>get_value() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola7">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola18">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola14">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola6">ElectrometerProtocol</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a16">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_i">- i -</a></h3><ul> +<li>init_keithley() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola19">KeithleySCPIProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_novelec_protocola24">ElectrometerProtocol</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a29">AbstractElectrometerClass</a></ul> +<h3><a class="anchor" name="index_k">- k -</a></h3><ul> +<li>Keithley_485() +: <a class="el" href="class_keithley__485.html#_keithley__485a0">Keithley_485</a><li>Keithley_486() +: <a class="el" href="class_keithley__486.html#_keithley__486a0">Keithley_486</a><li>Keithley_487() +: <a class="el" href="class_keithley__487.html#_keithley__487a0">Keithley_487</a><li>Keithley_617() +: <a class="el" href="class_keithley__617.html#_keithley__617a0">Keithley_617</a><li>Keithley_6485() +: <a class="el" href="class_keithley__6485.html#_keithley__6485a0">Keithley_6485</a><li>Keithley_6487() +: <a class="el" href="class_keithley__6487.html#_keithley__6487a0">Keithley_6487</a><li>Keithley_6512() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a0">Keithley_6512</a><li>Keithley_6514() +: <a class="el" href="class_keithley__6514.html#_keithley__6514a0">Keithley_6514</a><li>KeithleyDDCProtocol() +: <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola0">KeithleyDDCProtocol</a><li>KeithleySCPIProtocol() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola0">KeithleySCPIProtocol</a></ul> +<h3><a class="anchor" name="index_m">- m -</a></h3><ul> +<li>mcce_on() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a8">Novelec_MCCE2</a></ul> +<h3><a class="anchor" name="index_n">- n -</a></h3><ul> +<li>N_PhotoConducteur() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura0">N_PhotoConducteur</a><li>N_PhotoVoltaique() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea0">N_PhotoVoltaique</a><li>Novelec_MCCE2() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a0">Novelec_MCCE2</a><li>NovelecProtocol() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola0">NovelecProtocol</a></ul> +<h3><a class="anchor" name="index_o">- o -</a></h3><ul> +<li>operator=() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona5">electrometer::ElectrometerException</a>, <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora5">electrometer::Error</a></ul> +<h3><a class="anchor" name="index_p">- p -</a></h3><ul> +<li>push_error() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona9">electrometer::ElectrometerException</a></ul> +<h3><a class="anchor" name="index_r">- r -</a></h3><ul> +<li>range_up() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea2">N_PhotoVoltaique</a>, <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura2">N_PhotoConducteur</a>, <a class="el" href="class_keithley__6514.html#_keithley__6514a2">Keithley_6514</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a3">Keithley_6512</a>, <a class="el" href="class_keithley__6487.html#_keithley__6487a2">Keithley_6487</a>, <a class="el" href="class_keithley__6485.html#_keithley__6485a2">Keithley_6485</a>, <a class="el" href="class_keithley__617.html#_keithley__617a3">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a2">Keithley_487</a>, <a class="el" href="class_keithley__486.html#_keithley__486a2">Keithley_486</a>, <a class="el" href="class_keithley__485.html#_keithley__485a2">Keithley_485</a>, <a class="el" href="class_abstract_electrometer_class.html#_novelec___m_c_c_e2a11">AbstractElectrometerClass</a><li>read() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka3">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka3">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka3">CommunicationLink</a></ul> +<h3><a class="anchor" name="index_s">- s -</a></h3><ul> +<li>set_isDiffSuportedMode() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola34">KeithleySCPIProtocol</a><li>set_range() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola2">NovelecProtocol</a>, <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola2">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola2">KeithleyDDCProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola2">ElectrometerProtocol</a><li>set_Zero_VonF_function() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a4">Novelec_MCCE2</a>, <a class="el" href="class_abstract_electrometer_class.html#_keithley__6514a32">AbstractElectrometerClass</a><li>setAmperMeterMode() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola14">KeithleySCPIProtocol</a>, <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola15">KeithleyDDCProtocol</a>, <a class="el" href="class_keithley__6514.html#_keithley__6514a4">Keithley_6514</a>, <a class="el" href="class_keithley__6512.html#_keithley__6512a5">Keithley_6512</a>, <a class="el" href="class_keithley__6487.html#_keithley__6487a4">Keithley_6487</a>, <a class="el" href="class_keithley__617.html#_keithley__617a5">Keithley_617</a>, <a class="el" href="class_keithley__487.html#_keithley__487a5">Keithley_487</a><li>switch_MCCE2_ON() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola8">NovelecProtocol</a>, <a class="el" href="class_electrometer_protocol.html#_keithley_s_c_p_i_protocola37">ElectrometerProtocol</a></ul> +<h3><a class="anchor" name="index_t">- t -</a></h3><ul> +<li>TangoGpibLink() +: <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka0">TangoGpibLink</a><li>TangoSerialLink() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka0">TangoSerialLink</a></ul> +<h3><a class="anchor" name="index_w">- w -</a></h3><ul> +<li>write() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka2">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka2">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka2">CommunicationLink</a><li>write_read() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka4">TangoSerialLink</a>, <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka4">TangoGpibLink</a>, <a class="el" href="class_communication_link.html#_communication_linka4">CommunicationLink</a></ul> +<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul> +<li>~AbstractElectrometerClass() +: <a class="el" href="class_abstract_electrometer_class.html#_abstract_electrometer_classa1">AbstractElectrometerClass</a><li>~CommunicationLink() +: <a class="el" href="class_communication_link.html#_communication_linka1">CommunicationLink</a><li>~ElectrometerException() +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiona6">electrometer::ElectrometerException</a><li>~ElectrometerProtocol() +: <a class="el" href="class_electrometer_protocol.html#_electrometer_protocola1">ElectrometerProtocol</a><li>~Error() +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_errora4">electrometer::Error</a><li>~Keithley_485() +: <a class="el" href="class_keithley__485.html#_keithley__485a1">Keithley_485</a><li>~Keithley_486() +: <a class="el" href="class_keithley__486.html#_keithley__486a1">Keithley_486</a><li>~Keithley_487() +: <a class="el" href="class_keithley__487.html#_keithley__487a1">Keithley_487</a><li>~Keithley_617() +: <a class="el" href="class_keithley__617.html#_keithley__617a1">Keithley_617</a><li>~Keithley_6485() +: <a class="el" href="class_keithley__6485.html#_keithley__6485a1">Keithley_6485</a><li>~Keithley_6487() +: <a class="el" href="class_keithley__6487.html#_keithley__6487a1">Keithley_6487</a><li>~Keithley_6512() +: <a class="el" href="class_keithley__6512.html#_keithley__6512a1">Keithley_6512</a><li>~Keithley_6514() +: <a class="el" href="class_keithley__6514.html#_keithley__6514a1">Keithley_6514</a><li>~KeithleyDDCProtocol() +: <a class="el" href="class_keithley_d_d_c_protocol.html#_keithley_d_d_c_protocola1">KeithleyDDCProtocol</a><li>~KeithleySCPIProtocol() +: <a class="el" href="class_keithley_s_c_p_i_protocol.html#_keithley_s_c_p_i_protocola1">KeithleySCPIProtocol</a><li>~N_PhotoConducteur() +: <a class="el" href="class_n___photo_conducteur.html#_n___photo_conducteura1">N_PhotoConducteur</a><li>~N_PhotoVoltaique() +: <a class="el" href="class_n___photo_voltaique.html#_n___photo_voltaiquea1">N_PhotoVoltaique</a><li>~Novelec_MCCE2() +: <a class="el" href="class_novelec___m_c_c_e2.html#_novelec___m_c_c_e2a1">Novelec_MCCE2</a><li>~NovelecProtocol() +: <a class="el" href="class_novelec_protocol.html#_novelec_protocola1">NovelecProtocol</a><li>~TangoGpibLink() +: <a class="el" href="class_tango_gpib_link.html#_tango_gpib_linka1">TangoGpibLink</a><li>~TangoSerialLink() +: <a class="el" href="class_tango_serial_link.html#_tango_serial_linka1">TangoSerialLink</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000..9b0f92a --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Class Members - Variables</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="functions.html">Class Members</a></div> +<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div> + +<p> +<ul> +<li>desc +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro1">electrometer::Error</a><li>errors +: <a class="el" href="classelectrometer_1_1_electrometer_exception.html#electrometer_1_1_electrometer_exceptiono0">electrometer::ElectrometerException</a><li>origin +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro2">electrometer::Error</a><li>reason +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro0">electrometer::Error</a><li>severity +: <a class="el" href="classelectrometer_1_1_error.html#electrometer_1_1_erroro3">electrometer::Error</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/group___communication.html b/doc/html/group___communication.html new file mode 100644 index 0000000..20ff1e9 --- /dev/null +++ b/doc/html/group___communication.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Management</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Management</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_communication_link.html">CommunicationLink</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract class to manage a specific communication bus. <a href="class_communication_link.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage the GPIB communication bus. <a href="class_tango_gpib_link.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage the SERIAL communication bus. <a href="class_tango_serial_link.html#_details">More...</a><br></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/group___d_d_c.html b/doc/html/group___d_d_c.html new file mode 100644 index 0000000..c5c9e48 --- /dev/null +++ b/doc/html/group___d_d_c.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__485.html">Keithley_485</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 485 Keithley type. <a href="class_keithley__485.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__486.html">Keithley_486</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 486 Keithley type. <a href="class_keithley__486.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__487.html">Keithley_487</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 487 Keithley type. <a href="class_keithley__487.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__617.html">Keithley_617</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 617 Keithley type. <a href="class_keithley__617.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6512.html">Keithley_6512</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 6512 Keithley type. <a href="class_keithley__6512.html#_details">More...</a><br></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/group___novelec.html b/doc/html/group___novelec.html new file mode 100644 index 0000000..c25290e --- /dev/null +++ b/doc/html/group___novelec.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Novelec</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Novelec</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage Novelec PhotoConductor types. <a href="class_n___photo_conducteur.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage Novelec PhotoVoltaique types. <a href="class_n___photo_voltaique.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage Novelec MCCE-2 type. <a href="class_novelec___m_c_c_e2.html#_details">More...</a><br></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/group___s_c_p_i.html b/doc/html/group___s_c_p_i.html new file mode 100644 index 0000000..f9f23e1 --- /dev/null +++ b/doc/html/group___s_c_p_i.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Keithley</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Keithley</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6485.html">Keithley_6485</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 6485 Keithley type. <a href="class_keithley__6485.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6487.html">Keithley_6487</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 6487 Keithley type. <a href="class_keithley__6487.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley__6514.html">Keithley_6514</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage 6514 Keithley type. <a href="class_keithley__6514.html#_details">More...</a><br></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/group___standard.html b/doc/html/group___standard.html new file mode 100644 index 0000000..0b7311d --- /dev/null +++ b/doc/html/group___standard.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Commands Protocol</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Commands Protocol</h1><table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This abstract class manage the Electrometers Commands Protocol. <a href="class_electrometer_protocol.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage the Keithley DDC Commands Protocol. <a href="class_keithley_d_d_c_protocol.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage the Keithley SCPI Commands Protocol. <a href="class_keithley_s_c_p_i_protocol.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">This class manage the Novelec Commands Protocol. <a href="class_novelec_protocol.html#_details">More...</a><br></td></tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000..6225651 --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,43 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Hierarchical Index</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindexHL" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul> +<li><a class="el" href="class_abstract_electrometer_class.html">AbstractElectrometerClass</a> +<ul> +<li><a class="el" href="class_keithley__485.html">Keithley_485</a> +<li><a class="el" href="class_keithley__486.html">Keithley_486</a> +<li><a class="el" href="class_keithley__487.html">Keithley_487</a> +<li><a class="el" href="class_keithley__617.html">Keithley_617</a> +<li><a class="el" href="class_keithley__6485.html">Keithley_6485</a> +<li><a class="el" href="class_keithley__6487.html">Keithley_6487</a> +<li><a class="el" href="class_keithley__6512.html">Keithley_6512</a> +<li><a class="el" href="class_keithley__6514.html">Keithley_6514</a> +<li><a class="el" href="class_novelec___m_c_c_e2.html">Novelec_MCCE2</a> +<ul> +<li><a class="el" href="class_n___photo_conducteur.html">N_PhotoConducteur</a> +<li><a class="el" href="class_n___photo_voltaique.html">N_PhotoVoltaique</a> +</ul> +</ul> +<li><a class="el" href="class_communication_link.html">CommunicationLink</a> +<ul> +<li><a class="el" href="class_tango_gpib_link.html">TangoGpibLink</a> +<li><a class="el" href="class_tango_serial_link.html">TangoSerialLink</a> +</ul> +<li><a class="el" href="classelectrometer_1_1_electrometer_exception.html">electrometer::ElectrometerException</a> +<li><a class="el" href="class_electrometer_protocol.html">ElectrometerProtocol</a> +<ul> +<li><a class="el" href="class_keithley_d_d_c_protocol.html">KeithleyDDCProtocol</a> +<li><a class="el" href="class_keithley_s_c_p_i_protocol.html">KeithleySCPIProtocol</a> +<li><a class="el" href="class_novelec_protocol.html">NovelecProtocol</a> +</ul> +<li><a class="el" href="classelectrometer_1_1_error.html">electrometer::Error</a> +</ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:19 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..d20d6cb --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,14 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Main Page</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindexHL" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library Documentation</h1> +<p> +<h3 align="center">1.0 </h3><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/html/modules.html b/doc/html/modules.html new file mode 100644 index 0000000..d8484d6 --- /dev/null +++ b/doc/html/modules.html @@ -0,0 +1,19 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Electrometers Library: Module Index</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindexHL" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div> +<h1>Electrometers Library Modules</h1>Here is a list of all modules:<ul> +<li><a class="el" href="group___communication.html">Management</a> +<li><a class="el" href="group___standard.html">Commands Protocol</a> +<li><a class="el" href="group___d_d_c.html">Keithley</a> +<li><a class="el" href="group___s_c_p_i.html">Keithley</a> +<li><a class="el" href="group___novelec.html">Novelec</a> +</ul> +<hr size="1"><address style="align: right;"><small>Generated on Fri Dec 1 15:32:23 2006 for Electrometers Library by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> diff --git a/doc/latex/Helvetica.ttf b/doc/latex/Helvetica.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8051f8a119f13c1cce42c147c8252d69c40d8dff GIT binary patch literal 32760 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	?HTB8LFA0n7h~AtvH>ONtmq2PnhfYYA z<-5IEnU(3)S(%-Q6EANO3_sMPG|?r2o5@zx(O^~1f${*MurPk#q}4K6g+hOSDhaD* zO$y!pi*p;BhCoMbOpWSaG2S`FN#**W!n^$cDYp5nml?Pj#2KU+)ESH!*&VnhNKTMq z%HWWamfpcM%Yk1)Qba;RQbJmkUsB3YTWAl{d<IU&R0bZV`3~I7Qj(I)jM5Sksv011 zdB#)*J*N4aRJmpLFwJ7nW@KP6WSX^EX^klxh%d^>z`)Nm%YhS=i%U(yqrh4C?U%O# z-@tMC_U~Izkb?8<+rMw&1z$Tj%R(YCh|yS6PFtSASiw-9QCCe{o<U#5P@a*OiC>;U zoJCZgQILyYo<W#HRGv{wRzsfANKr$cQAb@*p20v_Po9B~kw>0UjFm^8QGi=Wo<W3N zNS=WK6muX9jzSQlkug@-#LU=8OjLwTSxJpiiA_{Q%-G1x)I^P$(U_AFhg|u*X<b{l zx3z9$v~-S)a&n1`a$;7R^yeYt(|Oaowr+24-N<MK5_FA>Vu_l2=ji@jCyy~6Et%b0 zTr#V#_*XF-=g;qqee-UEB#tv4DVg0<0+L{0W{CKIk5!%ZGJ`yW4uct^t;2~b(IT-T z@hZJ4{Wh^>`ga*PrpYcAW9rmzHe+g*X;Ea_BF2~?o~XzqCh8!T#lXBu?v@x+u}rZn zQ>j#uG*c-<wHQ;Ec(XLqO3`&<OwDp#3QS#G%`!}<6^^MhofSJI&9qDEm<Us**)B1r zOz~7>rc`~#Fyk0ACO6|Kc_v>mCut@FDNA`KHE9(ECI($yIbA(2E(U2aF<DUsF);;& zU0k{%TwJ<pngWa_nsQdm+|q5b%5e$81;Pu2ne~Mogqeiz$o5MxO6*{Ya*&a<lPgk? zWt6qB(2QHa%gDRHFiwG;kv+@2a0WDm#DYqLCtu#i3Vex;eJk*U!T!lx`?sJh&Q~jN zgq_c(oex9_*nk<}QalzNFhB)V`52Xz)YVK)%*;WV5)#d<jArKIZ0us<>}rhQY^V&5 zb8${aaNaaFGGjg)d8z7QOZNJ8$xi3zPTT+QH6y#O<ZgqY)P~C3e{!X+@$R09%F2ws z|F%s^>uU;JyEZv_M$OEQ+rdSBPA!LbG+vzYZ(~G>#(|o)=zcfmR@V%B@Ax<uC2y_2 zri?Sgr+P*nNM>h+^K%s19yns5yu-urf2UzGGrwZd72Lz{tdy#Rh6C2z-lu%U}=5 z9-u}Gs6o)72W|!kef|3H9Rnjn&A&jV1lG$80t~heT<ZLc3<5&z90CG67>zeG%;)3S z!D#Ft$UdJhj)7T#S%I0Ed5z%Q9&k|q{RYa64E8qmHlR>sRAUkZ6<fw^>}>38q5_PJ z_otrojoQ;#scx&R&8Yn^a1Y}TM!t8q{{FrY*)?tV-hcA{K$+Y7Um%k{)P5cfCJg~5 zPA&mP1|d$63%KSpGlE>e&oG}kj-OASkBM)M5O({8l^Fz0)Ya70)Q!c&#Y6>|&VWi+ zC0q5X#ywHK=l=yVK45&fXXmu8s7t^9-g@`%(?1RdMg|AwWTvaEml-4&+8n&N8M(Qn z8Kt>cxHx%0O?h@UZbl{vF;Nj=b_Nz^4sjt~c6K&a32`w|VIe^QeqJ7K5f*l44n{6E zR&E9c0R<68k^O9}4BSiEb}&wL;ALIP;2<b$!XPPG&;zclw0*z)eFAF6#@blw+X#tU z3W-}Xf+`>(aZ3<oXuuFFY%V6Qrf$r}4o_t2Z0zc0=4uXl^F4$aCo+qqx9Zhb+2&VR z`FmNEl^8X$tnIVV-0G4%)kLRHi_f$p)W4(GE3{uv64Z4mVtC79#j=foo58|Co*|Eu z=_dzs9xFQ=XC4;|*H2c)JbNa8CMG6H9#9DjYWw<rv3YAF@WjT3LH~=*Uz;z62C9OJ zriy~bf{LPwf=rD63K{!XG4}r}e9Jg#1&ChpFOPwdVb#BTjLi&Z8MqkywsJ8uu&-v@ z!5HA625w<9axvO4a4|76GTSh)S+HCAGsH9GGt@IIU|?lfzzu433w(+F@<iaRjere< zJ%|)|D*!3e4GoM<jX@Qkx*enWwzC1@MwVvGXU`UPtNBVMMl&!nI5O^F%3{i8U}n&9 zkSt&-U}o}V^krgVRAyk3Vl7}`WRPSj=miD-lURXg4Enxr4GkCy8DoV_6-6DHG#Phn z-3kh&T?`D2?F?rbm>E<ZB$z;swShQsJp;=E21bSjEMQlDiv{N<h@*C$1-0`T85sUQ zXR>6y%)rbLypw_X|GiBjmP|YT-*Zq9v7FA#$izIKc|9`|a~T7p2m=En6C(pN0~hlP z2BsH`I~Z4PWnf_0TqOZ&6?}Os@D`kxK&{T$T7e^=Jf*EI%4p2UxN^e32uapAzeGUo z_0a#%Sp-=RFbFWnGHl(#rXVRGv*Z7VO-u^h`~E**5c~gtLFoSj2LAsK9Fkbr+L=1I zJNQrXv2wC=OE9?#`-pl;I!lKL$B4#A21#eLXLBbD=ZI!YCP-H@m9v#`SMj&A&0wD< za8lwH(>1nh+_(9qq~uswMdWyS#fv!|6qQX3I2jo@1vr^FC&&vHgId}Se2U5@3JeYm zObip`K&>)x6I<Y0Y@s%&=&^qb@<<^=EQ19IFj`nx2nz_A85_wl3W*9Zv4P50VF6H$ zDJY<(ti;Y1ntgde*`^Ywtji0pR8HKvvZiL`%DNh_Sf<O2ER42m;y3^Mf9v1Be}~u3 z*v>fj-}Lt%7&92N-etCd;_*HM1JiHT0}NaY#SRM0pgvPJOFdIR(@YMQH7tyr3~a1S z%$%%@JWPzIxWH}~0{Mu65mXLI@vu7Z@`E~P2f$u3U}aQbbzo&;mE_*VXv5gb07*rK z+S*{hfqGyJ_V%C*YzguqL#(!<vLGKLyQv+cxiQo4EsmE%ra#gzVX3yOkzeP2DjwuM z8wLgzcGd$7atzNM%&b|h*><z;XWPwwoa3YnyC+X1PY7Q&PYPd^P?d0}&>o?uQctBn zNb&6F-Y(1}Eg&NxD<CJpw(tK32KN6C7&!iaVBq}!!9hxnOMruo?Uam^h>VOBhl~_6 zBNK;|3^T8szz(J*oBahD1$Qt?Y~_^`VP%lp!L-|fpOJ}&t62Op0|O%{J{fm2H8LnL z2rybW@Ca_TXNqUaXR2pnVcNx{!XVGszp)!!)`Qwz+BO29R<zAu8~e9^Aq{76;RUN& zL2WQY18_8hV%dTrmNB+SRa8;U+>X&4R#CF6+cAP0OMHy%e2nZY?0?Le#8ns1dcR_3 zb<-Tiox(pZUjF8>{LrEpxwUH@ZITbv9eJ9TJ$X)-@cEms)<&$_v!o-@kb#jQ?Ef<s zG1dbN+6<Q+G+24XcwKqhcv)Np!v)KvnS;b~1hPa@#7cQ9McR0~L^`FH@^Y~%FoU{5 z+@N6^7IsEuULHnJ068!)GVErQV9;dXWi;Kw!z0Qf0qXHcGG#cZh|0;ZvdC%j3KhpI z<SQ^KG_V(|fx^r{jgdi3K#fUlg0934MvG07ml;7_ABO)29JmpgL1zc!Bxvw~`XAs_ z^Y#n41hIen_lcm8rT$w1a6m#T0Yd{u3k$|rhFHczVRJb~NE=dFiQOEOIZRE|l$F>Z zp(n=(DiJ{>gR+uZ*cSPz+4bue)f)SV2yqwhXv@m%5!s^nYF)*t?6j1o3IASPJNTcm zSz>1UhNhZ@BJ-FkYLlB<S`@Y(Pv4XhKSxh)Z{LA`U!O5BF-S2mun4g3V&G!nW%%M? zCKSPw!840zCC^D7Rv%^`-YG21LX1ot3_NVi?5tee%<K$2JiNT8m{~-anOT^58JKu@ zS=gC(GwlWq{V*<Y;9_85Vc_9mIK{=XgDGu0D=U|Sth@==4n}haUUmm1WfS%WMN{?( z{7j&}A}_Cq2?LV=lL8Yn(^kG6j6L9xdlRcI@J(C$i?)rxGXc<0hrPfTn{PIPmY@)` zv~1VYW~mhbb=wRL7@cDxb~5n(zqd)ql6S}dD-PVomdr}Jmdq@&vNqb<+S-w^46)8J z5e_0e4&0VJ4FQ%s4r-P>N-~x_4!V{g1=^8{f{Lb$#)8J8%7V;-j7-!1wlK||eC*hk zf2NG_OPRO*@ml(CArlMJ)W6vbj0~W1Sdn!ZgB-&v2U%~aO4%;iX~N5e5A$5(xh>7X zDJ;RKCB@8Xz-qv~>;D4==Kl{I1cbRng@lDq@$rlB35)RY^X_0;;vme&B`4~@w}6j{ zkB{F$lu=YvMra4q?(O_6jF&-aa|fe@gEEVp46k6k0H{0MFTf(uz+Nl?PKOeV3=#qo zOcE0mg!V9+GVn7_W#DDB*u=LLTY8j7O^=`~4JxC*#DXf_zp+p3-wIjk#|m2N#|pd^ zc+$?Hr_EX`aD+in2voj-%kIKh<b=t_t}YB3>M%1lVh|N!2lakJ_lnNUY1*>3C%i{v zWgpYczuWy=CLUnqDCzxj;xA)^Kv(yXMYA^f+lw)MT=TCi=HIuA$0u%j0IJn||37CD zWj(+k%b>-u$w56^lF^0TLDWUkMIlNkL?N3wg*}BMODIL5griiZm7`7O8pjneLG~U0 zA8b)qP*zX`<!nI>IS1YVUM5~%5oyND@!-*)3<pkDIcZiUIT2pQ9gG$Zq6}MAiv_@8 zC&0)cARxdbFhPe4lzHVCEgiV*#pA{E#p}gc#CI^MY}SU>W^dm@^Dd-5gJfC#SWv|V z4i-?BWmi)N)n0sz?4a^ZNK^#Wb6^k@FbDM+7)21-nT`4PW(gh7>@dgBBqql_>0ADm zUub#w@5$WG7i;hSHTUoHD_XLsx@r|mFkhB|uYujWJIM+EzF+EkTgT|lSi`vT;EF?k z?#8Z)+%a#)`t_hXC6R%FMT~Vh1202?1K$x|MiyR17A6iBPG(*PP;qa-#K^+Q!&}VE z%mnhbKe&KrW|HFPDCT_4;LjM(7|+CP<~`&sfjM!YIiHO(meVV4;ogm$!Zb-wL%s zBccrUpaED*L2%wPG+-<Qx1!h>nAzBs&7>I36PdU6{Cn$d#=n!f>2oK`ueCi>{|Wv3 zz2o*;##fBT=YU4zga1Egkz_r<AkLu7V8C$S!Q51gQB%xQ%v0?d&r1VVP6NhThFZoN zmJ*Ia?joL2-YW5KhAze)mNt$??iQXl-d^!Dg2#k~ly>}out`Qi3PdR==z}O-1vO9_ zkkeG)VUUwx;E|ToTcF3NC!{FH#;PGF#4A_4pOcYu2UEI(fOavzgMzY&0Y4)HzW_fI z{|?59+l(ZNH!w3Y?_f&bq*5#jDv-df8c_#PCeaCo&~%^;D!m21Kr#&^EeKi0>c54S zM&R-rlpsK*cu^rkAtR#C$i@yWt{F^C%!FYB1j<Tm%*aWDF{>cw+5Q8svUA&e|9!i8 z^WV3LNp0B~t(|G<9af$bf*V(?ZK_|+EUh^sYr(Di3(}@*>Ky6V^Pho{@j(AU#*mDb z=J@3HmOuY}C-^UGXj-*`feBnnfkIr4L5pFZgNc=tkC=mUv{<-u8gq_Vu2i~ml~k=< zk5sqZEU}eRd!$~8JyZCmAZ#l(Pi(Civz2BF8<RSy_)`A=z(GP$flWa}&Yv$HR949- z$%(KsUJig{vn`+!N`4okB?C93g@Yhk>7)b7ds{$RPY@oof)0XAf)ij_3{gRX!WCW^ z!Lk@bEU3*6t`zN<Oik25nTyHPgu&QIOh^#ih*V<)SCEjgmx8roHHpEs0cMP5yK}ew zVPrqn|F*j7<DxaUm`*P(so1o#rgkA?us~IwPyLMo9*MAQMvfcz83ktjd;IUyzvurp zuiMXTGJD&RIX$2p#>B9bfq}7&MU4S8cVXe6z{1MF#?HyaX2Zg4!^p<M#bl$;V9&s$ zz`)3`kOSOL_!3+AmcicstpKFsEo5nFXdn#gdYc-H?mT<;EOX@9vwxPKJ<Gtv0PZ(| z&E{ihb<i*7ZswlMy_ow0H!A}-qZ*evmm60YS1Q+5u18$#++2L@AUoM@*w|S4Sh!bn zf%;g=tTrrQXEZV}u(Gk+uy9#$Te0f1*t0MxurRVL<cB%Q=F1ZS@W?30Z32J)f(Ot9 zppIk^I0?$q3`K=7hl+q(8|K^2o`rV1V6KLBz8Dx83K$--ShE~vU}K1K;OS>>U}a)v zWn<=GV%^OY#lXhE%oMeW$$@PbV*mpaV}OGw!)nIW3M@=g94t2ACU+@2sMjg*E!GB9 z$}mXkOZmQi`}VDb6x3DXmf#+-DWfPSqi6y1=|BINnV1?^FwWZi@5sM{n?dzP5#vG@ zD;73z+_*cav$8R=uyZn~GBc_&GqJ0(u&}8bFfq<&I?u$!w4aqhijz^217xS4z!OM! zFt+fmjlf$08*ngKS_*=qiV@V`RWwy(vHD}dd;)}-<5v8gy#iF)qWHLhsh@?3g^7`w zos|jXV@3uRrl?J<4vZilvqF5#wpxLi*@lflibH{wkrnFWXR&?)-)wx}g1n5y$DE9& zoQ$T7EY^QanHm55XFko;_%CrYqdlX|=6`7*Uq>-8u<)>6W{_i0VrX&D?~&@3W~z~@ zk!DJgN|k2H=1JsZisA|3V>07&;bW4P<X~rE5KtEsWZ=~lVU%M4&4(!~Dk<8?bIIE% zDJj?}D#|g$$>njyiD#(@#3=|e3T7#TLJ2f_1Rie{umN?>|AIT`-)z7Qg(rfb*kJ?> zlrhA{GOB@xtU;L*(N1LnHB<SR*g+Fej5iqN#0*t-TP!Iro+YtU^84xQj0{oD5oS_M zJI*p@st9HIT3Kr^O|r_IKVhcW*;}ucB`hlO^GeA1HyxZ$^8W?0UuC_@;LZ@v@ZBMt zMNvROOi@wQl-HQgmCsYcMbS;g&C@+Bgs)1IPfS&lQH@heR!!4X%FNPPHB2H>Hd--E zGt4tGEL9>^HBGZjs!Fy<rB$Lusz<h4v0Y7)PauGgfjJmdVRG@S8*m43GjX$v?Pl^| zaAxpk+P%fuikV9u)GV`NRM0NaX42lp=*ytaw0oPrhYCMCBl`}fW(R(O06PX1p#}UZ z1_A}(X^WK%(oFNV*js3+Xzya=WKd?B=fJ68%4jMX5e^v;iuHZ__w5%@wekftArbqQ zLI3UBSo^p3Pu>c=wU2%BRtQqJfU*H&EO;~$RHuNt&tl@{#>|khW^*$kQxhf?WhE9S zQ4t{)V+9p+V?IU}WhEU((AcH95QCx-3us6T+(uJZV+7Sd(5T{LV(D~T7#O)CbMdF5 z@OhR>n<vO=%9@51wXXiR_Ux;FwO6k)PX5Zs#+Veb)%eH1RUhyD>-_h_IV7cu@gSqa z5614I#53D&xQ2@G{u65ov8XBZXisz~%yL-l9i4HbaXzE{g6P=Ue-nH7rPXZ%7<v1b zGb*jS{V)C1*MIX?Zm7$=RbTXU>fYO5?lST-Dx5yK_VmAd4^L^SOEUU&&Twuyoz^kU zal$zU2B!ai85me2S$8q8Gw?AmC^H%}Dl>y7*qGJS+1Qzxj4v`p++F>5_QIQtA7{EL z$r!Wl`sK#B=bsBx6yvm=<-Oeu%nZ{Q7+7Ai?qU!Gw=o+X0$5nwl*5$Ml#4lAIN36# zN?8jyi@BRwo4MK4#W<NI)V1WqWH~v7h2*rfG&LDyWaXF`ndIf<1Q|Fa)Yw8))p(?I zWaSjV1zD`Nbqu(l44$q2<_n&p0CkjY{@Msx>e~qXwXxI}1kKDc3PG|BL#(l&q7kT3 z0BIWVF)1@D8iBjXdW_17f*>}NsR@WZjY)0A>Eg8X*8cE@gFXKyGuk#<czL@u&HHzo zF*i=lIm#+zYR|v5th*w2rp7HZR^QW*zA?d&IY>|}&DS$u^Y;RF9*b<Zph`nf`IYwn zIcpi~Wd>P>9S#Y}Oj)u_3JgZP$qWSyC9(|+EwU3BX0fhjUdp?Zc?<7x-U|#*WIxLa z@(IZb%E~fpv1tfu$tcLX^M;9pi-t*Nux86v3v~<4VxGx2OJ)V*5~dY`SNVh)L>Qz5 zL<FQ*K*M00G%OiGb-ucWr2szzBa5`K91pX!91Ev_8ow8V8ffxeN?u$|frF7lQZ6|L zG{*8J))!PAfM)hUjRE_&kdj7QJ2tkEA(pX-QJjrMSxJS-)I><d*oZ}(U5`;&i4BzW zK^<k5Er)FX9e(=u-}Tw+8J!Q^VbrnSZ+vL-%EvLe&)OD0Vq!9U|N9_g-leCEp&K8Z z)?F}Z(ZBZ-cmI3YwTFR;VIBhmYZU7)27U%vh871k1$jni4oJic3dr#@aEPlZa58dA z$;%2r<6RCB@1VjGG`4F4Y9$*QI9EEDF-x;^uyL?*uyC-jNlHjbFtKrS@o@2SF|&z^ ziHHe{F|$cCiz_k;@rf%kN^r<1GKz5tDl%wmGiqyVX=!OSGJ+F{xR|(@kf;a~ACt1G zqLCRmjevR^it`wMu8yjUEGhP@ns~PL-$q8uiAxP#eW&O6t^Id~b(g5DPtw2hN0$Hl zw=&Uat(l?g%Vp2LYsrC9!6F6*mKUtM7`Pdt9Yon!<v2Ll*%_EwKq;JyQ;wT~gB=uS zG6F&->><ov3S0`jOk7gDESykZ^H@hiBFe@Wv^wKktnZg6+Hk)^6TG1TWXKpaY^*4{ zh(+bkJZ9}bSD9N_cdh+rzvdq=Xo(WT3I+z2R@Pk%oDAL$T40y-vopdS!@$8lM}bL! zn~6z^8*V!nD9l0K6S(b97{FZ<Q1=y-)sSso!F>16Q>G1n13<P~t^J$Ez{rsM|2gYU z*2@g43^yEHrA4GgnG)0)<2ZyFg_u=T7!-xXnN%6%m>3z^#O3&y73J7C85z~oRaF$2 znH886)DxJPnTi_J8P#Rg6u20<B-N6kf#LhsS0MHqXz|Ej8_?hmgZ*1@O$l00AOz0) zf<l&{&a`u-gA0qYw2YLDqzp3~kD7q0sG7VQhboJjvZ@5HtRjOLzpx^sppb~L0=ujt zgA%K%BBKnqxFVy7ptvHV9H*ipg9@{vB4jd>Q5!UR3?AVC4`P5)4MQxWsj47KE)f%F z*JDyv;$viI1J@BoX6Ay-K1{j&|1K=J@o)Z?&5QxJ=QA=+Qd_T>v@O5&P`RQ-J0sJ? zx({|t_G=jbJ}4^Q$ryLz8e{R6^c_<S3L1O^Tl_obANlvAA<>*s5R|4CGBB{pgVR(7 zXdLE%gSxP&2@A6vC)Wb53tUWGtV~SY92~413heA`u?@V8yiDAX<OE7;qQask46!^4 zyo?IG0lW#k1-vZQkrLXmg#zEei(CX^zky;FJV0(43tF53TH#_WXe<btnNSu~6kK?S z>DQq{f7w`f{awZs^~;TE^Iu;EMuz<i42+GeyBL@mrfg+oV&Gt6-SPjxW(!;JIPYd- z69}zq0HHNBA+)k8gqD?q&=OK$+CiUJz(j#{0_%EKW@ZIO28Moy1q>S)So9ej7y=mX zGkjoR6;fd6XPCgi%&>^%S|qqiaE^)C)WE>V7#mqwWb-!`97)>R+BOXK_Mn7nEV%y= zsJ3EYWHA5#oH-F(L-{%gq%x(ml`xgEb?|lwvT-so?qHO1P-Kzg=j2r5;^I)_j#Ut5 zR1kI$4iHWdW)WsoWAGN*2Db36Ky2YRP@|T?{_R_PP|E=_Xk*7{DrhVS9+yzFUe8{T z?3tx;DDq&_!Ly7DBv#Zo7uPX=`XjmHRMtIEY))ffU=0GrCS$9EA+wUXB?qUKI+rP% z8J9a(ICC5Gb!PT5uA9s^xtKLrdsw<ySFya}VC7<AG-bKQ0$RQFz=2ap(S%t6MC|x~ zZ!?dj5a*8n4>k)ans7jA77#6~Xu<-D5g{><_&o<(NlOk+RaILKPDx2yHa2!nE=~?E zR%R9!1y(K*R#q-f4h{u&HW7AqHZCp(RwfokCU$NP1`aM}CT>OsmK{u14*UkJj0;#d zupVH2z{<kv#Q_rIHehE|U~gdGz|PFRgQ?Adn_B_YU5n+hULm0^@Fn)`-`K*ppk5nj zO@R$)rJ0S5y^Rg1?rvw*(*{i(x3lU=fJYnIIRtDtY#6;aNCbOtkPeKB*vY{1|As{* zC_zFZ7c|N!$f+c0$)O`@$pXSk(w3|{{@>dsX33%?X2}Mc9^w|V<WLf^WN{F&<k<25 z-d0sh76(ztI3&cBNYGjX#=@dlhQe5FZBSBYRODn-WMmhdc8KW)Bm3W(Oilk8{(k$w zy6dkd)AhgW{>)%{_Ua!CH1=4uz%#?f4m^xZEX;DO3>=`|;0~tc4t(rP%#fTH%LXb+ zLH)14HUiILAtg8@Q7Vc~JH&K}b=R-YYZ(|BW-u_Y@w4t?5MV5IsApi}=MZ6%=3pt~ zY2!J;!_3L!$>Yh-tjVIvtHT$;9L-Y3Tfx`P%fZdW%3;ZC#^=xE&FsSNz~Rg5#K$#* zX(sbD_Gug|n3uD&2{G~W@fol(iLkOVaq#f+8nAMRu(ERS1n~zkIxsRZae!7;a`W=? z@d+?+a55zbH3%^Y?P6NNz{_a3iB*AP2cw|_7Y`?wf&))IHzW5hrZ5IRM($0l3QRi~ zxg9w985tD#3j`Pib})r)S71$GZD3_)-NCeCvmmH!kpxXT#@a~ywGntLB`NUsORS9) zobx1>LBif1yhO|flqNt}O5p8VP-<we1uqF}uRUUDz~H@sJJ@@JTwqkhUIw23zZp3G zUt?hUf6c<eB9hU215dE`1`Ti$;r;((BOez?6gp0QWt*ZUpN=AUta_WdC7+Qwn7LKg zl1~RZ9<3c&R0xWFa5I2WOx(<zQBhD?kWraYa0a6aW3+*oq$y)OBkS&eVe9`zu<rW( zX`)BKZ00||+*nTkHf4G6TLF|7=0MA3PKH+-g}6b5t*Nl62?rB1vjRJZ2s=9m6FW0A z2PX>?6DK<d3$p?n8*8irH=_b~0Cxg+0e1s8D>nzH0wZ|3j7M111e|fWKp_a4=mRau zj4k{EFPy<07E8-^7Cmin05NJi$3$%5aB#C^-tqsyHaANS2O|j6$dX-25<FG9P12HG z$q2#(i7JDc4&2I??0h1Y?0mu?{+DgSmh6185T>jpJD(_s`C}tI&p=n?fO3s?q_Lne zqoA>%GNa&}<IGIEj{o_`y6bl%OZ_i5mWJOA3``8k|DUtoWxc|{#~{s6?~owH&nO}w zA|fp=EzQCrz#_se&MnQdQhXcVF+OH-aS3TA1z86{e_?-d2dN0w2+nYUP{DZNDDilS zFsX3qZt<B+0+Mpf%tCV9oT6%=^(ayevW&9)YM`)^ltFIR#(s<Sg|uoxlZJ($g(ii< z0-z2WsEG$|*P0737#lGNnlPy;D={Q9b}*WqW^`M<<=?jb=l|_mae`6y`fWz(%9j(* z{kzU|iZPdQ?xBB6@7({lVCxCSsD1yw|2xlU!YI9&k$dvLr=YQdc?=9Je_3}i@G?j+ zggcm~3TBHic?)=pL<>ZVuyFIp@$>O9h)aN)eheH!Y8+AuQj7{xj8YQ3&@w_2QAYR) z6vlo7IUm%-1vT?POL0LnR-nF&IB10$lP04iqat|qle(I+;yfnJNxnIgBH#Tx`LBbq zde6LAAH$Y^ovgd~gi^QV?*8}p?;2*tp8A+(QC<cnhKT=ttnXN_Fo-f}FbX+LidUPj z#w00WF3Q9$!y*rAFp0>ED6?s?>WXWtS+m-RTdDc5`iOg~#j=JfN2ukqRx?+z_AvLb zPGy+Iyo6yj^HqkcVow>Kia(W*l3~?m&|<Y_Wr<~-Br#3xsv3)`n3kG}n5CMhgr|(F zysNUeS{O%!V5n%6Oq6Vxe7HimQYLGfXtr9lTAxgx+HHwDYLcQm{$JT7ZOH(dU9y$7 zWMUT6U}o1)lMrKNU{hokmSSZBaTr)t<mC97nK)GB*g2)tguR%g6to(&n6wnt6u23= zB{fl#gD+@K^{qX)mm>roS{D+xWDqnKI0+t+)7Fk<C@PF)j4dou1+6$zXG7}xfRc== zn7A1<tq6h=j=7pT%h&cI%XxDbA3gqW&-x9Ft|vk1C-3jG6}hV`UrxOF?-8T)os5|1 z)VZ<R?UvQi2N+{+-DFJJb@1QPTU-C#@70f;!)UpQk!$k5>;G>4d-U&|y0s(&69cGy zx0ZDmg9L*TqmKi>5H}yAkeN)Bd>TitJd4nd|Bp5cNtp=k`2S(ElDdf?h%c*dA^@fN zp|sGB|2H<vszKz1q#*J_QYIjIhhiZq6IDJh883xk?iiU|nIg^#zDoX9t`7d`yes*4 z@W0@D&M&~n!=oU`FCr+&FUZfsDJ0FLC?&?lCL}1p%fl+c$tfl-B`GH^&Y-9SPSFw) z{QP_za%y~Y*kTn_3RD_Ym{pV{peb7!RQtm^5(2T`B%ertmSBL&dT0U%4VPN#gIDQ5 zR*8aU#6TGrQblWPYeVJ~xi}p7E%^nk1cj_XGmVUe;6k47|2+pONlQT`NlPImNlQKl z8A|~r5laCjc}oE$c)1k`$~=&P0MK$zVP$4LCUrG!a6W>}nkz13>N;|!>eOXljZmNe zUk-)lh3hJMKV)3kI?ZqT;(rFLyZld7&bcP5s^VAruaMEOrN@Gs{ckC=v3aF?26$aW z%>U;suURiM7%=>En3K$$%u>u;!os4eZpv&a<IL>I?j!3e@1o+S9?Trc9wQsB(J9QQ z!K<diq{6JOYQ}G(?4s(bAEgkc9IBeboyD8YmnM=bQORA!Tg6{1P^wa_+Q!_)-O1a< z-z(6n(yTg(cN+gRQ8`r=K3;BCMHyK+X%2Qa7G@?kMpYFhK3;A%Ryk?iekn$&w_*&s z0*nfb0gMTZ1&k9I*%)^)Zg5c5m6H==W|h<Blvb1S;#6bMWYm;0QdARSR1*pTm#BvD zE*EH=%ufJRrb4n2ctTy^Z|oP)aw<X4swzuM$dC(o3IQ~+&SY!^4pwzF74S-1(0rX7 zBXkr&R76~iMI00xpeY6wwV3U^@h58YR|N;eSpUlj%uKKQG-dJ6Hr8GIYgcYqXlcQC zGoqoY?f2Z{|31%Tye^Q}8}3x>;+n23o~UiUI5q!ZO6HkHzV5!pXn$klYz^zJWu@nf zOI|WCf_7A}>;jKx`8)8kGRd(pGcj<mv$3*p?qDk33~s71GHz#6U}Vw<%}X&dZe;|I zG=XF}w#@|hEI=!pZ3O;4iG2o2vXDM7cx!|ysL#zL{7;sp>z_0$@7lG$K7(2U3;#c7 zRbt)6Ai_}Sz@^3?!4ko7l7mGI)FcoS7Bw+pvF31N@!}}sU&i`^pPh$+Nf0z1D#OMp zqQ(@fAjYU579hryAXXsOAjT}l3-0}b^l}P|nsCL6f?5QA0$;RaLEYfkLU29t7P2%@ zn<19bSWtusT)lyNA>jE?L6(F=DgS<7Irr~Z!6Emxwb!<>?)tOw?!P~a`xtp&GW-A8 zw0~>TA@I5>(EcS>H}KkouMQsitc+R=8qBI(`aA|a2|S$~otzVR4)A>7;a1=Y;9+86 z;^tuD;^b7|U=`uuU}a!rRA6EiVPazCWMpD}sldg+!I{dzn99Tfay_?(WdH|b1IGjo zCXOA9j1Ig^4jPv6OpN_Z^O=~KKq7()tO2Y{2CNCJ6Ic(heqd!~-NDqcnLA;Hgf^%R zS@<NjP#c6L1RzVeq$J-;*rRP8V1%?2MFOKDHZkyX?fCz36Q>X(h~f}o+VTG#WZDqa zWYh@u-e3l9GBW%>0Pa=97REBfDl!^FT7brkOpbp~Tw<)%lULGZ>^b)L5bLhr*Bc5d zDp)jsxiK&@NHQ?6mx0P@#vTV3O$IeVO(8W2O9nGROCd7}PX>2EPa$`S2!?RM2%&HZ zff*b#_?ehlSXr6a*f}^@xwv_FIC=T_`FTWyg@i!+m?T7Z{I}W6${?WtqIrY_L9|1Z zC<mtk11o6v41)+GBZCAh2Zx-fgovo9gb)uWr<|yeh^VNLAP+ykf`FiifPkP7Cl7~& zC@a6901pEbt0)gEvxERYKPM*#2NM$`lZ23vpdbT>l(@K*fFmbkAcFz}4`U#MC}SXl z0|P5#;5G%&K%u1M4#w_{D<DHpQj)%Zr6m6Tm6H4`;pdv_@(gtshm8PeeI+AwI}B(` zjG(1uyDzv^3fj<tXv9N#+S=Nng~3PK`2=i0#1V9Y(R%}bu=fT*P!tMrN$mLl4b+<V z-k=)ny+I2RVbC4{Utm<kW*!Gt2Mcf<7J(vA7~F(678VjWGZ!{yRAvMXUNbVz`&WJZ zzKWCu7o+&AOa96-y3Y>(%iI0$v^u-E$iI`UyZ+cupZZ#b`QBfte{Vi_Z(&~d%Z(+r zM<Lby_hL}4=44=C^<>?}Aj}l*ps6OrD9I?s&7>)$DQv-L&TPS9!D+#3#b+vHF3cq) z4C;;xfe1cO-&;u0gcnL9_stzn2q~JdfK-9I@8yi;+)QdLn(P|fT6}6kW-L}5R@@*H zJvc&GVmV^CqxeFE(iu}(vN*E2Gx<`5N?EEnK$SzeP`Pj$OBZ_=*Ho4r9NUGCv7F?% z&T@m}Cf_xo=PWNcUhq8=(gE$9<78xGWnpIK77!5T=i}vN6cFGQ6cQHZW@O-G;^k)M z5$57%WD{T#=HwC<R)B08VrJsyRp4P3;o)KC;^bszW?~ZN<>ldF;LsOk6crbjQs8mm zVdB}r7{6VCYXa8+E@rMBj61f*L-X_w2QIcP4gvuJ=LMJrb}+^}a49fIiijRk1m$UM zzb~M)6)W*n@@?$f*uSxm<OS*-gNj*uaDT9!6(uQw7RgvzTJrOQQjZM>DCyY1C=ln! z5%6+OhFEAPMH|#B+R4EE|DFT4q$MM$aUdaWDYWDNy-m`V!VrpO$Nv}Gq%Ap=q%A?a z!8XZ&`iBP`<Yg>{9b_z-9b_zd`NYI+goVV!Z8<o_#BG>a#Kdj6L1PPgLY9n5LYCY- zvWm8h46=$g+*}|Q6NtqlEN;ulAS`af%>`mH35z4f4#BM&xDz2Q8OGQ`V@`PC!wE~Z zoJ{8bc%CzI1uGjmGpb+y`<F@k!@qucMMKel6PW%m?fchJY9A2J*!tJ^&rc?9UDE)$ ze~h5i%ErI|F2{KoO}24xS~0U&bME;6e6x@^X!z&31D}w%35%qVxCt|e-~_c6CBP#_ zHyqp~6irw(Bos}A)L1k*w7B&7STYzh*fO~9v9W-X4;u$NCmS0l8#AW@7q<u(7dIO- z8z-{@6Qc+d6C)cBHya}}69Xgn4kk$lPA)D^W+o;E4!#{s5)Pa^oIws;4O~oII~cb* z@N#qWC@?Sw`7`x{%m1yL7(v^}B)0MLLDR=KP`&#WG?o4(_N~A(P`zsd+EWB-axe;k z7Nv323LIetl`9}dJKvEb?E-v9j(Ben5BA<56Bre-g@cEahh^9QFAU88zkt_DMuNua z7-K;rN1Wi1BPB^omL31^ZIlEJ2}Ob<21F<d!lQywkjeV*={Jmu0j^GQj53e@ZfDA6 z_WkEpQ&T*Fas8joe<y>&Ta$r-WdrLj1|EiI8-@5l6`mEZpos^gJBJ4+GZzOpC(~*c zMrI~PMix#k77i{hHCaUy4KBu?T#Q@_j4UFIj4WIl+%hJNAc6xF9o#aY0lOOx!XQyD z77kW9b~Yw%E;$|s4zAsdTNxM`SQxiDNHee-a5!)<ad`3Ab2D;F@i8*6vIR0o@`9Q! zega>7zt{-afEsQ#zF!J$1fB@|feb#`{I#(Wv;-$X&`?WkA!rnVPXLmK7>htl6k<Vn z$AObcNzsx~LJ^cV?roK{WKsf$ly;=CDWjRWqN$=NBfFxgCe!->k3Z*Fr2d?YWL~j_ zd3B1{+O>b!(?Mfe-TyL~B)}~&3kP`?W^G0$0ai9`26iE4CMI^abu6r^;0D(kj=7NS zgP_ImpaCJcLk$gt1r<e=1&u|!8GCQu{FlidIQ8evsi06ttO@sVP+??L60u}Z60w}Y zz{tojfnfmy6GIs@lL)BPf-MK%!MJie(+fsM*lKXd1R|srfmjUA$_QEv{x5tY;|j=f za7G68f0>M1z`ihXkYQofW@i&%X3}P06k=m#Wn@~%!mP^9u!eIsX!{g+IX{{Y7!^&8 z1(i(|8Mpi^zIl_e_h05zHub3tj0|Q>o0z*<FEg+)B!c#?9&iv9v1D)%u~cKyWM*Px z;$&uGWn{Bq+`*XYAkM^U!@^+0$i~LZ#9_g5hdGDo4r3-e#~wx_21UmGjExKu+S=c~ zeEaf5P{`I&AJR<HfBRMdv~8rYP+MCVGN1c?Cu8D7#^kNvnKm&i{<+T-%D}+*|KYz( zmac!V8JHQQ9C#S*L96;1Bw3stL5%?D5)MNHW>ZB`d6t#`GMkz}p&!Yzit!@rAqHlK z1P5+r3vo#kCI@~&6VM3OW^qXq&_I-fl$fMR0Am0%lLK=A0~0e70|TP~BNJmg69dBz zrr=GCZOl8E5;ikQvJ~!Q)CVv9{sNiR{Tpioc6cm!B%e{4*_iR-#OEJbRxwI|Mq9l8 zzhIGJv18C+FlUr?=;P$&)RN?t($eJB(z4_=6E&B%((=@b<&D+K;?2}bFzDiK)0`zX zTWTe*=rYMw8rvjyYaEe0uW?EAt_FvT7^A$nyo9!nmWd^crH&_yhfWwrq;?udrgj-m zJI_g;pS(Y{1<g(P7+D1LRZPT<6h$QBHS;x@G-dSp?D_in=JWmMW1Y{pp6@*$GasJ} zv-l3CRSsejQ$=KC*cn{axr}6(xiu375*bt#Rdz5%I|!&dfR;5Ys2QlOS7TK(v;-9w z@^Z>129^gbnHE?wT8gVmDCw*0XFJcvB+q8g#>8f50a_Xf+LjkvsQoSW?H8NBPoIJ& zzMjCAIL8*gEffS#e}M)!#K9|i7(v6D;MELjrY3fb=4K#hY64n830ic-WNakIC@v<; zC?Y1Vtj5g7&c_5<*JW;I%50OeGi&`G_hJvz>|5!K#;zUpm9iTo@-B3CtO^j|6j$0K zBc605KgK9GGh>mOY;&mF>Q=u-KM_7&DHT<&JYCz!LW#m|Z-+!Ly^0UNTWu{E?`p^h zX!z=TBt-k$mNPIhwEcg<0-DDXV31|F=CFp5m4{!2)s)qhmDOH;gFKVGypoKujFU`( z`~-P6D`6Wk8z~<#AE{W5Sl$T!Sg|;%ERG!B4E{W^JgEcnH+gP}-;#VJ{6_qZ<YU<f z^8e)}6<GE8^+gO=?fD&8efR@d(^zlGer5S3z#|~a$HK<MAT7hj&d4Py!^bV5a)Fys zfZKsPfxCg5g}a1N(3ruPS(S<D03+iB#s!QU7(Xzw$TQkA`ZF>!O3JyLgYv|e*uo+k zUxB}%wO-&=XrQ4bd+^c&NEK69#89ZHENCnU+JeC(D!`zuq|PiN4w^cLtTAWQUB0Dg zW77IUhku{;?#X5{37uHBW@%~J8rEHZzxMn0pDO<M{@=B^jMMgqcAq_c;n-OQMuvd@ zFPPu5*fB^koON*L<YAPTaTazK4;Bs<PY_NJpUpIzc^2;yfhAHr9K4cTSxlMCS*)cz z1-uQs%XqeOZsXd@!z0Gi#`BnonNKO6KcByzpP8Q#lvq7MTY>`^5*P}=<>mv14-A|P z{QTSu3@k!2-0TuEEZj2ujQlEmO41CB3@Y5(@{EiOjEsz)GNLNy*%{^8?b(^w4W&(v zfcwjZpmn@O-oeV=;O06bsDJgg=*!z8P=b9c1X`h?FA)1gAod9;s0tZl3mL^h!vG9| zCPHS$MxZHF&`JYHT4c7_DEofht$*K(UUsg%Bfnm<KB{BYl9sGK##Zs|=NV-gxz;c; zHLhPMot<;|^0h-v3``7e|6efQ2hZ<;Qr2oNCKg^*UK3syURF~PQ<-q45UwDRV3~BL z6xLMEWRV1!1M*i`uL|Fld@B4@<h}T7$*15HBqlGfEd@$;-cq16$ganv!mB4{#bnCs z&E(4KCgLd*&K1U+&ij<@x!5npFMI-wqRf2U0{jfpGTiKf3|yiz%-j;jj0~!R{Hg*1 z7X%pv1RVqu1RDfd1WSZe_OqX7zt8@kodpzj{_M=`l5!>i(1hg+nkECSmiue-1QcX8 z_HXTN5J?M^sTEDxl$8)mlmv|h!HbPRyJ3};*qAL+kJMi+&AQT@Fin5+UxhWLWlL97 zS1fFs*YkVvd`9N3Ku0FNUv5l7XHFeFcI(U$1||mY|1VhNSnL=?8DtsmIi$!l$cQq9 zGRLyUa)xrJGH0{qbEa~02rvjR3NWb)-DLeG@=c1}P{>NsP{vWnSISW)P$)(+NG4Gz zS1M7af~`XI8`C!l0R}NfeqM3$05Q;D2D6w9{{(>r0!#t|EYdPu><plU$H_QVScZjL z+<_NV26C!vnQY)?<du>KO;xI@nSf{qSy0I+&nPcuETF>fprU1h6lBo6sO|griJw5B zw)VF|ZP2*++rQ9N_BMYDA%``9)&nqt7LXSf!4ey26qi9zgk2FlNW!QHTI-?2#vHdx z=iSbi|K2l-+_}og$N1+3*QVCwp1-%40(mULI%`%khKVoU!YI$k%*ey2@$cThp8^W& zcV#e6ZFA082C5Z>85o!vST8e(Gi-K{6X9g!m(-UukaUnNketmkhj%3}hZL^{?*_>O zk}Q%SKWj+Io5*tTGV}1ua50K9X^RN6Ftagm%@<)5`7i9iBCg89z|1rW)HeQqV6&kG zxOR2ml94x=z`)3`SVD3S<1Pk8hHs2q;MzY{8?<}K2E5MlZ7ih84BAIzDQIa3S}G$V zAjrna&c?yU#3sNgB+Vem#xKpN%?Q~dUl_|!1Zt%io0^z|M(f1c)s&UkWEnyGG&aqj zFD%tu<`W}rVHD(Y{yg)np2BPsw{W4kTy6<TJ%7>|m>8V?1v0;4v10(Of&So-z|GAn zqQk8!;=}DK!p12pDXYV+CZeNk$!#X$#qA~%#vZ|)!TpQtt0<qIvW~i)vYon*`UIT? zI_zeOW}5aoZrpB)u9_i=A)1-&$%@IE2|5irx71%KzEgg$E+{U>Cc1-Z;}#7WVRmo{ zCZNDz04~287!EL8U;w4AS_el~85w>qS0x!9E-_JKRbwty35g5hi~`~g;tApn;w<7N z{EVs$O7bfE`Oov;=l{>oBF}Hn@6XT7FR86lq6o^6+J0YR3qdUsfxoeZph3WIpj{lG zS{JmD;|XNkt&kzMP@Yi?T)3N?fu;_aOu<E&xT!I8B>?hT^tAQdM$RR*9TI$uWgBjP z$h+9Pr)pX1?FIW@&0JPnvtn&k#fk{2KvkoZDDw^7j5c>?Ff#VcX!w)$<9x+xX03|{ z_MbU?>@Wi(LpuWlGiY^@2*bvm3}XKeIPi*!o2aswGP^SG;$;Ev!cq~JG!f?z<Pj8M zW@TjHmtkcW;pXB|<#aGMGx^WScz~0U(+@l_DQ;qBvO(;F7*m1R0<jHZ|HW9um_$?| zvyr04W+op%=gufFTwr*>z{21s>K*_o>9ryAlG@<K`k+-KZ$WjSB_k-iIafOHvGK91 z^0DzqGxBoqOEWTnR$MiL4q^b$vx90zMo~d!K@&C5iWyPC_APY>%GP;rDa{V(wPD@$ z_tT`<C3F79Gc9bd4(_Y{yPJWDp@V^e(FVNEgq@+*A=aOB0_OtG4V(u!?{j|OWM|-% z=PclC;G7Q?dcgUglS`hHk%5t&g^8Jyjk%7IfsK`og^P_{m6d^IKFb1@4J-#(9<Z<- zVEMqp#K5A!a)IRm3k!=M2h4{>HsJkGHqg!8pb;+6!~}HxwxF?K$CfQySYDq$|67zr z?e{Iv8p=ig0vWBqZWLme>EO%4s>*83V$9mc$|}ym%F52d!o<QV%)rRY&BQFi!y?Ga z%?@%GHygW*ApZmrMiFswDIOkPRW7ax+>G+v_T2v5%-oW~B5M^vZUQGrP|L%{PXII= zSIA)R3u=3S*F1r?27*>VSqd5(w+nFCfb%>bhXB7ChX9u}BPSobGy^0O7-K=}&lw?m z-azYBKx<apw*1RbGLttq+hXiE-IL|z#fv|yXYzSYVu|^^;D~PusC4UKU|{|MUaxY- zL5iI%j4g_jnV<JF>o+#$Q08(jCLuNjVeml0hs{FjCY(F|f7l|VZX(1Any(U41PeH{ z2&tQ}v9PeRu$gnZv#_eN>2gJIl{1%e-C};s#=eY=QJGDRU6sR<&4SaO*Pl0%C6X<I zJ(9DQrIK|f=P|ZREZ5kcu)Spe&i0c-REUd<m6@4^3ABWTlY@(km6L-*6|!)JnT16a zvY3U7lZ}~$gOQ1W1$2TG2RAnZ7t0Pt{!Oe(96K2K9h4Qo?H8#Dyo|iustio3jEoZ) z80{JS8JHL(d3YZxx~G8-Ecy~#2-=<_@YYYD5H=G69;5>8%oh~51a+iA+vLD2SU^iz z*abLjIBb}~BxK{90~e=`tR*LhtgH=aamprH&>EF1n-sv*Mn%vV1b72oVJu@I19b3; z?f-#Iir}gIO=2MG-X;N%auCG~8o}ZL3vT3wXx5Ho)COyG5W364$RQ$T$;lxiVgn}F zcKrXgNdlz#%|>a6a>m$5(Du<n@Uj<U(5Mr;V8<55RWJW#G48+jZ(%*_u0MMiH~cI6 zo5Cbt^)H%%k)fG^fzceCx_fpqu>L==+1vuWXlt{HDTFpKgwT*vm<~9oii(@?v&ys1 zXT8tL;?H`Y^#d!jJZk}K1M7cQ7Dfipj&(>u12PHJd32C6HZ_^gz<7Y+1L!0yc&Wnz zO8=mKP?0vM+yO7_0!`S025i6uO7j-z3a@qs1~xSoI|gNjV>=l*|KD(M<mNR|WqHE# zg!7^JQw7$mtlt!v#5oj{IVGeOIGLH1<z(1IWw^Q7*csWBr6dKoE~qk2P+g$Pq$(~h z#iu#}yty}atAy$VX-4TCjIj=q3{1w#s*D#H7$<<n8RQv2sfC$AQblzKW5s4fMlG`O z{rd#8@aaqJU-0O8VG#pp!IQl`Bq<4k_BF#-EAsJ(2&;+k2ud>w@ruHVOHiu?<U3JN zl`JL>Y9Nb(%1rQTTrdk(dM-3tmQ^-gzV6h#RhyM#><XrAiAeEjv|>@4>KC6Bv1|Rd zzv@hLbK<S0F8Mp1X;Vc-z^sXXZ$j&lXDoIMVhm>-gjt!{gqc<d>=1a&{9O10^EY8O zmL2~;I2dyCnp6rf&JegD@j&9g1d9TP2%m_UkPIt3Bbyj67cU<Vp9(j)R^ev+&&|l~ zCjn~QNP%h<i4PJ?1riG+Hb@+hV3A;EG8Pqs#J7VGM#Ulyie6CUez6e%_jC)jLFW{J zY8Lyqg7A7pj7^Y}i-U`ui<wP8O^}UGnvtJN2pV9Zg_(s6+OeQCEeft;#KpkD1P!qE zMWuHW76u4#ZPCj1C|=H@HhsNofv-{R-(se=yj;ggXa0g#D7*ZB!J^J$$H2=V$#Bpi zR*0QTlE<CRgCmSBk|UihlY_%Vz)HwU%v8cvz+1>$%vB<WHHI@tAXX?=EJz}kHJ39* zAXg|?EJdQ6QIwO7l{cC>gf)aKnkR=jl{J+shlfjChJ{^FhMQYN1-u4WSVh&ufSr+n zU4UJIotfS6J}9C6Kj0t<YWzwwO7p2OIH;(afD#%LgQ1j(Ik^7Sek)L@9s4ad7I6ds zsCNJ!-VA09=1gKu;$&frjT8p&k7N)9uS#S<Zi~1q={$OyQLOrP_x*owcW!EL+qAj0 zeG`)~qk3Q2zlVR%zHVZaW8^(^`pm_nr%y33F|_~7WKm?XV-RAHV>s`ylt(~Uz*fLp zfW=;6g94Mhf+ml$tdXdZtdnek!UP2lD{(7nFL5vFNRDWp81WeCERJlROo3eSZ0Q3E zmqqSM+?Bd4_eA80+yjOG3S!DE+5+05rYu$hZY*8`Q36l7U(5az;1=X#7Lx&W*4e~l z__!JPBvmeOF$!=wa3ydxaItWeFbW$p84Ia0FktPj%e$LPFlvJqAE5Qu?cdsiQWU76 z0xkiI7z%|2jlr1=G%XD}FhNaSkQuav1KO)<Ut%>WqvJwW>HX@cem%iuWfiNJmlSXO zm&v-fD=@I<|BS`|es}v={r%0n<m{2tS5Ke1&cMXr@h_A40gD}j0D}y}K8G3HOxjFZ z64p%KOqD!r_M-NZ-jWmK7Ra%h2%AXT%ee@<NCyiCOD78_ODD)R$X#K(D)fx)CC@7f z0Zk?)9&J%eCQ}|yCO4iarc9=rJhvqti@lV5CjEzrpOJ-EL`sI6osUgKhJ~AfPn^$~ z0o3c{XB6Of;7{Oh;Ai145yaB#l$Aqi=Rz8}UqFjy(ZYwJkWmoYNe2}~pq4F4ms3Y; zdg$JN@AEI$9W7k+S8+{6@v`-0rHlV%GI3b@G3qh0FZkEItnZgI^V+j#4<EmB?Kr44 z(aONUbd1H0L6D)@!CGIKQGkU}nZ<;~nI)JdjirQzjZ=_=lY^62Sdf#KftiDm8=MRn zxHvT?a4>QxDF`zPGbsr|3lq#%s*pQ$JVM*%?-PO8FGZmB>!3&nZ9fAyl^6t0g3co| zG+>A=0<Hdo#6P6p!_Fou*t*Cr(>^-R&dJF-PDGAHZDFB@)pB)r`-GyuS3vH!|Nnw{ zBa0n_0pm@FY8E9CB`Z!ZP8XFhrBtOF&OXi-m1V-Kbq+D}a*9hyh#Pq8ToY%NW(s9u z5-?)ql8E7m;f&#m;f~>n;mzX6;>_a8;?Cm9;@zUQMV%kCYC=WROeKmdk~>8$MWaNy zM5RGxGS?iQNgC62rW!2aTFJ9meTl|qwWDfcvY^Q*Avwz^4s}%?E*2>THBlCBJy|JG z4_iiF(q7VEGG21M<atRpeo1-Be98NgEb@~5l1!4jnL-&v85o#WIS2@VR)PvJUSMQ` zjL?F5;38rs;7uiRe1ay7jCwJ$IkHT$GNSA(GJ4$dQjAh6k`BTWCXzdtqBpUtXzloa zV7rXv1uaG`DI-wfucoeLl3;Yeh{@il!HCI7fRT|=g+W1uU+F%)ab*Z9$H1A>7j!O5 zksr9w2le5<XhVmK3WY57wY6gli=KdbU`3$g90bAZw?IRj&Xo=h>bi2utRgyUf&xMU z!UD`}O1uiv44fM5(u}OS?9z;KA_~$BihRn_3`)wpJRF)_(u^AFoLp?$EYb|}0<xe= zLmM>T2q8d?Cv7e5#zs&trI0bU2x%+6x|+Hk6X=L4Q2Iw%$s!IpHV%|M)a*C$cUIR_ zn5s@bHq+nHLTh4h?cONC4Lrq}HCbX}`qC}?r-x-8t37{{(N-qADAmPQSwhvwv(eAJ zQbS(bqdHw8C??2USw>cvOU2l+CMIfr_!>}3Q~CdiNsDzRgE&LOP6n?32R19Kff~~X z92}L^Od2E^85ntZxfq!l!~{6C`MKD{WSF`61(X<+7<q+Mc^Ln*bGUN4Ca@Q<H?U7& zXJKGhU|+z#f&Bpc1$H*}T})XF5{zaW)4)|q;TO;WL4R!oo`6b$x1a@Df|f#{4h49f zT&%XXsyJlqNl@9;SkN4NiUW9aHIsmpk4;jJPD{(?ty_h)HRKk~7qClR#FX5_$e#1B zx99I<Umeg<uMExqUobylQDcx`*t?TK>i+=;PEm0aCIw+J(DJko4w^zDCfdS`DjdRM zJdDC(+-wY7f-=n948~%r65`+{hB)H^aYk`JDNrgC1vN3GK1eYYNG*`sAoX90MT$oi zG?D87E)YPc=qPYr;C#Tz!s#aoYd~s)7Vm3=j?S_93m#&#w}EW{bgp!eViDlu<>v*h z)L`Ra<zQwLVBwKw;N=j6be^=d8X*(R&_OtLHB(RrN*pwd1X=vgY+rLVZn3`r_ZDu! zyuiRd>n(G(c;xz<7BfxyySdlUJutYxgURyuEe1x=Ss=_WSkxG}7~{5^vNAF#30iW2 zax<@>C8wB>j0p#bVA}Ej)n*|XP-X<vTs!{XaNv|vG-1$?Q#9e)@&APbr;@4(gP4*k zh<D3jtA?HlgMx;h2|te}g9fJ>mnDNKmj{D8R~Ta$QzS<OXBuM~Qzl0yX9Yt!V>weL zM+Ij&S36@nQyX(9dk04s=Uj#voD;d$Ff8KQ%dnk&BiBiWqg=Nbu5!I$c+B;i;R}}z z7XvGo1cMlt1_NmGv_FFb7bmNOkeCUp12?Y;7dr=sDkql+CnpyJGZT|4BY5o!D;F07 zXkP(nnwXu7lbL~$RiB5EM~TD1!2xm>E2H#Q2i68wCe|H{(hi&oOb(1n+^;TylI2?| z$-l9GW2GeCK8Xc&!G$a>;p<QY!96d;LK8y+(AF-{Vt#PP08D@v_JG%g2pcmpuKSm> z?}@6sg!Y@A|MFPW{<fs&hm<jOfO_wY44|3w?JQ~xLQESS1o%Z5wOBN{n7jm|1^Wb< z1wl<=PI*NW0U23H@77_hyow168xN;2n>44S5GxA<3mZ2lHy?+P0D~~I2)hi2G`B3D z3WF-U7Kb*U34<xS6^AvS3$r_$1G_JWH@7ptyP%g)G=Gp#HhT(3x=<xs6?+NCPPSeA z+l0Qd{pQr*7Sv$S;8o|-;8z#Y7qMV47b@py<Cwuboo6}Y3Z@m@%XqdjY-8KScY@^_ z+fB|FEHC(<3w>ex#VI4i3|?%+&dSNf#lg+P!zCan$iL&i_hwcGA%z|PJsr}x`1uqL z3$k-4unP(aX|uA6u(GoAaq;k|^74uB^73&A^7CtRafonnae!7JL1U4DiIH81g@a#^ zhmV&_kc)*`h?j>4w66^mtwQ{uRnA-@-voFWL7R&jc$s;3FfMoCQt;<u%;%~H&HXcl zI&k_6GUf}`3xXEDg*tExurelq`-9A^I~bR5W&9@mEe$*rF6sLvHdf+qY~kP7LQn#T zmB7CG2$~`UEiHwJT71OLCtw4@poK^v?7cxgIARO00*?aIp8pRR82>+D;QN1J3xff_ zg3ylt55Ox2Kr6>0y*HQyN9<(a_<vy|JLnXlNbe1b!QLB;13|k}IQ~D_$gaR>VG-%Q zK?u58VJFC-ZTt!#vpIJBzp#nj0A%7O1`8(8aSx10hQsxVgH03s|6nth0*e9zXo~}6 z^Z;bom2E<n3_3#K#nBsuL7n)>*uo;v0$I@FWkp6~Veq0SVR7)vCuVhKM(=;ScdfK% zF<!ZIzNziD_5Zf)Ua5JVMeXnGCxWM#^8U^^eU>Th_bsNHt$)rlFf#BnFfe~)QDYEb zEZ@#A#K^BC2^ufB=dexEGKzm1%QTLee6#ouupVGLz<!#alixwiQi@raQ<PUqz?9L7 zyOFVvn?qkHoF$Syk~@NLI^ztk8Qj~McJQ3wKE-!N;1=^$&WpUa1)g#V39+#;vvY8A zGP1F8f>xDq^YaUU)+F)s^9pdo79<I9vGFtUa|s+{IL65&06oW;nThupFC(ui4>Mv_ z5}N>cRT7uK5TlSMZyk>k7k?rfXPpDr4o2zi4r~Ez4Q$M8JD8ju_!OAyn3Vh(7#TbT zYap$|FOafDO5&}+Q-LpU!P|2{4FcE#Bt7j|XxRc<AOK#0#LwRjUVC%|LLT8b0!mFb zpz$`)@km?vBxEhY3xv33EqRp0Et!?X!Te2%mI9zUi%Zm!QAyE~(?JFlf#3ovG8WWl z)z)T=1+4-S7ZW$LX9SJMFsn22Gq(Jj`EaqGjE?H&>;EP)cHg~a_3tH<2IIe<?gmcA zzyI<4J;&%3`7ajKPEh<8$o!5)jX{dBeKWrdBR{AvSt4VpAri*Fo{QOm*MXmjUqQpb zL;ysv^Kc4@@k$7(bF1^H^P2IP@tX3@6y(+r(h&9#ixi3!jug!l$`sBNtz;|XtrV;h zsS<7F?Go$}>Jjb~nZdP!dyl|w!CfM+xSorA<^3!0Q{=yloDe@hkAR?%5Elcpq=>Mv zst}imkPsI?55FLfDmRx1H#e8CkPr_KHyg8zBtL_UfDDtq%zharnH@~_Tls|@gd9Y6 zFoig9+Y31eF~tk*7h)3H!RWM&pHYdyRhkPVCB(15?ckumW5DCj!yLf#AH4p|X|p~* zBmWL2`z_K6HE9ysQj!9H3%|q`N=bnC97za#c_JzBB)0Ial!U-rFpEI~G^+-RXwbMF zcmWY;=NV|+4iv}G1!mqG_=3GRNCZYj>}KHk|AK-0{|itChvi3+|M#|;TXHFxTk`Gr z|6;4CrJxdIy?JD8p|&<?Lm6YNusUeY*BmtW&S(s)g4ozWjm3HqYaJU8aX~d!?ti(5 z?rJN^Yd_xdFUL{EpeD@ZU;0V`4HfBZepwcczcWi4Ys#3if1g<I6d4SPXAK4h<|`~} z41A0o4!lA;m`-vq2{9T$mUo?V;1m)!VYHJ255yjF@RCzB(PYx#)EBU1wB+(+bYpVk z@Z|Ith+zz23gL+23=qg+OlC^v$l|PKEa9l;>}G7`=;Zv#_=QPYl0%JAlS7-+l4B{y zbw+kj>fJ6NYQm%=1X>Vu#X()jl99=ZlZ%Oii%XS}NraJ+iIJC&gN-Q>v_yuDE0LFh zSDTNEX$K?!77h+}RyNT32OS1>CEf*mj0}7Zd<lFFd>{B&`AQhL>KGZ<Gcfuy<TLzd zU}liy7bsB#Wl`9GH)zRuq0JKk(26Dj$PpP&?QQ-(1y78E;;_B;hydRaZ9@Z4Bfc;e zyg|u1CSt25qZ$Vj<BtE3VBr7-6622lhqi-)2NXtNg^Y!fjG$#<pu+v$CVr6bpwx@) z(w3YYV$!yt!R$@qAekQyTw<0?B4U<IQeuc4Y;4NNrVLpTWoE1>s=>6RIO3l_bIRX? z`IT9WuO~5cuuUre8&}Oan}LzR@?RiR4eMnFErx0bUw3{+4IzF(6DAPBF2T)bqAJAA zXCkI9#-ORC#Urn(Ak3@EBgo6cBd@SdT1ZfpRnkgYRgKw-b)A;FmD)Njt$2oh1}26~ z?E>f;DuFLgKnQf$g^d98@O8*8>9>$UG*F?#SSW1ABxG*KWNv27C<;1VSAd<5ksUPr zAuh)V7E;$^V$x$&xAaX^U}EJo^srD1vyjhl;T8&y%}ZwCaEzC?NYZf#kz`Ux^kqt6 z^6z5wGYv_z72uld-SqF5Yj%mQ-rnnnRb9;H3W%rAW6bCZ0IdLG*z+%tF%o>1r_oLZ zX2v=P2}TCig-lGaGdvkU%a9j>4+91D4nfl$u{HwlKvNx{)nLYgd*=QNWN-RW$H2&- z|1XfK2pp1)pmRarZRQs=(cJMLOsnnq|6(&YA85_vI|oZ{J`-^baRyCBMqUL~ML|AQ zUSUNA1wP(&LQ+;Ts_G(ELaJ=)RvPOVS*+OBF$6F+FfuV_>dfv1Z(RkQ>hlG1m^mm7 zLXJ=c?>m2M$q1TV1&6389}^Qh9}_#9Hlr!{U_sECjG%dXbv;I~khmO^kQ^gZ5n6z9 z3M51n$FZ^_2Pjj@Vy1x3f16B0Q*8yf=Xy8)a?Wp6HQ##uu$r^!Tmi9+dH-f~1~4!( zgfr=~gfW*gh%tmZh;VbWh)Hvch_Uc0X!BU}F!3-dFzopMz=4mO&xAohf%6Iv!xa$) z<{eBC4m>=(JW>*j43gr7kYiG81islY==**F4Ozbx0Ckc;$GFA{n}P<N!TlREb5T&i z1s+Nb&st;CQswHZ?AUGQ&>Uow`_|u~kV*G!g|dmPke~Gx8#9?Kb5L0Ynh<B0A-2*i zp5NvxgCqy|`ie!5)wMv34L1`t{x1TZI>YA3z`(%CzzCXYWB}`9xBKVE;LIWaf6@P) z>{p@UAWaaQ#0C{&vSeU@;tfpK8RA%q8AMr%89do#8OmA17$O+k8KRh0G1P!Cvn+!H z%Nm9vCQF7@Osg0inJgK0f%LKzGla4fGu&q>X0Tx?W(Z>`W{`r4`LYx<B(fAU1cUfY zmJB;VdRf*m6oAYD)5Q!?9P$kLtYQEEvW78CV?EB0#(JD#9%~rGB9_MtE7&X<a#@cv zEMc-_*w4biU=C8lQp_-oZ56`|*5eFw*en^6S;H9Su~{-iupVbv$Qs5F!}6HH0LtcM z?`4o=4P)SB4P#(qdCZ{6WXaGCax;@9gF5p;1~Zo8{|}i~F+{QyGkCESGqkZVFa)p^ zGq|x7Gk7yuG6=I2GdQsnGqf`vXXs!&{(lh*1Bhm5W?RM34iaZ6W^jSh9!#qkT3Hwv z?3pYXR9K1`npqeaq*#wLu(2>O@Ut*5D6%jxXfUl|uw)Wp*u%7jL7!y}LpUTl7;+dG zQ1B-P2F6(o49qqR46KJ37}&EI7&t>17&vD!FmOpRFmTOaVBoG`VBmhhz`zs1z`!$) zfq~~10|T!Y0|Q?g0|P%B1A{;S1B2ia1_q%^3=AR)3=E=C3=Cpy3=HBG3=9%`7#Jia z7#Jk4F)&C)Ffd4+U|^8;V_=YRU|^5~;U)$K`3?pKg=Gv3ihT?WN)ikVN<9n=%8wWr zR4N!4R8<%lR5vg%sOK>-sPAK7(5zx$(3-%&pk2klprgXTpnHgcLBEcH!BBvK!LWsa z!N`Gu!8nV7!8D42!GeQ<!LovZ!D<o%gVj3*2I~k02I~zB3^o=F3^q9o3^p$q80=Ot zFxcN?U~pt%U~sZvU~q0?U~s8nU~qlIz~J_Pfx*3nfx#nzfx#<@fx(-Nfx*Xwfx*{< zfx$0<fx&+Q14F<%28O^q28Q4p3=APl7#Kn~FffEWF)&0qFfhb0FfhcvU|@(}!N8EP zjDaEH69Yry7tlRJketI5!obLo$k@QZ#&C>*nL*`$KLay^`TyGt%nUaFZ!?H6i2ToB zP+?&H-_M}JU=C(mf=R3YTNqRrY{2Zu|F;=b7^1*r%>UaAnhgB^Wf?RX1i>W8OnnCC z|63UJ!6xW4fK1S5u==0Dpbs`dpCRV|76xMm=Kr@Dj2Za<{a`R=5CoGd|1%g&!R|3- zu>60U!IZ%YOoH5I4pwgtw#%GB;D0}ZIoL*X2HF3z4CV}SU=n14IfK#v+YIImE?^Ni zFzEp%eg1D@FlPt?vqQn`Ffcm;%#H$^8S}rN!IFXhzYBvU*cM9$K`>kP{}u*I201VZ zvc;0Y<$nf)C4&c8z0d#K43-Q*U^d8PO9qgcmSCS+G4TKIXRu-r_<x(hia`*}mIbrr zz@*CmEeuu+E@09FEaJn!z+lA?1ZIbV$p|nR^Zy-#4LBTZz~N@YAn@OX!3G?9HVm@= z`x$H)<o;JP*f4-xXajbk4TA?*4an~{3_)Oa@c#@38-@@tI|8gL@_#>rCxhqz+YF&# z*M@@K8Ogx^KZ7BXLGXVDLljs%3M?K27LNgoGcqtRBr!xVu!3_t6N3PQ7=sf71Jgzh zey|7w0~>=Mv_NJAs{-i&t<_~`V1<gaFt9T4fNp(a0hRMy3_?&g69XTE43y2nz{Q~D zSd^KV6O@`>nv+-rW-~B2G88dnG9)tOFa$BAGNdz<GUPBMG87?+gX{u3<-a=U6e=(i zl}G{~4bIHK%m8u;8v{E72LmSq7Xvo~4+Ad)9|J#w0D~Zd5CiCJB~b=325|-n21y1f z25ANv23ZC<26+Yr21N!X24w~n22}<%26YAv22BPn25kl%23-a{27Lwt215oT24e;j z22%zz26F}r21^Dj25SZz23rO@273kv21f=b24@Br23H0*26qMz22Tbr25$x*244n0 z27iVChCqfOhG2#ehERquhH!=mhDe4ehG>QuhFFF;hIobqhD27qywaQ;fxP^@+{B{n z%)IoX)RNMoJkZTgyBH){cQHt@E@zMgkFPTPf6l=0{{`sm^naQEL2HF1K{V4V1_p*5 zApHOT|Njgt7}hdoGOT6T&v1zG1A_#^dWM}0TNq9-h%>k_%wecun8MHwI(d-c1Vbl7 z5JM0HD}xKe6h=vK&R@vD%&?H*EQ2^hI71!7E(S41iT^Jd>KR&@FEg|=v@-BAC^0xP z1Tf??^fLPVFJ*{fxX;qeV9wyfkjGHK*ziB%f8YN}|CcZ<W!TAl;{RU;ZU!laWQJsh zv;W_*-uQoqL6;$hVJgE+hWm_@IJYu5FoZKSFzjTW%TUBHi#e8s@qhaNUkuC)iVWop zXBk)+d>PI%9$?aD@L@=0c+M!nSi|hhdgK4%{~P`vVPIyEVTfhOV3@_Qi_w(Pok@{3 z=D+X%vkYPkx(pQz4Gc3GHZg2t*v7DfVK2iiMjqA=|Cjv#z#z$>!{EtK&#;Bz9OD7z ze}5bQ*@FU_0d$bHC4(nJKEpnS;|v!Vl^G8*<+Jjz8nHUCR{g)iAi`kC5XunFu$*BF z!!yS3Om$3kO!dsiSls?QG4L_8GE4-8Hp5Ydhm2B;`i%aJVN9A#`AqYeix@Z<bQla7 z3>i`wG8sA<W-uIQxW}l?xQ&U2={)mdmenl3*<}Ac_|M0{#-PS9n_(`)K}KFi2}T9R zV#X%MYmASXoSEX8W-~ovp2D({<q~@$gA79)LoP!v!)k`_j6#eSjDd{Nj2VnIjO~mQ z8D}z{WxT-ng2|C7gejZpJ#z+gA@g1qCl)7`V3uN*X4W>=ZnhWyBK{ruck$o%|3?4Y z7y=n;7#bNSGE8Nd$FPNAC&PJ$n+!J@?lU}MWM$-L<YVMxRA5wO3}viltY)lZ>}6cU zxPoyd;}*sXj29RmF}`H{#Q2r*HxmOB0}~sQG?OBe5|a{>GE)&#InxxTIZWr7&NE$L zdc*XSS)5skS)19E*@iiiIiI<Zxt)0e^91It%nw<lSkANjXEkCqVx7i1pLGT6YSu%n zAJ}-<n>ZLa&iq;YSL^S+e+>UR{!RP0>ED+B4;e(kIar24p23D8kRg#Fks*trf?*oN zQik;mml=5&B^ad`wHWOfeHa57;~BFU3mGdIn;2UdXE81XyL}zw9>%kb*BRe4F);Bm z$$;Ig$7IUn#N^N9&lJa$%2dcSfoT%c7N%=VznIyXxtaNyMVYmj-I-&VQ<+PcE19P; zZ(u&de3$tV^Ec){%zv2wvv9G<vna8sv1qfnv&6HMvdm+7&hnf!hV?Y-Q#LNPT(&m0 z9c&-j&DibO1K0!EW7+%Jx3OR0NMP8;aF}5$!*=9Cjqw3<BeN^>R)#(%V-`uKb4=$L zbQ$6qQkZ?2>=_uCRxoxj)iQ2jQemxNvu3hp^kewIqQ*3Z=@`>|rf*Ev%)X4?jKK_9 zOok9M*+f`YF)%RLupDN1%d&?lmFXPwR)z{T9>zMR_iQ{2n;60EY{sL^1}xglrx|WB z-)CfJS;%mkg^N*~@h#JG<^V=+#=R_dtPu=~%ySslF&8q{GHhjXWnkd?&C$cC&FIIt zilLn$gwcrc2lIahW+p#|Eez(&j~SX7vYBo$yk#h7=wO)6n8K3I(8plRSi|s~VHwjr zW=+;SHZ3+$#*<8$EL}{(j9VC(SXP4C{ERA$%&Z~|EsU|uv)JA<-DD_bIM2exaF2Nn z%O0llOzW6^Sw64^F=jC2GSo7(F%<r9WT<3~V7bJY&cMtV#-PgbfME(l4YLu8BEuAh zdWIr~7zTZYZ443&yBKybI5PV(6fsCJ$TRpbW-*2`%w(9wFpFUZ!zKn6h6;vE1`&pE zhCGII3|rVjn07Fvv+^;fGCXHsU^(sJ=;&Z?XKQ0^Wocn<YGQ0;XrQmBtD~)@siCf> zs-mo<s30#VD<dr>3A*D%1boQ}A1@C#7bkdYIx`a^gO01RTY|y{wS)~UYRVoSx*)!C zqQVBXL?nTP4GM`08{AOUY)}B{OWdG<s?s4*VM7|4N(YEa2e?W`0R<Zd8(kd*S7n6_ zXI+#Pb}&W-Mkp(6=yg$!RM_wq%=QJdCxF?!F3ORLin=-q3a%0vE(#kM6BJxGxRqse zxhA;i>M(BP=5khcPUX_oVc5vU?X2v~t*gVZL0q|DBcr$-BbdP??rOD>iGhPxSI2dO zl(LKK21#WXkP9|2tGXtpYzPR9aCMPZRE*Ts*}&+WtemugLD^{ozcyG2gEQEg4Q$RE z*umB)WNvUs+`!PSuu<ngSI-UshNJ{-o)qPj#F&T;%!!d8I|Q{ih%38n5U+Y7f#B-u zY!GseXm{O!kd<cca+Szb04eV3YFF5>ATR=1RuN=EWTb?yj;_uICRMkDF1HO1i9H^= zI^MwwF%cV>S|cMiFt$eO>L`GG0`e8af2qo@Ad!SDg$<m_PRbcwSqX^>8>G56Fa%X9 zZjzF6*!lkfgOsa6S4f1i;s$$Z<;X-AnT;Y0T|t$bB^?wbQDt;>HVOzr0(K)GKa|14 zi_A#n*42T?fmvYXAeMI!JY*R`E>iZ~;E=FEAz5JqLr{eB1}0St5Rq!Z(3NZ<tq1~< zjJi7B8&U!zTr)RtIwy1qSb@YNb#)jwu&N3uD|CHj*ua>e{Pqp1NFr2(O;zA414t5- zPT)yx17jkLy+K=hgO(O3iLg6wU;`x<J22l=SEp<Tld^JwfWi(YQ1CGXL~LM8jI`31 z(A7~?1VwQ74hM!LT^+>@4S^95z5+v%^d<%eeeK8%ObH;F127rUP>@UmOa`LdfgveD zSy5MK3%IE&x`9Itj`#({gk3YNHZY3ekxqrkLwCI>xOOE#Q>}MM1Tqh@D+Uyxk-9qG zArVm424Uw2W@#o+Di?N+V3KAA%We>Ij){UR5ps@+;Mu^Ux`9QN4dm#=lpX9Gfe{c9 zMg_MG0tp@vGLlPC5t?TRY1;As14tK`LTH0}V}q48#26Ug8ikMIJf1FQ?~n~FYE0fC zQC(eJD01FGP*-|F9P62=uz?{YLQ%na14C%U24>X_%&I&7AFu%7Na+m@ArT;%kcbUT zVBtt<C>KScG*nY$WMm{Lb?WN4DZ3?fb-5`kxOF9TCGPm&kff|2pxm{S=@8SQt^(Ht zg$<B|v*Z7+Zs`qfJ&_v(5;7RAbayZv+^ixb|KCxNX+HxagFMrI27RXe4E9X>8T^^{ zGsH9PXXt0z&%nmCpGj#`ioB2`H`8v0QydHo@=Ti;UV`am42w7z9J1sc)SNwy927u= znw71QgMyW<(R_vZYD^Al(`FhuD1ZpHzDY(73LrwQrN_uY0Ys=(H5xf6fC#mmG9w2C z5TTZmW#pg$BGjVdjT{s}gqnYdk%NMNh|vzFdD~Ug<<0%G85JD)naUXqn93O(n93Of zn93Pgn94zr;U^2ojk7mtX~~1`4b;}ul5g0>*szDOA&9YI5o1FtV?!NdLnC8@4P!$b zV}mwhgA8MX9Akq6W5aGn3kF7p21bW1C|pYi3C4y~j16lU8;Thl)EFC785>j>8x$DL z9d<A&Zt^q+Q?6iYv!jy{h`ZU=&WPWUpGlFyo=K6Ro=K5`nPESZBExwmMTY-io&%HO zW(6gPVo5m=t+ZLo9z-i{*0VCocl2O7%uvsCn4zEPFvESO!wf78`b>uz5||D%oM$@B zz|6qUbeO@O=`ce)(_w}KOotiXGaY95&vcl9jp06%5(6VcKbYiaQex0&Qev=YQeuc_ zQevoQQet?|q{P4mcFubyMFu8@e5e!GgB_+1b+kW-$8?zKFu1|0$fW2XD<C7FE#Sf2 zFT=<$$LKHjUyjL~K}?K+fk8-+LvRNp@3!x}Kfd!aa5{1_^)dA`$TG+?O@Pw<n|{j5 z?_iv<No}{hqbTEa200c+26;wH1~o=i26;vchGH<^ltG3AByPeW!?c<~p3!KNOqe`q z-MX5N{4Pd5kgjd=KV_cCzm(a*#JElVh0JdG>k2zq7&pmZmD$0xdYk+enNInW`a3un zH_7i&+rh}VNq(0CSm{m~3;DIDz)Bm{b}-J`Bwq)jw#nDZxXWkDfF)8vBAevnig&Ou zI`GQ}sYS_q$aKoP$Rx=-6z||*+$L`?6DMy2QDq9!vrXPWX1BaHgsCMHCa)<2wp3XT zY+$JQ4#o@z9rkJL5$yi#X6#1nI_!$<^6awg((ED}LL34dd>lL+TpS!6Y#b~cOdJdx zBA}6LZO~Y-2%7+i0u4hlGO&Qz0^q3xCg^|{BL@?M7sCc&W^X3%U?)cJ4F{4Lypt3* zd<$0I!N?UDwSiUHiE)FFH-mSG(*_G|?;Y&_gEp9Jdv9P5h>qCE$k-RT!9sfjQ^yWQ zhLDIIjQ>GGt<oEWoFjHJFft0Z_DX|jjn>}CNCpY9GJ6SoAv-}!Hy12K0$4D?1vDc7 z#S%~&L`i7NZkXmB9I;`QY~%(b5aYjWr1yr&pk~8P#!rkNTwQiDegsjG5j&af7(clN zMeJn!#BAph8R@-)F$}DZL4on3tIJLXH4qgUv6DlNK>?(WL4iXKqHY#MohsuekUA9* z6&bOUlaoOetWK4a6ReJf5u|Qov5Kq9MimuTm&k~n;tCAKU^T_!3dm|ssk*vsR8<A5 z5o=&L1y*xPtO2BEgB{oy85viXjdC(zC5%!GGGHY#j8b4FV3%(ME76B4>4Yok1S#3U z3~>!u4Ty-0*vb0<riS-{OJpP{1c}0_PTJaxo2?_0V_Z{}T@#dDQxlY36E<|0Wk_sj zNK#PPm>da`P}sn%mXMU30iqLAH$*C@x@<^Rc2U@94b}$|Mv{&JNn0zsY-EUW4T;zo z<B;mI$=bo%RXNcma<hAYi8;tfxLuuayG#N=5@?16fDAJM+2sz_hbC<fl6D8#We&2- z9AuZfgFDzR25=e=h}g)%;1uZ`1EDuFadQbdM<hrqMmmWJ6xe|iueG8?o%Aji2F4W( z+}e>Fc$A$s@G3ijrF0#29YIno3}7ifP`er`B~fRsD7}ku1yo8v*=d8IvJ-=LNojE@ zgM@3Q3j`Gx7Z;b57MGNQVgy2JgT%06ZEbDW4GxJe#U%_3-W#-ny*JngMn!C7XLsG; zkl+%@;Jv{LCdSR}y5s)=h@f7u_XaDFLS|;TLXemZNQ{#csu1J=R19_#WG~E4h6bkH qn;9MC7)uz6BbhhId517<5b_R*f;3WgG0X>755<uT+9kz|+6(}Ng->+= literal 0 HcmV?d00001 diff --git a/doc/latex/Makefile b/doc/latex/Makefile new file mode 100644 index 0000000..9b448d8 --- /dev/null +++ b/doc/latex/Makefile @@ -0,0 +1,39 @@ +all clean: refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=refman.pdf -c save pop -f refman.ps + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex new file mode 100644 index 0000000..cf4ee6f --- /dev/null +++ b/doc/latex/annotated.tex @@ -0,0 +1,24 @@ +\section{Electrometers Library Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf Abstract\-Electrometer\-Class} (Visible class from the DServer )}{\pageref{class_abstract_electrometer_class}}{} +\item\contentsline{section}{{\bf Communication\-Link} (Abstract class to manage a specific communication bus )}{\pageref{class_communication_link}}{} +\item\contentsline{section}{{\bf electrometer::Electrometer\-Exception} (Detailed description to be written )}{\pageref{classelectrometer_1_1_electrometer_exception}}{} +\item\contentsline{section}{{\bf Electrometer\-Protocol} (This abstract class manage the Electrometers Commands Protocol )}{\pageref{class_electrometer_protocol}}{} +\item\contentsline{section}{{\bf electrometer::Error} (Detailed description to be written )}{\pageref{classelectrometer_1_1_error}}{} +\item\contentsline{section}{{\bf Keithley\_\-485} (This class manage 485 Keithley type )}{\pageref{class_keithley__485}}{} +\item\contentsline{section}{{\bf Keithley\_\-486} (This class manage 486 Keithley type )}{\pageref{class_keithley__486}}{} +\item\contentsline{section}{{\bf Keithley\_\-487} (This class manage 487 Keithley type )}{\pageref{class_keithley__487}}{} +\item\contentsline{section}{{\bf Keithley\_\-617} (This class manage 617 Keithley type )}{\pageref{class_keithley__617}}{} +\item\contentsline{section}{{\bf Keithley\_\-6485} (This class manage 6485 Keithley type )}{\pageref{class_keithley__6485}}{} +\item\contentsline{section}{{\bf Keithley\_\-6487} (This class manage 6487 Keithley type )}{\pageref{class_keithley__6487}}{} +\item\contentsline{section}{{\bf Keithley\_\-6512} (This class manage 6512 Keithley type )}{\pageref{class_keithley__6512}}{} +\item\contentsline{section}{{\bf Keithley\_\-6514} (This class manage 6514 Keithley type )}{\pageref{class_keithley__6514}}{} +\item\contentsline{section}{{\bf Keithley\-DDCProtocol} (This class manage the Keithley DDC Commands Protocol )}{\pageref{class_keithley_d_d_c_protocol}}{} +\item\contentsline{section}{{\bf Keithley\-SCPIProtocol} (This class manage the Keithley SCPI Commands Protocol )}{\pageref{class_keithley_s_c_p_i_protocol}}{} +\item\contentsline{section}{{\bf N\_\-Photo\-Conducteur} (This class manage Novelec Photo\-Conductor types )}{\pageref{class_n___photo_conducteur}}{} +\item\contentsline{section}{{\bf N\_\-Photo\-Voltaique} (This class manage Novelec Photo\-Voltaique types )}{\pageref{class_n___photo_voltaique}}{} +\item\contentsline{section}{{\bf Novelec\_\-MCCE2} (This class manage Novelec MCCE-2 type )}{\pageref{class_novelec___m_c_c_e2}}{} +\item\contentsline{section}{{\bf Novelec\-Protocol} (This class manage the Novelec Commands Protocol )}{\pageref{class_novelec_protocol}}{} +\item\contentsline{section}{{\bf Tango\-Gpib\-Link} (This class manage the GPIB communication bus )}{\pageref{class_tango_gpib_link}}{} +\item\contentsline{section}{{\bf Tango\-Serial\-Link} (This class manage the SERIAL communication bus )}{\pageref{class_tango_serial_link}}{} +\end{CompactList} diff --git a/doc/latex/class_abstract_electrometer_class.eps b/doc/latex/class_abstract_electrometer_class.eps new file mode 100644 index 0000000..814494b --- /dev/null +++ b/doc/latex/class_abstract_electrometer_class.eps @@ -0,0 +1,232 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 591.716 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.845 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 10 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(AbstractElectrometerClass) cw +(Keithley_485) cw +(Keithley_486) cw +(Keithley_487) cw +(Keithley_617) cw +(Keithley_6485) cw +(Keithley_6487) cw +(Keithley_6512) cw +(Keithley_6514) cw +(Novelec_MCCE2) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (AbstractElectrometerClass) 0 9 box + (Keithley_485) 1 8 box + (Keithley_486) 1 7 box + (Keithley_487) 1 6 box + (Keithley_617) 1 5 box + (Keithley_6485) 1 4 box + (Keithley_6487) 1 3 box + (Keithley_6512) 1 2 box + (Keithley_6514) 1 1 box + (Novelec_MCCE2) 1 0 box +1 0 mark + +% ----- relations ----- + +solid +1 0 8.25 out +solid +0 0 8.5 hedge +solid +0 0 7.5 hedge +solid +0 0 6.5 hedge +solid +0 0 5.5 hedge +solid +0 0 4.5 hedge +solid +0 0 3.5 hedge +solid +0 0 2.5 hedge +solid +0 0 1.5 hedge +solid +0 0 0.5 hedge +solid +0 9 0.5 vedge diff --git a/doc/latex/class_abstract_electrometer_class.tex b/doc/latex/class_abstract_electrometer_class.tex new file mode 100644 index 0000000..c112391 --- /dev/null +++ b/doc/latex/class_abstract_electrometer_class.tex @@ -0,0 +1,208 @@ +\section{Abstract\-Electrometer\-Class Class Reference} +\label{class_abstract_electrometer_class}\index{AbstractElectrometerClass@{AbstractElectrometerClass}} +Visible class from the DServer. + + +{\tt \#include $<$Abstract\-Electrometer\-Class.h$>$} + +Inheritance diagram for Abstract\-Electrometer\-Class::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=10cm]{class_abstract_electrometer_class} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Abstract\-Electrometer\-Class} (std::string com\-Link\_\-device\_\-name)\label{class_abstract_electrometer_class__abstract_electrometer_classa0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Abstract\-Electrometer\-Class} (void)\label{class_abstract_electrometer_class__abstract_electrometer_classa1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +virtual void {\bf range\_\-up} (void)=0\label{class_abstract_electrometer_class__novelec___m_c_c_e2a11} + +\begin{CompactList}\small\item\em Electrometer common functions. \item\end{CompactList}\item +virtual void {\bf range\_\-down} (void)=0\label{class_abstract_electrometer_class__novelec___m_c_c_e2a12} + +\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf electrometer\_\-status} (void)\label{class_abstract_electrometer_class__keithley__6514a44} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Visible class from the DServer. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{AbstractElectrometerClass@{Abstract\-Electrometer\-Class}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!AbstractElectrometerClass@{Abstract\-Electrometer\-Class}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{AbstractElectrometerClass@{Abstract\-Electrometer\-Class}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!AbstractElectrometerClass@{Abstract\-Electrometer\-Class}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Abstract\-Electrometer\-Class.h\end{CompactItemize} diff --git a/doc/latex/class_communication_link.eps b/doc/latex/class_communication_link.eps new file mode 100644 index 0000000..9b2059e --- /dev/null +++ b/doc/latex/class_communication_link.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 156.25 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(CommunicationLink) cw +(TangoGpibLink) cw +(TangoSerialLink) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (CommunicationLink) 0.5 1 box + (TangoGpibLink) 0 2.23517e-008 box + (TangoSerialLink) 1 2.23517e-008 box + +% ----- relations ----- + +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/doc/latex/class_communication_link.tex b/doc/latex/class_communication_link.tex new file mode 100644 index 0000000..47ccb05 --- /dev/null +++ b/doc/latex/class_communication_link.tex @@ -0,0 +1,106 @@ +\section{Communication\-Link Class Reference} +\label{class_communication_link}\index{CommunicationLink@{CommunicationLink}} +Abstract class to manage a specific communication bus. + + +{\tt \#include $<$Communication\-Link.h$>$} + +Inheritance diagram for Communication\-Link::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_communication_link} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Communication\-Link} (std::string \&communication\_\-link\_\-name) +\item +virtual {\bf $\sim$Communication\-Link} (void) +\item +virtual void {\bf write} (std::string)=0 +\begin{CompactList}\small\item\em Send command (data) as string to hardware. \item\end{CompactList}\item +virtual std::string {\bf read} (void)=0 +\begin{CompactList}\small\item\em Gets hardware response as string. \item\end{CompactList}\item +virtual std::string {\bf write\_\-read} (std::string cmd\_\-to\_\-send)=0 +\begin{CompactList}\small\item\em Performs a write read operation as string. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::string {\bf \_\-communication\_\-Device\_\-name}\label{class_communication_link__tango_serial_linkp0} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Abstract class to manage a specific communication bus. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Constructor \& Destructor Documentation} +\index{CommunicationLink@{Communication\-Link}!CommunicationLink@{CommunicationLink}} +\index{CommunicationLink@{CommunicationLink}!CommunicationLink@{Communication\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Communication\-Link::Communication\-Link (std::string \& {\em communication\_\-link\_\-name})}\label{class_communication_link__communication_linka0} + + +Initialization.\index{CommunicationLink@{Communication\-Link}!~CommunicationLink@{$\sim$CommunicationLink}} +\index{~CommunicationLink@{$\sim$CommunicationLink}!CommunicationLink@{Communication\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual Communication\-Link::$\sim${\bf Communication\-Link} (void)\hspace{0.3cm}{\tt [virtual]}}\label{class_communication_link__communication_linka1} + + +Release resources. + +\subsection{Member Function Documentation} +\index{CommunicationLink@{Communication\-Link}!read@{read}} +\index{read@{read}!CommunicationLink@{Communication\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual std::string Communication\-Link::read (void)\hspace{0.3cm}{\tt [pure virtual]}}\label{class_communication_link__communication_linka3} + + +Gets hardware response as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implemented in {\bf Tango\-Gpib\-Link} {\rm (p.\,\pageref{class_tango_gpib_link__tango_gpib_linka3})}, and {\bf Tango\-Serial\-Link} {\rm (p.\,\pageref{class_tango_serial_link__tango_serial_linka3})}.\index{CommunicationLink@{Communication\-Link}!write@{write}} +\index{write@{write}!CommunicationLink@{Communication\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Communication\-Link::write (std::string)\hspace{0.3cm}{\tt [pure virtual]}}\label{class_communication_link__communication_linka2} + + +Send command (data) as string to hardware. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implemented in {\bf Tango\-Gpib\-Link} {\rm (p.\,\pageref{class_tango_gpib_link__tango_gpib_linka2})}, and {\bf Tango\-Serial\-Link} {\rm (p.\,\pageref{class_tango_serial_link__tango_serial_linka2})}.\index{CommunicationLink@{Communication\-Link}!write_read@{write\_\-read}} +\index{write_read@{write\_\-read}!CommunicationLink@{Communication\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual std::string Communication\-Link::write\_\-read (std::string {\em cmd\_\-to\_\-send})\hspace{0.3cm}{\tt [pure virtual]}}\label{class_communication_link__communication_linka4} + + +Performs a write read operation as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implemented in {\bf Tango\-Gpib\-Link} {\rm (p.\,\pageref{class_tango_gpib_link__tango_gpib_linka4})}, and {\bf Tango\-Serial\-Link} {\rm (p.\,\pageref{class_tango_serial_link__tango_serial_linka4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Communication\-Link.h\end{CompactItemize} diff --git a/doc/latex/class_electrometer_protocol.eps b/doc/latex/class_electrometer_protocol.eps new file mode 100644 index 0000000..c453082 --- /dev/null +++ b/doc/latex/class_electrometer_protocol.eps @@ -0,0 +1,207 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 95.2381 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(ElectrometerProtocol) cw +(KeithleyDDCProtocol) cw +(KeithleySCPIProtocol) cw +(NovelecProtocol) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (ElectrometerProtocol) 1 1 box + (KeithleyDDCProtocol) 0 2.23517e-008 box + (KeithleySCPIProtocol) 1 2.23517e-008 box + (NovelecProtocol) 2 2.23517e-008 box + +% ----- relations ----- + +solid +1 1 0.25 out +solid +0 2 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/doc/latex/class_electrometer_protocol.tex b/doc/latex/class_electrometer_protocol.tex new file mode 100644 index 0000000..890bede --- /dev/null +++ b/doc/latex/class_electrometer_protocol.tex @@ -0,0 +1,182 @@ +\section{Electrometer\-Protocol Class Reference} +\label{class_electrometer_protocol}\index{ElectrometerProtocol@{ElectrometerProtocol}} +This abstract class manage the Electrometers Commands Protocol. + + +{\tt \#include $<$Electrometer\-Protocol.h$>$} + +Inheritance diagram for Electrometer\-Protocol::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_electrometer_protocol} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Electrometer\-Protocol} ()\label{class_electrometer_protocol__electrometer_protocola0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Electrometer\-Protocol} ()\label{class_electrometer_protocol__electrometer_protocola1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +virtual void {\bf set\_\-range} (std::string val)=0\label{class_electrometer_protocol__electrometer_protocola2} + +\begin{CompactList}\small\item\em Common Electrometer Functions. \item\end{CompactList}\item +virtual void {\bf reset} (void)=0\label{class_electrometer_protocol__electrometer_protocola3} + +\item +virtual void {\bf local} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola35} + +\item +virtual void {\bf remote} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola36} + +\item +virtual std::string {\bf get\_\-value} (void)=0\label{class_electrometer_protocol__electrometer_protocola6} + +\begin{CompactList}\small\item\em Common Electrometer : getters \& setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-mode} (void)=0\label{class_electrometer_protocol__electrometer_protocola7} + +\item +virtual std::string {\bf get\_\-range} (void)=0\label{class_electrometer_protocol__electrometer_protocola8} + +\item +virtual std::string {\bf get\_\-raw\_\-status} (void)=0\label{class_electrometer_protocol__electrometer_protocola9} + +\begin{CompactList}\small\item\em Common Get Raw Electrometer Status. \item\end{CompactList}\item +virtual void {\bf init\_\-keithley} (void)\label{class_electrometer_protocol__novelec_protocola24} + +\begin{CompactList}\small\item\em Electrometer : Keithley protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_electrometer_protocol__novelec_protocola25} + +\item +virtual void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_electrometer_protocol__novelec_protocola26} + +\item +virtual void {\bf set\_\-averagecount} (std::string avercounts)\label{class_electrometer_protocol__novelec_protocola27} + +\item +virtual void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_electrometer_protocol__novelec_protocola28} + +\item +virtual std::string {\bf get\_\-knplc} (void)\label{class_electrometer_protocol__novelec_protocola29} + +\item +virtual std::string {\bf get\_\-triggercount} (void)\label{class_electrometer_protocol__novelec_protocola30} + +\item +virtual std::string {\bf get\_\-averagecount} (void)\label{class_electrometer_protocol__novelec_protocola31} + +\item +virtual std::string {\bf get\_\-averagecontrol} (void)\label{class_electrometer_protocol__novelec_protocola32} + +\item +virtual void {\bf clear\_\-registers} (void)\label{class_electrometer_protocol__novelec_protocola33} + +\item +virtual void {\bf average\-State\-ON} (void)\label{class_electrometer_protocol__novelec_protocola34} + +\item +virtual void {\bf average\-State\-OFF} (void)\label{class_electrometer_protocol__novelec_protocola35} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola36} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola37} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola38} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola39} + +\item +virtual void {\bf auto\-Range\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola40} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola41} + +\item +virtual void {\bf zero\_\-check\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola42} + +\item +virtual void {\bf zero\_\-check\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola43} + +\item +virtual void {\bf zero\_\-correct\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola44} + +\item +virtual void {\bf zero\_\-correct\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola45} + +\item +virtual void {\bf auto\_\-zero\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola46} + +\item +virtual void {\bf auto\_\-zero\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola47} + +\item +virtual void {\bf switch\_\-MCCE2\_\-ON} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola37} + +\begin{CompactList}\small\item\em Electrometer : Novelec protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf switch\_\-MCCE2\_\-OFF} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola38} + +\item +virtual void {\bf unable\_\-zero\-VF\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola39} + +\item +virtual void {\bf unable\_\-offset\_\-zero\-V1\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola40} + +\item +virtual void {\bf unable\_\-leakage\_\-zero\-V2\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola41} + +\item +virtual void {\bf unable\_\-test\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola42} + +\item +virtual std::string {\bf get\_\-polarity} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola43} + +\item +virtual std::string {\bf get\_\-frequency} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola44} + +\item +virtual std::string {\bf get\_\-gain} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola45} + +\item +virtual void {\bf set\_\-polarity} (std::string pola)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola46} + +\item +virtual void {\bf set\_\-frequency} (std::string freq)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola47} + +\item +virtual void {\bf set\_\-gain} (std::string gain)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola48} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_electrometer_protocol__novelec_protocolp4} + +\item +std::string {\bf \_\-mode}\label{class_electrometer_protocol__novelec_protocolp5} + +\item +{\bf Communication\-Link} $\ast$ {\bf \_\-communication\_\-link}\label{class_electrometer_protocol__novelec_protocolp6} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This abstract class manage the Electrometers Commands Protocol. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Electrometer\-Protocol.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__485.eps b/doc/latex/class_keithley__485.eps new file mode 100644 index 0000000..52c986e --- /dev/null +++ b/doc/latex/class_keithley__485.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_485) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_485) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__485.tex b/doc/latex/class_keithley__485.tex new file mode 100644 index 0000000..0fb560a --- /dev/null +++ b/doc/latex/class_keithley__485.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-485 Class Reference} +\label{class_keithley__485}\index{Keithley_485@{Keithley\_\-485}} +This class manage 485 Keithley type. + + +{\tt \#include $<$Keithley\_\-485.h$>$} + +Inheritance diagram for Keithley\_\-485::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__485} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-485} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__485__keithley__485a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-485} (void)\label{class_keithley__485__keithley__485a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__485__keithley__485a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__485__keithley__485a3} + +\item +std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_keithley__485__keithley__485a4} + +\begin{CompactList}\small\item\em getter(s) \& setter(s) \item\end{CompactList}\item +std::string {\bf electrometer\_\-status} (void)\label{class_keithley__485__keithley__485a5} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 485 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_485@{Keithley\_\-485}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_485@{Keithley\_\-485}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_485@{Keithley\_\-485}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_485@{Keithley\_\-485}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-485.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__486.eps b/doc/latex/class_keithley__486.eps new file mode 100644 index 0000000..f7c4a96 --- /dev/null +++ b/doc/latex/class_keithley__486.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_486) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_486) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__486.tex b/doc/latex/class_keithley__486.tex new file mode 100644 index 0000000..d987408 --- /dev/null +++ b/doc/latex/class_keithley__486.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-486 Class Reference} +\label{class_keithley__486}\index{Keithley_486@{Keithley\_\-486}} +This class manage 486 Keithley type. + + +{\tt \#include $<$Keithley\_\-486.h$>$} + +Inheritance diagram for Keithley\_\-486::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__486} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-486} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__486__keithley__486a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-486} (void)\label{class_keithley__486__keithley__486a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__486__keithley__486a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__486__keithley__486a3} + +\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley__486__keithley__486a4} + +\item +std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_keithley__486__keithley__486a5} + +\begin{CompactList}\small\item\em getter(s) \& setter(s) \item\end{CompactList}\item +std::string {\bf electrometer\_\-status} (void)\label{class_keithley__486__keithley__486a6} + +\begin{CompactList}\small\item\em Electrometer status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 486 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_486@{Keithley\_\-486}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_486@{Keithley\_\-486}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_486@{Keithley\_\-486}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_486@{Keithley\_\-486}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-486.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__487.eps b/doc/latex/class_keithley__487.eps new file mode 100644 index 0000000..1133e20 --- /dev/null +++ b/doc/latex/class_keithley__487.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_487) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_487) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__487.tex b/doc/latex/class_keithley__487.tex new file mode 100644 index 0000000..46fb063 --- /dev/null +++ b/doc/latex/class_keithley__487.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-487 Class Reference} +\label{class_keithley__487}\index{Keithley_487@{Keithley\_\-487}} +This class manage 487 Keithley type. + + +{\tt \#include $<$Keithley\_\-487.h$>$} + +Inheritance diagram for Keithley\_\-487::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__487} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-487} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__487__keithley__487a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-487} (void)\label{class_keithley__487__keithley__487a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__487__keithley__487a2} + +\begin{CompactList}\small\item\em Electrometer methods. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__487__keithley__487a3} + +\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley__487__keithley__487a4} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley__487__keithley__487a5} + +\begin{CompactList}\small\item\em Electrometer Function(s). \item\end{CompactList}\item +std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_keithley__487__keithley__487a6} + +\begin{CompactList}\small\item\em getter(s) \& setter(s) \item\end{CompactList}\item +std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_keithley__487__keithley__487a7} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_keithley__487__keithley__487a8} + +\begin{CompactList}\small\item\em Electrometer status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 487 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_487@{Keithley\_\-487}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_487@{Keithley\_\-487}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_487@{Keithley\_\-487}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_487@{Keithley\_\-487}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-487.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__617.eps b/doc/latex/class_keithley__617.eps new file mode 100644 index 0000000..03dea0f --- /dev/null +++ b/doc/latex/class_keithley__617.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_617) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_617) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__617.tex b/doc/latex/class_keithley__617.tex new file mode 100644 index 0000000..919328d --- /dev/null +++ b/doc/latex/class_keithley__617.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-617 Class Reference} +\label{class_keithley__617}\index{Keithley_617@{Keithley\_\-617}} +This class manage 617 Keithley type. + + +{\tt \#include $<$Keithley\_\-617.h$>$} + +Inheritance diagram for Keithley\_\-617::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__617} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-617} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__617__keithley__617a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-617} (void)\label{class_keithley__617__keithley__617a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley__617__keithley__617a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__617__keithley__617a3} + +\begin{CompactList}\small\item\em Electrometer common functions. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__617__keithley__617a4} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley__617__keithley__617a5} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_keithley__617__keithley__617a6} + +\item +void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_keithley__617__keithley__617a7} + +\item +void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_keithley__617__keithley__617a8} + +\item +std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_keithley__617__keithley__617a9} + +\begin{CompactList}\small\item\em getter(s) \& setter(s) \item\end{CompactList}\item +std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_keithley__617__keithley__617a10} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_keithley__617__keithley__617a11} + +\begin{CompactList}\small\item\em Electrometer status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 617 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_617@{Keithley\_\-617}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_617@{Keithley\_\-617}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_617@{Keithley\_\-617}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_617@{Keithley\_\-617}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-617.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__6485.eps b/doc/latex/class_keithley__6485.eps new file mode 100644 index 0000000..f2b7344 --- /dev/null +++ b/doc/latex/class_keithley__6485.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_6485) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_6485) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__6485.tex b/doc/latex/class_keithley__6485.tex new file mode 100644 index 0000000..3da4e28 --- /dev/null +++ b/doc/latex/class_keithley__6485.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-6485 Class Reference} +\label{class_keithley__6485}\index{Keithley_6485@{Keithley\_\-6485}} +This class manage 6485 Keithley type. + + +{\tt \#include $<$Keithley\_\-6485.h$>$} + +Inheritance diagram for Keithley\_\-6485::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__6485} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-6485} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__6485__keithley__6485a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-6485} (void)\label{class_keithley__6485__keithley__6485a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__6485__keithley__6485a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__6485__keithley__6485a3} + +\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf electrometer\_\-status} (void)\label{class_abstract_electrometer_class__keithley__6514a44} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 6485 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_6485@{Keithley\_\-6485}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_6485@{Keithley\_\-6485}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_6485@{Keithley\_\-6485}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_6485@{Keithley\_\-6485}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-6485.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__6487.eps b/doc/latex/class_keithley__6487.eps new file mode 100644 index 0000000..43796aa --- /dev/null +++ b/doc/latex/class_keithley__6487.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_6487) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_6487) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__6487.tex b/doc/latex/class_keithley__6487.tex new file mode 100644 index 0000000..aeb5b29 --- /dev/null +++ b/doc/latex/class_keithley__6487.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-6487 Class Reference} +\label{class_keithley__6487}\index{Keithley_6487@{Keithley\_\-6487}} +This class manage 6487 Keithley type. + + +{\tt \#include $<$Keithley\_\-6487.h$>$} + +Inheritance diagram for Keithley\_\-6487::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__6487} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-6487} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__6487__keithley__6487a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-6487} (void)\label{class_keithley__6487__keithley__6487a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__6487__keithley__6487a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__6487__keithley__6487a3} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley__6487__keithley__6487a4} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf electrometer\_\-status} (void)\label{class_abstract_electrometer_class__keithley__6514a44} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 6487 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_6487@{Keithley\_\-6487}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_6487@{Keithley\_\-6487}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_6487@{Keithley\_\-6487}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_6487@{Keithley\_\-6487}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-6487.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__6512.eps b/doc/latex/class_keithley__6512.eps new file mode 100644 index 0000000..8e734fe --- /dev/null +++ b/doc/latex/class_keithley__6512.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_6512) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_6512) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__6512.tex b/doc/latex/class_keithley__6512.tex new file mode 100644 index 0000000..83a29aa --- /dev/null +++ b/doc/latex/class_keithley__6512.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-6512 Class Reference} +\label{class_keithley__6512}\index{Keithley_6512@{Keithley\_\-6512}} +This class manage 6512 Keithley type. + + +{\tt \#include $<$Keithley\_\-6512.h$>$} + +Inheritance diagram for Keithley\_\-6512::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__6512} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-6512} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__6512__keithley__6512a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-6512} (void)\label{class_keithley__6512__keithley__6512a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley__6512__keithley__6512a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__6512__keithley__6512a3} + +\begin{CompactList}\small\item\em Electrometer common functions. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__6512__keithley__6512a4} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley__6512__keithley__6512a5} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_keithley__6512__keithley__6512a6} + +\item +void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_keithley__6512__keithley__6512a7} + +\item +void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_keithley__6512__keithley__6512a8} + +\item +std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_keithley__6512__keithley__6512a9} + +\begin{CompactList}\small\item\em getter(s) \& setter(s) \item\end{CompactList}\item +std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_keithley__6512__keithley__6512a10} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_keithley__6512__keithley__6512a11} + +\begin{CompactList}\small\item\em Electrometer status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 6512 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_6512@{Keithley\_\-6512}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_6512@{Keithley\_\-6512}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_6512@{Keithley\_\-6512}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_6512@{Keithley\_\-6512}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-6512.h\end{CompactItemize} diff --git a/doc/latex/class_keithley__6514.eps b/doc/latex/class_keithley__6514.eps new file mode 100644 index 0000000..82dbb2e --- /dev/null +++ b/doc/latex/class_keithley__6514.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 236.686 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Keithley_6514) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Keithley_6514) 0 0 box + (AbstractElectrometerClass) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley__6514.tex b/doc/latex/class_keithley__6514.tex new file mode 100644 index 0000000..e440baa --- /dev/null +++ b/doc/latex/class_keithley__6514.tex @@ -0,0 +1,208 @@ +\section{Keithley\_\-6514 Class Reference} +\label{class_keithley__6514}\index{Keithley_6514@{Keithley\_\-6514}} +This class manage 6514 Keithley type. + + +{\tt \#include $<$Keithley\_\-6514.h$>$} + +Inheritance diagram for Keithley\_\-6514::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley__6514} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\_\-6514} (std::string \&com\-Link\_\-device\_\-name)\label{class_keithley__6514__keithley__6514a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\_\-6514} (void)\label{class_keithley__6514__keithley__6514a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_keithley__6514__keithley__6514a2} + +\begin{CompactList}\small\item\em Device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_keithley__6514__keithley__6514a3} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley__6514__keithley__6514a4} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_keithley__6514__keithley__6514a5} + +\item +void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_keithley__6514__keithley__6514a6} + +\item +void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_keithley__6514__keithley__6514a7} + +\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void) +\begin{CompactList}\small\item\em Novelec Electrometer methods. \item\end{CompactList}\item +virtual void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a33} + +\item +virtual void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a34} + +\item +virtual void {\bf set\_\-Test\_\-function} (void)\label{class_abstract_electrometer_class__keithley__6514a35} + +\item +virtual void {\bf mcce\_\-on} (void)\label{class_abstract_electrometer_class__keithley__6514a36} + +\item +virtual void {\bf mcce\_\-off} (void)\label{class_abstract_electrometer_class__keithley__6514a37} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_abstract_electrometer_class__keithley__6514a38} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Polarity} (std::string pola)\label{class_abstract_electrometer_class__keithley__6514a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf electrometer\_\-status} (void)\label{class_abstract_electrometer_class__keithley__6514a44} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage 6514 Keithley type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Keithley_6514@{Keithley\_\-6514}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Keithley_6514@{Keithley\_\-6514}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Keithley_6514@{Keithley\_\-6514}!set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}} +\index{set_Zero_VonF_function@{set\_\-Zero\_\-VonF\_\-function}!Keithley_6514@{Keithley\_\-6514}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual void Abstract\-Electrometer\-Class::set\_\-Zero\_\-Von\-F\_\-function (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_abstract_electrometer_class__keithley__6514a32} + + +Novelec Electrometer methods. + +Following functions are only supported for Novelec Protocol + +Reimplemented in {\bf Novelec\_\-MCCE2} {\rm (p.\,\pageref{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\_\-6514.h\end{CompactItemize} diff --git a/doc/latex/class_keithley_d_d_c_protocol.eps b/doc/latex/class_keithley_d_d_c_protocol.eps new file mode 100644 index 0000000..a56045f --- /dev/null +++ b/doc/latex/class_keithley_d_d_c_protocol.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 287.77 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.7375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(KeithleyDDCProtocol) cw +(ElectrometerProtocol) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (KeithleyDDCProtocol) 0 0 box + (ElectrometerProtocol) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley_d_d_c_protocol.tex b/doc/latex/class_keithley_d_d_c_protocol.tex new file mode 100644 index 0000000..b92a427 --- /dev/null +++ b/doc/latex/class_keithley_d_d_c_protocol.tex @@ -0,0 +1,191 @@ +\section{Keithley\-DDCProtocol Class Reference} +\label{class_keithley_d_d_c_protocol}\index{KeithleyDDCProtocol@{KeithleyDDCProtocol}} +This class manage the Keithley DDC Commands Protocol. + + +{\tt \#include $<$Keithley\-DDCProtocol.h$>$} + +Inheritance diagram for Keithley\-DDCProtocol::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley_d_d_c_protocol} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\-DDCProtocol} (std::string \&gpib\_\-device\_\-name)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\-DDCProtocol} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf set\_\-range} (std::string value)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola2} + +\begin{CompactList}\small\item\em Electrometer Functions. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola3} + +\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola4} + +\item +void {\bf auto\-Range\_\-OFF\_\-for\-K486\_\-487} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola5} + +\item +void {\bf auto\-Range\_\-OFF\_\-for\-K617\_\-6512} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola6} + +\item +void {\bf zero\_\-check\_\-on} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola7} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola8} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola9} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola10} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola11} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola12} + +\item +void {\bf reset} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola13} + +\item +std::string {\bf get\_\-value} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola14} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola15} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +void {\bf set\-Amper\-Meter\-Mode\_\-for\-K487} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola16} + +\item +void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola17} + +\item +void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola18} + +\item +void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola19} + +\item +void {\bf clear\_\-registers} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola20} + +\item +std::string {\bf get\_\-raw\_\-status} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola21} + +\begin{CompactList}\small\item\em Get Raw Electrometer Status. \item\end{CompactList}\item +std::string {\bf get\_\-mode} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola22} + +\begin{CompactList}\small\item\em Electrometer Mode : getters and setters. \item\end{CompactList}\item +std::string {\bf get\_\-range} (void)\label{class_keithley_d_d_c_protocol__keithley_d_d_c_protocola23} + +\item +virtual void {\bf local} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola35} + +\item +virtual void {\bf remote} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola36} + +\item +virtual void {\bf init\_\-keithley} (void)\label{class_electrometer_protocol__novelec_protocola24} + +\begin{CompactList}\small\item\em Electrometer : Keithley protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_electrometer_protocol__novelec_protocola25} + +\item +virtual void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_electrometer_protocol__novelec_protocola26} + +\item +virtual void {\bf set\_\-averagecount} (std::string avercounts)\label{class_electrometer_protocol__novelec_protocola27} + +\item +virtual void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_electrometer_protocol__novelec_protocola28} + +\item +virtual std::string {\bf get\_\-knplc} (void)\label{class_electrometer_protocol__novelec_protocola29} + +\item +virtual std::string {\bf get\_\-triggercount} (void)\label{class_electrometer_protocol__novelec_protocola30} + +\item +virtual std::string {\bf get\_\-averagecount} (void)\label{class_electrometer_protocol__novelec_protocola31} + +\item +virtual std::string {\bf get\_\-averagecontrol} (void)\label{class_electrometer_protocol__novelec_protocola32} + +\item +virtual void {\bf average\-State\-ON} (void)\label{class_electrometer_protocol__novelec_protocola34} + +\item +virtual void {\bf average\-State\-OFF} (void)\label{class_electrometer_protocol__novelec_protocola35} + +\item +virtual void {\bf switch\_\-MCCE2\_\-ON} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola37} + +\begin{CompactList}\small\item\em Electrometer : Novelec protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf switch\_\-MCCE2\_\-OFF} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola38} + +\item +virtual void {\bf unable\_\-zero\-VF\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola39} + +\item +virtual void {\bf unable\_\-offset\_\-zero\-V1\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola40} + +\item +virtual void {\bf unable\_\-leakage\_\-zero\-V2\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola41} + +\item +virtual void {\bf unable\_\-test\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola42} + +\item +virtual std::string {\bf get\_\-polarity} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola43} + +\item +virtual std::string {\bf get\_\-frequency} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola44} + +\item +virtual std::string {\bf get\_\-gain} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola45} + +\item +virtual void {\bf set\_\-polarity} (std::string pola)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola46} + +\item +virtual void {\bf set\_\-frequency} (std::string freq)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola47} + +\item +virtual void {\bf set\_\-gain} (std::string gain)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola48} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_electrometer_protocol__novelec_protocolp4} + +\item +std::string {\bf \_\-mode}\label{class_electrometer_protocol__novelec_protocolp5} + +\item +{\bf Communication\-Link} $\ast$ {\bf \_\-communication\_\-link}\label{class_electrometer_protocol__novelec_protocolp6} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage the Keithley DDC Commands Protocol. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\-DDCProtocol.h\end{CompactItemize} diff --git a/doc/latex/class_keithley_s_c_p_i_protocol.eps b/doc/latex/class_keithley_s_c_p_i_protocol.eps new file mode 100644 index 0000000..9879ece --- /dev/null +++ b/doc/latex/class_keithley_s_c_p_i_protocol.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 285.714 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.75 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(KeithleySCPIProtocol) cw +(ElectrometerProtocol) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (KeithleySCPIProtocol) 0 0 box + (ElectrometerProtocol) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_keithley_s_c_p_i_protocol.tex b/doc/latex/class_keithley_s_c_p_i_protocol.tex new file mode 100644 index 0000000..e79b2aa --- /dev/null +++ b/doc/latex/class_keithley_s_c_p_i_protocol.tex @@ -0,0 +1,198 @@ +\section{Keithley\-SCPIProtocol Class Reference} +\label{class_keithley_s_c_p_i_protocol}\index{KeithleySCPIProtocol@{KeithleySCPIProtocol}} +This class manage the Keithley SCPI Commands Protocol. + + +{\tt \#include $<$Keithley\-SCPIProtocol.h$>$} + +Inheritance diagram for Keithley\-SCPIProtocol::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_keithley_s_c_p_i_protocol} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Keithley\-SCPIProtocol} (std::string \&gpib\_\-device\_\-name)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Keithley\-SCPIProtocol} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf set\_\-range} (std::string value)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola2} + +\begin{CompactList}\small\item\em Electrometer Functions. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola3} + +\item +void {\bf auto\-Range\_\-off} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola4} + +\item +void {\bf zero\_\-check\_\-on} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola5} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola6} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola7} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola8} + +\item +void {\bf zero\_\-correct\_\-state\_\-on} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola9} + +\item +void {\bf zero\_\-correct\_\-state\_\-off} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola10} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola11} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola12} + +\item +void {\bf reset} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola13} + +\item +void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola14} + +\begin{CompactList}\small\item\em Electrometer Mode. \item\end{CompactList}\item +void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola15} + +\item +void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola16} + +\item +void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola17} + +\item +std::string {\bf get\_\-value} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola18} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf init\_\-keithley} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola19} + +\begin{CompactList}\small\item\em Electrometer : Keithley protocol dependent commands. \item\end{CompactList}\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola20} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola21} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola22} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola23} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola24} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola25} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola26} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola27} + +\item +void {\bf clear\_\-registers} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola28} + +\item +void {\bf average\-State\-ON} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola29} + +\item +void {\bf average\-State\-OFF} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola30} + +\item +std::string {\bf get\_\-raw\_\-status} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola31} + +\begin{CompactList}\small\item\em Get Raw Electrometer Status. \item\end{CompactList}\item +std::string {\bf get\_\-mode} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola32} + +\begin{CompactList}\small\item\em Electrometer : getter and setter. \item\end{CompactList}\item +std::string {\bf get\_\-range} (void)\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola33} + +\item +void {\bf set\_\-is\-Diff\-Suported\-Mode} (bool support\-Diff\-Mode) +\item +virtual void {\bf local} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola35} + +\item +virtual void {\bf remote} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola36} + +\item +virtual void {\bf switch\_\-MCCE2\_\-ON} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola37} + +\begin{CompactList}\small\item\em Electrometer : Novelec protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf switch\_\-MCCE2\_\-OFF} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola38} + +\item +virtual void {\bf unable\_\-zero\-VF\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola39} + +\item +virtual void {\bf unable\_\-offset\_\-zero\-V1\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola40} + +\item +virtual void {\bf unable\_\-leakage\_\-zero\-V2\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola41} + +\item +virtual void {\bf unable\_\-test\_\-func} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola42} + +\item +virtual std::string {\bf get\_\-polarity} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola43} + +\item +virtual std::string {\bf get\_\-frequency} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola44} + +\item +virtual std::string {\bf get\_\-gain} (void)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola45} + +\item +virtual void {\bf set\_\-polarity} (std::string pola)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola46} + +\item +virtual void {\bf set\_\-frequency} (std::string freq)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola47} + +\item +virtual void {\bf set\_\-gain} (std::string gain)\label{class_electrometer_protocol__keithley_s_c_p_i_protocola48} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range}\label{class_electrometer_protocol__novelec_protocolp4} + +\item +std::string {\bf \_\-mode}\label{class_electrometer_protocol__novelec_protocolp5} + +\item +{\bf Communication\-Link} $\ast$ {\bf \_\-communication\_\-link}\label{class_electrometer_protocol__novelec_protocolp6} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage the Keithley SCPI Commands Protocol. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{KeithleySCPIProtocol@{Keithley\-SCPIProtocol}!set_isDiffSuportedMode@{set\_\-isDiffSuportedMode}} +\index{set_isDiffSuportedMode@{set\_\-isDiffSuportedMode}!KeithleySCPIProtocol@{Keithley\-SCPIProtocol}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Keithley\-SCPIProtocol::set\_\-is\-Diff\-Suported\-Mode (bool {\em support\-Diff\-Mode})\hspace{0.3cm}{\tt [inline]}}\label{class_keithley_s_c_p_i_protocol__keithley_s_c_p_i_protocola34} + + + + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Keithley\-SCPIProtocol.h\end{CompactItemize} diff --git a/doc/latex/class_n___photo_conducteur.eps b/doc/latex/class_n___photo_conducteur.eps new file mode 100644 index 0000000..42a9d29 --- /dev/null +++ b/doc/latex/class_n___photo_conducteur.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 355.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.40833 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(N_PhotoConducteur) cw +(Novelec_MCCE2) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (N_PhotoConducteur) 0 0 box + (Novelec_MCCE2) 0 1 box + (AbstractElectrometerClass) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/doc/latex/class_n___photo_conducteur.tex b/doc/latex/class_n___photo_conducteur.tex new file mode 100644 index 0000000..67b8da6 --- /dev/null +++ b/doc/latex/class_n___photo_conducteur.tex @@ -0,0 +1,211 @@ +\section{N\_\-Photo\-Conducteur Class Reference} +\label{class_n___photo_conducteur}\index{N_PhotoConducteur@{N\_\-PhotoConducteur}} +This class manage Novelec Photo\-Conductor types. + + +{\tt \#include $<$N\_\-Photo\-Conducteur.h$>$} + +Inheritance diagram for N\_\-Photo\-Conducteur::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_n___photo_conducteur} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf N\_\-Photo\-Conducteur} (std::string \&com\-Link\_\-device\_\-name, short channel\_\-address, short electro\-Type)\label{class_n___photo_conducteur__n___photo_conducteura0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$N\_\-Photo\-Conducteur} (void)\label{class_n___photo_conducteur__n___photo_conducteura1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_n___photo_conducteur__n___photo_conducteura2} + +\begin{CompactList}\small\item\em device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_n___photo_conducteur__n___photo_conducteura3} + +\item +std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_n___photo_conducteur__n___photo_conducteura4} + +\begin{CompactList}\small\item\em getters and setters. \item\end{CompactList}\item +void {\bf set\_\-Electro\-Meter\-Gain} (std::string)\label{class_n___photo_conducteur__n___photo_conducteura5} + +\item +std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a2} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +void {\bf set\_\-Electro\-Meter\-Polarity} (std::string)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a3} + +\item +void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4} + +\begin{CompactList}\small\item\em Electrometer Functions : mode for novelec types. \item\end{CompactList}\item +void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a5} + +\item +void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a6} + +\item +void {\bf set\_\-Test\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a7} + +\item +void {\bf mcce\_\-on} (void) +\begin{CompactList}\small\item\em Commands to start/stop the data acquisition. \item\end{CompactList}\item +void {\bf mcce\_\-off} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a9} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a10} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range\-Limit}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2p0} + +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage Novelec Photo\-Conductor types. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{N_PhotoConducteur@{N\_\-Photo\-Conducteur}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!N_PhotoConducteur@{N\_\-Photo\-Conducteur}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{N_PhotoConducteur@{N\_\-Photo\-Conducteur}!mcce_on@{mcce\_\-on}} +\index{mcce_on@{mcce\_\-on}!N_PhotoConducteur@{N\_\-Photo\-Conducteur}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Novelec\_\-MCCE2::mcce\_\-on (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a8} + + +Commands to start/stop the data acquisition. + +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) + +Reimplemented from {\bf Abstract\-Electrometer\-Class} {\rm (p.\,\pageref{class_abstract_electrometer_class})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +N\_\-Photo\-Conducteur.h\end{CompactItemize} diff --git a/doc/latex/class_n___photo_voltaique.eps b/doc/latex/class_n___photo_voltaique.eps new file mode 100644 index 0000000..386632d --- /dev/null +++ b/doc/latex/class_n___photo_voltaique.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 355.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.40833 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(N_PhotoVoltaique) cw +(Novelec_MCCE2) cw +(AbstractElectrometerClass) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (N_PhotoVoltaique) 0 0 box + (Novelec_MCCE2) 0 1 box + (AbstractElectrometerClass) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/doc/latex/class_n___photo_voltaique.tex b/doc/latex/class_n___photo_voltaique.tex new file mode 100644 index 0000000..04bfcc0 --- /dev/null +++ b/doc/latex/class_n___photo_voltaique.tex @@ -0,0 +1,211 @@ +\section{N\_\-Photo\-Voltaique Class Reference} +\label{class_n___photo_voltaique}\index{N_PhotoVoltaique@{N\_\-PhotoVoltaique}} +This class manage Novelec Photo\-Voltaique types. + + +{\tt \#include $<$N\_\-Photo\-Voltaique.h$>$} + +Inheritance diagram for N\_\-Photo\-Voltaique::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_n___photo_voltaique} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf N\_\-Photo\-Voltaique} (std::string com\-Link\_\-device\_\-name, short channel\_\-address, short electro\-Type)\label{class_n___photo_voltaique__n___photo_voltaiquea0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$N\_\-Photo\-Voltaique} (void)\label{class_n___photo_voltaique__n___photo_voltaiquea1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf range\_\-up} (void)\label{class_n___photo_voltaique__n___photo_voltaiquea2} + +\begin{CompactList}\small\item\em device dependent commands. \item\end{CompactList}\item +void {\bf range\_\-down} (void)\label{class_n___photo_voltaique__n___photo_voltaiquea3} + +\item +std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_n___photo_voltaique__n___photo_voltaiquea4} + +\begin{CompactList}\small\item\em getters and setters. \item\end{CompactList}\item +void {\bf set\_\-Electro\-Meter\-Frequency} (std::string)\label{class_n___photo_voltaique__n___photo_voltaiquea5} + +\item +std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a2} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +void {\bf set\_\-Electro\-Meter\-Polarity} (std::string)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a3} + +\item +void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4} + +\begin{CompactList}\small\item\em Electrometer Functions : mode for novelec types. \item\end{CompactList}\item +void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a5} + +\item +void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a6} + +\item +void {\bf set\_\-Test\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a7} + +\item +void {\bf mcce\_\-on} (void) +\begin{CompactList}\small\item\em Commands to start/stop the data acquisition. \item\end{CompactList}\item +void {\bf mcce\_\-off} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a9} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a10} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range\-Limit}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2p0} + +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage Novelec Photo\-Voltaique types. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{N_PhotoVoltaique@{N\_\-Photo\-Voltaique}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!N_PhotoVoltaique@{N\_\-Photo\-Voltaique}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{N_PhotoVoltaique@{N\_\-Photo\-Voltaique}!mcce_on@{mcce\_\-on}} +\index{mcce_on@{mcce\_\-on}!N_PhotoVoltaique@{N\_\-Photo\-Voltaique}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Novelec\_\-MCCE2::mcce\_\-on (void)\hspace{0.3cm}{\tt [virtual, inherited]}}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a8} + + +Commands to start/stop the data acquisition. + +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) + +Reimplemented from {\bf Abstract\-Electrometer\-Class} {\rm (p.\,\pageref{class_abstract_electrometer_class})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +N\_\-Photo\-Voltaique.h\end{CompactItemize} diff --git a/doc/latex/class_novelec___m_c_c_e2.eps b/doc/latex/class_novelec___m_c_c_e2.eps new file mode 100644 index 0000000..4f963e5 --- /dev/null +++ b/doc/latex/class_novelec___m_c_c_e2.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 177.515 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Novelec_MCCE2) cw +(AbstractElectrometerClass) cw +(N_PhotoConducteur) cw +(N_PhotoVoltaique) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Novelec_MCCE2) 0.5 1 box + (AbstractElectrometerClass) 0.5 2 box + (N_PhotoConducteur) 0 2.23517e-008 box + (N_PhotoVoltaique) 1 2.23517e-008 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/doc/latex/class_novelec___m_c_c_e2.tex b/doc/latex/class_novelec___m_c_c_e2.tex new file mode 100644 index 0000000..e1dfb13 --- /dev/null +++ b/doc/latex/class_novelec___m_c_c_e2.tex @@ -0,0 +1,211 @@ +\section{Novelec\_\-MCCE2 Class Reference} +\label{class_novelec___m_c_c_e2}\index{Novelec_MCCE2@{Novelec\_\-MCCE2}} +This class manage Novelec MCCE-2 type. + + +{\tt \#include $<$Novelec\_\-MCCE2.h$>$} + +Inheritance diagram for Novelec\_\-MCCE2::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_novelec___m_c_c_e2} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Novelec\_\-MCCE2} (std::string \&com\-Link\_\-device\_\-name, short channel\_\-address, short electro\-Type)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Novelec\_\-MCCE2} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +std::string {\bf get\_\-Electro\-Meter\-Polarity} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a2} + +\begin{CompactList}\small\item\em Novelec getters and setters. \item\end{CompactList}\item +void {\bf set\_\-Electro\-Meter\-Polarity} (std::string)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a3} + +\item +void {\bf set\_\-Zero\_\-Von\-F\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a4} + +\begin{CompactList}\small\item\em Electrometer Functions : mode for novelec types. \item\end{CompactList}\item +void {\bf set\_\-Offset\_\-Zero\-V1\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a5} + +\item +void {\bf set\_\-Leakage\_\-Zero\-V2\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a6} + +\item +void {\bf set\_\-Test\_\-function} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a7} + +\item +void {\bf mcce\_\-on} (void) +\begin{CompactList}\small\item\em Commands to start/stop the data acquisition. \item\end{CompactList}\item +void {\bf mcce\_\-off} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a9} + +\item +std::string {\bf electrometer\_\-status} (void)\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a10} + +\begin{CompactList}\small\item\em Electrometer Status. \item\end{CompactList}\item +virtual void {\bf range\_\-up} (void)=0\label{class_abstract_electrometer_class__novelec___m_c_c_e2a11} + +\begin{CompactList}\small\item\em Electrometer common functions. \item\end{CompactList}\item +virtual void {\bf range\_\-down} (void)=0\label{class_abstract_electrometer_class__novelec___m_c_c_e2a12} + +\item +virtual void {\bf reset} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a13} + +\item +virtual void {\bf local} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a14} + +\item +virtual void {\bf remote} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a15} + +\item +std::string {\bf get\_\-value} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a16} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf auto\-Range\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a17} + +\begin{CompactList}\small\item\em Keithley Electrometer methods. \item\end{CompactList}\item +void {\bf zero\_\-check\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a18} + +\item +void {\bf zero\_\-check\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a19} + +\item +void {\bf zero\_\-correct\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a20} + +\item +void {\bf zero\_\-correct\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a21} + +\item +void {\bf auto\_\-zero\_\-on} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a22} + +\item +void {\bf auto\_\-zero\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a23} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a24} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a25} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a26} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a27} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a28} + +\item +void {\bf init\_\-keithley} (void) +\begin{CompactList}\small\item\em Following functions are only supported for SCPI protocol. \item\end{CompactList}\item +void {\bf clear\_\-registers} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a30} + +\item +void {\bf average\-State\-ON} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a31} + +\item +void {\bf average\-State\-OFF} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a32} + +\item +void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a33} + +\item +void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a34} + +\item +void {\bf set\_\-averagecount} (std::string avercounts)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a35} + +\item +void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a36} + +\item +std::string {\bf get\_\-knplc} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a37} + +\item +std::string {\bf get\_\-triggercount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a38} + +\item +std::string {\bf get\_\-averagecount} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a39} + +\item +std::string {\bf get\_\-averagecontrol} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a40} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Frequency} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a41} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Gain} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a42} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Frequency} (std::string freq)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a43} + +\item +virtual void {\bf set\_\-Electro\-Meter\-Gain} (std::string gain)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a44} + +\item +virtual std::string {\bf get\_\-Electro\-Meter\-Mode} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a45} + +\begin{CompactList}\small\item\em Common getters and setters. \item\end{CompactList}\item +virtual std::string {\bf get\_\-Electro\-Meter\-Range} (void)\label{class_abstract_electrometer_class__novelec___m_c_c_e2a46} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-range\-Limit}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2p0} + +\item +short {\bf \_\-range}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p1} + +\item +std::string {\bf \_\-range\-Str}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p2} + +\item +std::string {\bf \_\-mode}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p3} + +\item +{\bf Electrometer\-Protocol} $\ast$ {\bf \_\-electrometer\-Protocol}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p4} + +\item +std::string {\bf \_\-device\_\-proxy\_\-name}\label{class_abstract_electrometer_class__novelec___m_c_c_e2p5} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage Novelec MCCE-2 type. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Member Function Documentation} +\index{Novelec_MCCE2@{Novelec\_\-MCCE2}!init_keithley@{init\_\-keithley}} +\index{init_keithley@{init\_\-keithley}!Novelec_MCCE2@{Novelec\_\-MCCE2}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Abstract\-Electrometer\-Class::init\_\-keithley (void)\hspace{0.3cm}{\tt [inherited]}}\label{class_abstract_electrometer_class__novelec___m_c_c_e2a29} + + +Following functions are only supported for SCPI protocol. + +\index{Novelec_MCCE2@{Novelec\_\-MCCE2}!mcce_on@{mcce\_\-on}} +\index{mcce_on@{mcce\_\-on}!Novelec_MCCE2@{Novelec\_\-MCCE2}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Novelec\_\-MCCE2::mcce\_\-on (void)\hspace{0.3cm}{\tt [virtual]}}\label{class_novelec___m_c_c_e2__novelec___m_c_c_e2a8} + + +Commands to start/stop the data acquisition. + +This emulate the MCCE2 key ON/OFF (all parameters must be set before switching ON the MCCE2) + +Reimplemented from {\bf Abstract\-Electrometer\-Class} {\rm (p.\,\pageref{class_abstract_electrometer_class})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Novelec\_\-MCCE2.h\end{CompactItemize} diff --git a/doc/latex/class_novelec_protocol.eps b/doc/latex/class_novelec_protocol.eps new file mode 100644 index 0000000..de3bd1e --- /dev/null +++ b/doc/latex/class_novelec_protocol.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 289.855 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.725 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(NovelecProtocol) cw +(ElectrometerProtocol) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (NovelecProtocol) 0 0 box + (ElectrometerProtocol) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_novelec_protocol.tex b/doc/latex/class_novelec_protocol.tex new file mode 100644 index 0000000..4ff0c36 --- /dev/null +++ b/doc/latex/class_novelec_protocol.tex @@ -0,0 +1,206 @@ +\section{Novelec\-Protocol Class Reference} +\label{class_novelec_protocol}\index{NovelecProtocol@{NovelecProtocol}} +This class manage the Novelec Commands Protocol. + + +{\tt \#include $<$Novelec\-Protocol.h$>$} + +Inheritance diagram for Novelec\-Protocol::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_novelec_protocol} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Novelec\-Protocol} (std::string \&gpib\_\-device\_\-name, short channel\_\-address, short electro\-Type\-Number)\label{class_novelec_protocol__novelec_protocola0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Novelec\-Protocol} (void)\label{class_novelec_protocol__novelec_protocola1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf set\_\-range} (std::string value)\label{class_novelec_protocol__novelec_protocola2} + +\begin{CompactList}\small\item\em Electrometer Functions. \item\end{CompactList}\item +std::string {\bf get\_\-range} (void)\label{class_novelec_protocol__novelec_protocola3} + +\item +void {\bf reset} (void)\label{class_novelec_protocol__novelec_protocola4} + +\item +void {\bf local} (void)\label{class_novelec_protocol__novelec_protocola5} + +\item +void {\bf remote} (void)\label{class_novelec_protocol__novelec_protocola6} + +\item +std::string {\bf get\_\-value} (void)\label{class_novelec_protocol__novelec_protocola7} + +\begin{CompactList}\small\item\em Electrometer : cmd to get electrometer data. \item\end{CompactList}\item +void {\bf switch\_\-MCCE2\_\-ON} (void)\label{class_novelec_protocol__novelec_protocola8} + +\begin{CompactList}\small\item\em Electrometer Mode : Novelec SUPPORTS these commands. \item\end{CompactList}\item +void {\bf switch\_\-MCCE2\_\-OFF} (void)\label{class_novelec_protocol__novelec_protocola9} + +\item +void {\bf unable\_\-zero\-VF\_\-func} (void)\label{class_novelec_protocol__novelec_protocola10} + +\item +void {\bf unable\_\-offset\_\-zero\-V1\_\-func} (void)\label{class_novelec_protocol__novelec_protocola11} + +\item +void {\bf unable\_\-leakage\_\-zero\-V2\_\-func} (void)\label{class_novelec_protocol__novelec_protocola12} + +\item +void {\bf unable\_\-test\_\-func} (void)\label{class_novelec_protocol__novelec_protocola13} + +\item +std::string {\bf get\_\-raw\_\-status} (void)\label{class_novelec_protocol__novelec_protocola14} + +\begin{CompactList}\small\item\em Get Raw Electrometer Status. \item\end{CompactList}\item +std::string {\bf get\_\-mode} (void)\label{class_novelec_protocol__novelec_protocola15} + +\begin{CompactList}\small\item\em Electrometer Mode : getters and setters. \item\end{CompactList}\item +std::string {\bf get\_\-polarity} (void)\label{class_novelec_protocol__novelec_protocola16} + +\item +std::string {\bf get\_\-frequency} (void)\label{class_novelec_protocol__novelec_protocola17} + +\item +std::string {\bf get\_\-gain} (void)\label{class_novelec_protocol__novelec_protocola18} + +\item +std::string {\bf get\_\-errors} (void)\label{class_novelec_protocol__novelec_protocola19} + +\item +std::string {\bf get\_\-electrotype} (void)\label{class_novelec_protocol__novelec_protocola20} + +\item +void {\bf set\_\-polarity} (std::string pola)\label{class_novelec_protocol__novelec_protocola21} + +\item +void {\bf set\_\-frequency} (std::string freq)\label{class_novelec_protocol__novelec_protocola22} + +\item +void {\bf set\_\-gain} (std::string gain)\label{class_novelec_protocol__novelec_protocola23} + +\item +virtual void {\bf init\_\-keithley} (void)\label{class_electrometer_protocol__novelec_protocola24} + +\begin{CompactList}\small\item\em Electrometer : Keithley protocol dependent commands. \item\end{CompactList}\item +virtual void {\bf set\_\-knplc} (std::string n\-PLC)\label{class_electrometer_protocol__novelec_protocola25} + +\item +virtual void {\bf set\_\-triggercount} (std::string trigcounts)\label{class_electrometer_protocol__novelec_protocola26} + +\item +virtual void {\bf set\_\-averagecount} (std::string avercounts)\label{class_electrometer_protocol__novelec_protocola27} + +\item +virtual void {\bf set\_\-averagecontrol} (std::string averctrl)\label{class_electrometer_protocol__novelec_protocola28} + +\item +virtual std::string {\bf get\_\-knplc} (void)\label{class_electrometer_protocol__novelec_protocola29} + +\item +virtual std::string {\bf get\_\-triggercount} (void)\label{class_electrometer_protocol__novelec_protocola30} + +\item +virtual std::string {\bf get\_\-averagecount} (void)\label{class_electrometer_protocol__novelec_protocola31} + +\item +virtual std::string {\bf get\_\-averagecontrol} (void)\label{class_electrometer_protocol__novelec_protocola32} + +\item +virtual void {\bf clear\_\-registers} (void)\label{class_electrometer_protocol__novelec_protocola33} + +\item +virtual void {\bf average\-State\-ON} (void)\label{class_electrometer_protocol__novelec_protocola34} + +\item +virtual void {\bf average\-State\-OFF} (void)\label{class_electrometer_protocol__novelec_protocola35} + +\item +virtual void {\bf set\-Amper\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola36} + +\item +virtual void {\bf set\-Volt\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola37} + +\item +virtual void {\bf set\-Ohm\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola38} + +\item +virtual void {\bf set\-Coulomb\-Meter\-Mode} (void)\label{class_electrometer_protocol__novelec_protocola39} + +\item +virtual void {\bf auto\-Range\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola40} + +\item +virtual void {\bf auto\-Range\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola41} + +\item +virtual void {\bf zero\_\-check\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola42} + +\item +virtual void {\bf zero\_\-check\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola43} + +\item +virtual void {\bf zero\_\-correct\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola44} + +\item +virtual void {\bf zero\_\-correct\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola45} + +\item +virtual void {\bf auto\_\-zero\_\-on} (void)\label{class_electrometer_protocol__novelec_protocola46} + +\item +virtual void {\bf auto\_\-zero\_\-off} (void)\label{class_electrometer_protocol__novelec_protocola47} + +\end{CompactItemize} +\subsection*{Protected Member Functions} +\begin{CompactItemize} +\item +std::string {\bf check\_\-and\_\-extract\_\-data} (std::string resp\_\-to\_\-check)\label{class_novelec_protocol__novelec_protocolb0} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +short {\bf \_\-dev\-Add}\label{class_novelec_protocol__novelec_protocolp0} + +\item +short {\bf \_\-nov\-Type}\label{class_novelec_protocol__novelec_protocolp1} + +\item +short {\bf \_\-range\-Parameter\-Num}\label{class_novelec_protocol__novelec_protocolp2} + +\item +std::string {\bf \_\-function}\label{class_novelec_protocol__novelec_protocolp3} + +\item +short {\bf \_\-range}\label{class_electrometer_protocol__novelec_protocolp4} + +\item +std::string {\bf \_\-mode}\label{class_electrometer_protocol__novelec_protocolp5} + +\item +{\bf Communication\-Link} $\ast$ {\bf \_\-communication\_\-link}\label{class_electrometer_protocol__novelec_protocolp6} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage the Novelec Commands Protocol. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Novelec\-Protocol.h\end{CompactItemize} diff --git a/doc/latex/class_tango_gpib_link.eps b/doc/latex/class_tango_gpib_link.eps new file mode 100644 index 0000000..8bc877c --- /dev/null +++ b/doc/latex/class_tango_gpib_link.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 312.5 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.6 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TangoGpibLink) cw +(CommunicationLink) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TangoGpibLink) 0 0 box + (CommunicationLink) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_tango_gpib_link.tex b/doc/latex/class_tango_gpib_link.tex new file mode 100644 index 0000000..4641dac --- /dev/null +++ b/doc/latex/class_tango_gpib_link.tex @@ -0,0 +1,102 @@ +\section{Tango\-Gpib\-Link Class Reference} +\label{class_tango_gpib_link}\index{TangoGpibLink@{TangoGpibLink}} +This class manage the GPIB communication bus. + + +{\tt \#include $<$Tango\-Gpib\-Link.h$>$} + +Inheritance diagram for Tango\-Gpib\-Link::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_tango_gpib_link} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Tango\-Gpib\-Link} (std::string \&gpib\_\-device\_\-name) +\item +virtual {\bf $\sim$Tango\-Gpib\-Link} (void)\label{class_tango_gpib_link__tango_gpib_linka1} + +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf write} (std::string cmd) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Send command (data) as string to hardware. \item\end{CompactList}\item +std::string {\bf read} (void) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Gets hardware response as string. \item\end{CompactList}\item +std::string {\bf write\_\-read} (std::string cmd) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Performs a write read operation as string. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::string {\bf \_\-communication\_\-Device\_\-name}\label{class_communication_link__tango_serial_linkp0} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage the GPIB communication bus. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Constructor \& Destructor Documentation} +\index{TangoGpibLink@{Tango\-Gpib\-Link}!TangoGpibLink@{TangoGpibLink}} +\index{TangoGpibLink@{TangoGpibLink}!TangoGpibLink@{Tango\-Gpib\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Tango\-Gpib\-Link::Tango\-Gpib\-Link (std::string \& {\em gpib\_\-device\_\-name})}\label{class_tango_gpib_link__tango_gpib_linka0} + + +Initialization. + +\subsection{Member Function Documentation} +\index{TangoGpibLink@{Tango\-Gpib\-Link}!read@{read}} +\index{read@{read}!TangoGpibLink@{Tango\-Gpib\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string Tango\-Gpib\-Link::read (void) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_gpib_link__tango_gpib_linka3} + + +Gets hardware response as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka3})}.\index{TangoGpibLink@{Tango\-Gpib\-Link}!write@{write}} +\index{write@{write}!TangoGpibLink@{Tango\-Gpib\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Tango\-Gpib\-Link::write (std::string {\em cmd}) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_gpib_link__tango_gpib_linka2} + + +Send command (data) as string to hardware. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka2})}.\index{TangoGpibLink@{Tango\-Gpib\-Link}!write_read@{write\_\-read}} +\index{write_read@{write\_\-read}!TangoGpibLink@{Tango\-Gpib\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string Tango\-Gpib\-Link::write\_\-read (std::string {\em cmd}) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_gpib_link__tango_gpib_linka4} + + +Performs a write read operation as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Tango\-Gpib\-Link.h\end{CompactItemize} diff --git a/doc/latex/class_tango_serial_link.eps b/doc/latex/class_tango_serial_link.eps new file mode 100644 index 0000000..aba6e43 --- /dev/null +++ b/doc/latex/class_tango_serial_link.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 312.5 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.6 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TangoSerialLink) cw +(CommunicationLink) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TangoSerialLink) 0 0 box + (CommunicationLink) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/doc/latex/class_tango_serial_link.tex b/doc/latex/class_tango_serial_link.tex new file mode 100644 index 0000000..411c519 --- /dev/null +++ b/doc/latex/class_tango_serial_link.tex @@ -0,0 +1,104 @@ +\section{Tango\-Serial\-Link Class Reference} +\label{class_tango_serial_link}\index{TangoSerialLink@{TangoSerialLink}} +This class manage the SERIAL communication bus. + + +{\tt \#include $<$Tango\-Serial\-Link.h$>$} + +Inheritance diagram for Tango\-Serial\-Link::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_tango_serial_link} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Tango\-Serial\-Link} (std::string \&serial\_\-device\_\-name)\label{class_tango_serial_link__tango_serial_linka0} + +\begin{CompactList}\small\item\em Initialization. \item\end{CompactList}\item +virtual {\bf $\sim$Tango\-Serial\-Link} (void) +\begin{CompactList}\small\item\em Release resources. \item\end{CompactList}\item +void {\bf write} (std::string cmd) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Send command (data) as string to hardware. \item\end{CompactList}\item +std::string {\bf read} (void) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Gets hardware response as string. \item\end{CompactList}\item +std::string {\bf write\_\-read} (std::string cmd) throw (Tango::Dev\-Failed) +\begin{CompactList}\small\item\em Performs a write read operation as string. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::string {\bf \_\-communication\_\-Device\_\-name}\label{class_communication_link__tango_serial_linkp0} + +\end{CompactItemize} + + +\subsection{Detailed Description} +This class manage the SERIAL communication bus. + +\begin{Desc} +\item[Author:]Xavier Elattaoui \end{Desc} +\begin{Desc} +\item[Date:]11-2006 \end{Desc} + + + + +\subsection{Constructor \& Destructor Documentation} +\index{TangoSerialLink@{Tango\-Serial\-Link}!~TangoSerialLink@{$\sim$TangoSerialLink}} +\index{~TangoSerialLink@{$\sim$TangoSerialLink}!TangoSerialLink@{Tango\-Serial\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual Tango\-Serial\-Link::$\sim${\bf Tango\-Serial\-Link} (void)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_serial_link__tango_serial_linka1} + + +Release resources. + + + +\subsection{Member Function Documentation} +\index{TangoSerialLink@{Tango\-Serial\-Link}!read@{read}} +\index{read@{read}!TangoSerialLink@{Tango\-Serial\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string Tango\-Serial\-Link::read (void) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_serial_link__tango_serial_linka3} + + +Gets hardware response as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka3})}.\index{TangoSerialLink@{Tango\-Serial\-Link}!write@{write}} +\index{write@{write}!TangoSerialLink@{Tango\-Serial\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Tango\-Serial\-Link::write (std::string {\em cmd}) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_serial_link__tango_serial_linka2} + + +Send command (data) as string to hardware. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka2})}.\index{TangoSerialLink@{Tango\-Serial\-Link}!write_read@{write\_\-read}} +\index{write_read@{write\_\-read}!TangoSerialLink@{Tango\-Serial\-Link}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string Tango\-Serial\-Link::write\_\-read (std::string {\em cmd}) throw (Tango::Dev\-Failed)\hspace{0.3cm}{\tt [virtual]}}\label{class_tango_serial_link__tango_serial_linka4} + + +Performs a write read operation as string. + +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em Tango::Dev\-Failed}]\end{description} +\end{Desc} + + +Implements {\bf Communication\-Link} {\rm (p.\,\pageref{class_communication_link__communication_linka4})}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Tango\-Serial\-Link.h\end{CompactItemize} diff --git a/doc/latex/classelectrometer_1_1_electrometer_exception.tex b/doc/latex/classelectrometer_1_1_electrometer_exception.tex new file mode 100644 index 0000000..e4c2bb5 --- /dev/null +++ b/doc/latex/classelectrometer_1_1_electrometer_exception.tex @@ -0,0 +1,109 @@ +\section{electrometer::Electrometer\-Exception Class Reference} +\label{classelectrometer_1_1_electrometer_exception}\index{electrometer::ElectrometerException@{electrometer::ElectrometerException}} +detailed description to be written + + +{\tt \#include $<$Electrometer\-Exception.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Electrometer\-Exception} (void) +\item +{\bf Electrometer\-Exception} (const char $\ast$reason, const char $\ast$desc, const char $\ast$origin, int severity=electrometer::ERR) +\item +{\bf Electrometer\-Exception} (const std::string \&reason, const std::string \&desc, const std::string \&origin, int severity=electrometer::ERR) +\item +{\bf Electrometer\-Exception} (const {\bf Error} \&error) +\item +{\bf Electrometer\-Exception} (const {\bf Electrometer\-Exception} \&src) +\item +{\bf Electrometer\-Exception} \& {\bf operator=} (const {\bf Electrometer\-Exception} \&\_\-src) +\item +virtual {\bf $\sim$Electrometer\-Exception} (void) +\item +void {\bf push\_\-error} (const char $\ast$reason, const char $\ast$desc, const char $\ast$origin, int severity=electrometer::ERR) +\item +void {\bf push\_\-error} (const std::string \&reason, const std::string \&desc, const std::string \&origin, int severity=electrometer::ERR) +\item +void {\bf push\_\-error} (const {\bf Error} \&error) +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +Error\-List {\bf errors} +\end{CompactItemize} + + +\subsection{Detailed Description} +detailed description to be written + + + +\subsection{Constructor \& Destructor Documentation} +\index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!ElectrometerException@{ElectrometerException}} +\index{ElectrometerException@{ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Electrometer\-Exception::Electrometer\-Exception (void)}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona0} + + +Initialization. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!ElectrometerException@{ElectrometerException}} +\index{ElectrometerException@{ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Electrometer\-Exception::Electrometer\-Exception (const char $\ast$ {\em reason}, const char $\ast$ {\em desc}, const char $\ast$ {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona1} + + +Initialization. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!ElectrometerException@{ElectrometerException}} +\index{ElectrometerException@{ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Electrometer\-Exception::Electrometer\-Exception (const std::string \& {\em reason}, const std::string \& {\em desc}, const std::string \& {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona2} + + +Initialization. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!ElectrometerException@{ElectrometerException}} +\index{ElectrometerException@{ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Electrometer\-Exception::Electrometer\-Exception (const {\bf Error} \& {\em error})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona3} + + +Initialization. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!ElectrometerException@{ElectrometerException}} +\index{ElectrometerException@{ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Electrometer\-Exception::Electrometer\-Exception (const {\bf Electrometer\-Exception} \& {\em src})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona4} + + +Copy constructor. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!~ElectrometerException@{$\sim$ElectrometerException}} +\index{~ElectrometerException@{$\sim$ElectrometerException}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual electrometer::Electrometer\-Exception::$\sim${\bf Electrometer\-Exception} (void)\hspace{0.3cm}{\tt [virtual]}}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona6} + + +Release resources. + +\subsection{Member Function Documentation} +\index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!operator=@{operator=}} +\index{operator=@{operator=}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Electrometer\-Exception}\& electrometer::Electrometer\-Exception::operator= (const {\bf Electrometer\-Exception} \& {\em \_\-src})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona5} + + +operator= \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!push_error@{push\_\-error}} +\index{push_error@{push\_\-error}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void electrometer::Electrometer\-Exception::push\_\-error (const {\bf Error} \& {\em error})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona9} + + +Push the specified error into the errors list. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!push_error@{push\_\-error}} +\index{push_error@{push\_\-error}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void electrometer::Electrometer\-Exception::push\_\-error (const std::string \& {\em reason}, const std::string \& {\em desc}, const std::string \& {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona8} + + +Push the specified error into the errors list. \index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!push_error@{push\_\-error}} +\index{push_error@{push\_\-error}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void electrometer::Electrometer\-Exception::push\_\-error (const char $\ast$ {\em reason}, const char $\ast$ {\em desc}, const char $\ast$ {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiona7} + + +Push the specified error into the errors list. + +\subsection{Member Data Documentation} +\index{electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}!errors@{errors}} +\index{errors@{errors}!electrometer::ElectrometerException@{electrometer::Electrometer\-Exception}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Error\-List {\bf electrometer::Electrometer\-Exception::errors}}\label{classelectrometer_1_1_electrometer_exception_electrometer_1_1_electrometer_exceptiono0} + + +The errors list + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Electrometer\-Exception.h\end{CompactItemize} diff --git a/doc/latex/classelectrometer_1_1_error.tex b/doc/latex/classelectrometer_1_1_error.tex new file mode 100644 index 0000000..f9dd6c9 --- /dev/null +++ b/doc/latex/classelectrometer_1_1_error.tex @@ -0,0 +1,102 @@ +\section{electrometer::Error Class Reference} +\label{classelectrometer_1_1_error}\index{electrometer::Error@{electrometer::Error}} +detailed description to be written + + +{\tt \#include $<$Electrometer\-Exception.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Error} (void) +\item +{\bf Error} (const char $\ast${\bf reason}, const char $\ast${\bf desc}, const char $\ast${\bf origin}, int {\bf severity}=electrometer::ERR) +\item +{\bf Error} (const std::string \&{\bf reason}, const std::string \&{\bf desc}, const std::string \&{\bf origin}, int {\bf severity}=electrometer::ERR) +\item +{\bf Error} (const {\bf Error} \&src) +\item +virtual {\bf $\sim$Error} (void) +\item +{\bf Error} \& {\bf operator=} (const {\bf Error} \&\_\-src) +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +std::string {\bf reason} +\item +std::string {\bf desc} +\item +std::string {\bf origin} +\item +int {\bf severity} +\end{CompactItemize} + + +\subsection{Detailed Description} +detailed description to be written + + + +\subsection{Constructor \& Destructor Documentation} +\index{electrometer::Error@{electrometer::Error}!Error@{Error}} +\index{Error@{Error}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Error::Error (void)}\label{classelectrometer_1_1_error_electrometer_1_1_errora0} + + +Initialization. \index{electrometer::Error@{electrometer::Error}!Error@{Error}} +\index{Error@{Error}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Error::Error (const char $\ast$ {\em reason}, const char $\ast$ {\em desc}, const char $\ast$ {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_error_electrometer_1_1_errora1} + + +Initialization. \index{electrometer::Error@{electrometer::Error}!Error@{Error}} +\index{Error@{Error}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Error::Error (const std::string \& {\em reason}, const std::string \& {\em desc}, const std::string \& {\em origin}, int {\em severity} = {\tt electrometer::ERR})}\label{classelectrometer_1_1_error_electrometer_1_1_errora2} + + +Initialization. \index{electrometer::Error@{electrometer::Error}!Error@{Error}} +\index{Error@{Error}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}electrometer::Error::Error (const {\bf Error} \& {\em src})}\label{classelectrometer_1_1_error_electrometer_1_1_errora3} + + +Copy constructor. \index{electrometer::Error@{electrometer::Error}!~Error@{$\sim$Error}} +\index{~Error@{$\sim$Error}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual electrometer::Error::$\sim${\bf Error} (void)\hspace{0.3cm}{\tt [virtual]}}\label{classelectrometer_1_1_error_electrometer_1_1_errora4} + + +{\bf Error}{\rm (p.\,\pageref{classelectrometer_1_1_error})} details: code + +\subsection{Member Function Documentation} +\index{electrometer::Error@{electrometer::Error}!operator=@{operator=}} +\index{operator=@{operator=}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Error}\& electrometer::Error::operator= (const {\bf Error} \& {\em \_\-src})}\label{classelectrometer_1_1_error_electrometer_1_1_errora5} + + +operator= + +\subsection{Member Data Documentation} +\index{electrometer::Error@{electrometer::Error}!desc@{desc}} +\index{desc@{desc}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string {\bf electrometer::Error::desc}}\label{classelectrometer_1_1_error_electrometer_1_1_erroro1} + + +{\bf Error}{\rm (p.\,\pageref{classelectrometer_1_1_error})} details: description \index{electrometer::Error@{electrometer::Error}!origin@{origin}} +\index{origin@{origin}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string {\bf electrometer::Error::origin}}\label{classelectrometer_1_1_error_electrometer_1_1_erroro2} + + +{\bf Error}{\rm (p.\,\pageref{classelectrometer_1_1_error})} details: origin \index{electrometer::Error@{electrometer::Error}!reason@{reason}} +\index{reason@{reason}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string {\bf electrometer::Error::reason}}\label{classelectrometer_1_1_error_electrometer_1_1_erroro0} + + +{\bf Error}{\rm (p.\,\pageref{classelectrometer_1_1_error})} details: reason \index{electrometer::Error@{electrometer::Error}!severity@{severity}} +\index{severity@{severity}!electrometer::Error@{electrometer::Error}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int {\bf electrometer::Error::severity}}\label{classelectrometer_1_1_error_electrometer_1_1_erroro3} + + +{\bf Error}{\rm (p.\,\pageref{classelectrometer_1_1_error})} details: severity + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Electrometer\-Exception.h\end{CompactItemize} diff --git a/doc/latex/dir_000000.tex b/doc/latex/dir_000000.tex new file mode 100644 index 0000000..7fca54d --- /dev/null +++ b/doc/latex/dir_000000.tex @@ -0,0 +1,7 @@ +\section{D:/ Directory Reference} +\label{dir_000000}\index{D:/ Directory Reference@{D:/ Directory Reference}} +\subsection*{Directories} +\begin{CompactItemize} +\item +directory{\bf Device\-Server\-Src} +\end{CompactItemize} diff --git a/doc/latex/dir_000001.tex b/doc/latex/dir_000001.tex new file mode 100644 index 0000000..bceee29 --- /dev/null +++ b/doc/latex/dir_000001.tex @@ -0,0 +1,7 @@ +\section{D:/Device\-Server\-Src/ Directory Reference} +\label{dir_000001}\index{D:/DeviceServerSrc/ Directory Reference@{D:/DeviceServerSrc/ Directory Reference}} +\subsection*{Directories} +\begin{CompactItemize} +\item +directory{\bf Electrometers\-Library} +\end{CompactItemize} diff --git a/doc/latex/dir_000002.tex b/doc/latex/dir_000002.tex new file mode 100644 index 0000000..aac8d03 --- /dev/null +++ b/doc/latex/dir_000002.tex @@ -0,0 +1,7 @@ +\section{D:/Device\-Server\-Src/Electrometers\-Library/ Directory Reference} +\label{dir_000002}\index{D:/DeviceServerSrc/ElectrometersLibrary/ Directory Reference@{D:/DeviceServerSrc/ElectrometersLibrary/ Directory Reference}} +\subsection*{Directories} +\begin{CompactItemize} +\item +directory{\bf include} +\end{CompactItemize} diff --git a/doc/latex/dir_000003.tex b/doc/latex/dir_000003.tex new file mode 100644 index 0000000..8caef7c --- /dev/null +++ b/doc/latex/dir_000003.tex @@ -0,0 +1,45 @@ +\section{D:/Device\-Server\-Src/Electrometers\-Library/include/ Directory Reference} +\label{dir_000003}\index{D:/DeviceServerSrc/ElectrometersLibrary/include/ Directory Reference@{D:/DeviceServerSrc/ElectrometersLibrary/include/ Directory Reference}} +\subsection*{Files} +\begin{CompactItemize} +\item +file {\bf AbstractElectrometerClass.h} +\item +file {\bf CommunicationLink.h} +\item +file {\bf ElectrometerException.h} +\item +file {\bf ElectrometerProtocol.h} +\item +file {\bf Keithley_485.h} +\item +file {\bf Keithley_486.h} +\item +file {\bf Keithley_487.h} +\item +file {\bf Keithley_617.h} +\item +file {\bf Keithley_6485.h} +\item +file {\bf Keithley_6487.h} +\item +file {\bf Keithley_6512.h} +\item +file {\bf Keithley_6514.h} +\item +file {\bf KeithleyDDCProtocol.h} +\item +file {\bf KeithleySCPIProtocol.h} +\item +file {\bf N_PhotoConducteur.h} +\item +file {\bf N_PhotoVoltaique.h} +\item +file {\bf Novelec_MCCE2.h} +\item +file {\bf NovelecProtocol.h} +\item +file {\bf TangoGpibLink.h} +\item +file {\bf TangoSerialLink.h} +\end{CompactItemize} diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty new file mode 100644 index 0000000..9f88e9b --- /dev/null +++ b/doc/latex/doxygen.sty @@ -0,0 +1,64 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 1 15:32:18 2006 for Electrometers Library by Doxygen }} +\cfoot{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/doc/latex/group___communication.tex b/doc/latex/group___communication.tex new file mode 100644 index 0000000..f3fe4e7 --- /dev/null +++ b/doc/latex/group___communication.tex @@ -0,0 +1,11 @@ +\section{Management} +\label{group___communication}\index{Management@{Management}} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Communication\-Link} +\begin{CompactList}\small\item\em Abstract class to manage a specific communication bus. \item\end{CompactList}\item +class {\bf Tango\-Gpib\-Link} +\begin{CompactList}\small\item\em This class manage the GPIB communication bus. \item\end{CompactList}\item +class {\bf Tango\-Serial\-Link} +\begin{CompactList}\small\item\em This class manage the SERIAL communication bus. \item\end{CompactList}\end{CompactItemize} diff --git a/doc/latex/group___d_d_c.tex b/doc/latex/group___d_d_c.tex new file mode 100644 index 0000000..40c4c53 --- /dev/null +++ b/doc/latex/group___d_d_c.tex @@ -0,0 +1,15 @@ +\section{Keithley} +\label{group___d_d_c}\index{Keithley@{Keithley}} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Keithley\_\-485} +\begin{CompactList}\small\item\em This class manage 485 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-486} +\begin{CompactList}\small\item\em This class manage 486 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-487} +\begin{CompactList}\small\item\em This class manage 487 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-617} +\begin{CompactList}\small\item\em This class manage 617 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-6512} +\begin{CompactList}\small\item\em This class manage 6512 Keithley type. \item\end{CompactList}\end{CompactItemize} diff --git a/doc/latex/group___novelec.tex b/doc/latex/group___novelec.tex new file mode 100644 index 0000000..9ebc7f5 --- /dev/null +++ b/doc/latex/group___novelec.tex @@ -0,0 +1,11 @@ +\section{Novelec} +\label{group___novelec}\index{Novelec@{Novelec}} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf N\_\-Photo\-Conducteur} +\begin{CompactList}\small\item\em This class manage Novelec Photo\-Conductor types. \item\end{CompactList}\item +class {\bf N\_\-Photo\-Voltaique} +\begin{CompactList}\small\item\em This class manage Novelec Photo\-Voltaique types. \item\end{CompactList}\item +class {\bf Novelec\_\-MCCE2} +\begin{CompactList}\small\item\em This class manage Novelec MCCE-2 type. \item\end{CompactList}\end{CompactItemize} diff --git a/doc/latex/group___s_c_p_i.tex b/doc/latex/group___s_c_p_i.tex new file mode 100644 index 0000000..0facc9c --- /dev/null +++ b/doc/latex/group___s_c_p_i.tex @@ -0,0 +1,11 @@ +\section{Keithley} +\label{group___s_c_p_i}\index{Keithley@{Keithley}} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Keithley\_\-6485} +\begin{CompactList}\small\item\em This class manage 6485 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-6487} +\begin{CompactList}\small\item\em This class manage 6487 Keithley type. \item\end{CompactList}\item +class {\bf Keithley\_\-6514} +\begin{CompactList}\small\item\em This class manage 6514 Keithley type. \item\end{CompactList}\end{CompactItemize} diff --git a/doc/latex/group___standard.tex b/doc/latex/group___standard.tex new file mode 100644 index 0000000..062117f --- /dev/null +++ b/doc/latex/group___standard.tex @@ -0,0 +1,13 @@ +\section{Commands Protocol} +\label{group___standard}\index{Commands Protocol@{Commands Protocol}} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Electrometer\-Protocol} +\begin{CompactList}\small\item\em This abstract class manage the Electrometers Commands Protocol. \item\end{CompactList}\item +class {\bf Keithley\-DDCProtocol} +\begin{CompactList}\small\item\em This class manage the Keithley DDC Commands Protocol. \item\end{CompactList}\item +class {\bf Keithley\-SCPIProtocol} +\begin{CompactList}\small\item\em This class manage the Keithley SCPI Commands Protocol. \item\end{CompactList}\item +class {\bf Novelec\-Protocol} +\begin{CompactList}\small\item\em This class manage the Novelec Commands Protocol. \item\end{CompactList}\end{CompactItemize} diff --git a/doc/latex/hierarchy.tex b/doc/latex/hierarchy.tex new file mode 100644 index 0000000..036f481 --- /dev/null +++ b/doc/latex/hierarchy.tex @@ -0,0 +1,32 @@ +\section{Electrometers Library Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Abstract\-Electrometer\-Class}{\pageref{class_abstract_electrometer_class}}{} +\begin{CompactList} +\item \contentsline{section}{Keithley\_\-485}{\pageref{class_keithley__485}}{} +\item \contentsline{section}{Keithley\_\-486}{\pageref{class_keithley__486}}{} +\item \contentsline{section}{Keithley\_\-487}{\pageref{class_keithley__487}}{} +\item \contentsline{section}{Keithley\_\-617}{\pageref{class_keithley__617}}{} +\item \contentsline{section}{Keithley\_\-6485}{\pageref{class_keithley__6485}}{} +\item \contentsline{section}{Keithley\_\-6487}{\pageref{class_keithley__6487}}{} +\item \contentsline{section}{Keithley\_\-6512}{\pageref{class_keithley__6512}}{} +\item \contentsline{section}{Keithley\_\-6514}{\pageref{class_keithley__6514}}{} +\item \contentsline{section}{Novelec\_\-MCCE2}{\pageref{class_novelec___m_c_c_e2}}{} +\begin{CompactList} +\item \contentsline{section}{N\_\-Photo\-Conducteur}{\pageref{class_n___photo_conducteur}}{} +\item \contentsline{section}{N\_\-Photo\-Voltaique}{\pageref{class_n___photo_voltaique}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{Communication\-Link}{\pageref{class_communication_link}}{} +\begin{CompactList} +\item \contentsline{section}{Tango\-Gpib\-Link}{\pageref{class_tango_gpib_link}}{} +\item \contentsline{section}{Tango\-Serial\-Link}{\pageref{class_tango_serial_link}}{} +\end{CompactList} +\item \contentsline{section}{electrometer::Electrometer\-Exception}{\pageref{classelectrometer_1_1_electrometer_exception}}{} +\item \contentsline{section}{Electrometer\-Protocol}{\pageref{class_electrometer_protocol}}{} +\begin{CompactList} +\item \contentsline{section}{Keithley\-DDCProtocol}{\pageref{class_keithley_d_d_c_protocol}}{} +\item \contentsline{section}{Keithley\-SCPIProtocol}{\pageref{class_keithley_s_c_p_i_protocol}}{} +\item \contentsline{section}{Novelec\-Protocol}{\pageref{class_novelec_protocol}}{} +\end{CompactList} +\item \contentsline{section}{electrometer::Error}{\pageref{classelectrometer_1_1_error}}{} +\end{CompactList} diff --git a/doc/latex/modules.tex b/doc/latex/modules.tex new file mode 100644 index 0000000..505d064 --- /dev/null +++ b/doc/latex/modules.tex @@ -0,0 +1,8 @@ +\section{Electrometers Library Modules} +Here is a list of all modules:\begin{CompactList} +\item \contentsline{section}{Management}{\pageref{group___communication}}{} +\item \contentsline{section}{Commands Protocol}{\pageref{group___standard}}{} +\item \contentsline{section}{Keithley}{\pageref{group___d_d_c}}{} +\item \contentsline{section}{Keithley}{\pageref{group___s_c_p_i}}{} +\item \contentsline{section}{Novelec}{\pageref{group___novelec}}{} +\end{CompactList} diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex new file mode 100644 index 0000000..fd0f8c3 --- /dev/null +++ b/doc/latex/refman.tex @@ -0,0 +1,65 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Electrometers Library Reference Manual\\[1ex]\large 1.0 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.3.9.1}\\ +\vspace*{0.5cm} +{\small Fri Dec 1 15:32:18 2006}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Electrometers Library Module Index} +\input{modules} +\chapter{Electrometers Library Hierarchical Index} +\input{hierarchy} +\chapter{Electrometers Library Class Index} +\input{annotated} +\chapter{Electrometers Library Module Documentation} +\input{group___communication} +\include{group___standard} +\include{group___d_d_c} +\include{group___s_c_p_i} +\include{group___novelec} +\chapter{Electrometers Library Class Documentation} +\input{class_abstract_electrometer_class} +\include{class_communication_link} +\include{classelectrometer_1_1_electrometer_exception} +\include{class_electrometer_protocol} +\include{classelectrometer_1_1_error} +\include{class_keithley__485} +\include{class_keithley__486} +\include{class_keithley__487} +\include{class_keithley__617} +\include{class_keithley__6485} +\include{class_keithley__6487} +\include{class_keithley__6512} +\include{class_keithley__6514} +\include{class_keithley_d_d_c_protocol} +\include{class_keithley_s_c_p_i_protocol} +\include{class_n___photo_conducteur} +\include{class_n___photo_voltaique} +\include{class_novelec___m_c_c_e2} +\include{class_novelec_protocol} +\include{class_tango_gpib_link} +\include{class_tango_serial_link} +\printindex +\end{document} diff --git a/include/AbstractElectrometerClass.h b/include/AbstractElectrometerClass.h new file mode 100644 index 0000000..5d88eca --- /dev/null +++ b/include/AbstractElectrometerClass.h @@ -0,0 +1,168 @@ +//+============================================================================= +// +// = CONTEXT +// TANGO Project - Abstract Electrometer Class Support Library +// +// = FILENAME +// AbstractElectrometerClass.h +// +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// + +// ============================================================================ + +#ifndef _ABSTRACT_ELECTROMETER_CLASS_H_ +#define _ABSTRACT_ELECTROMETER_CLASS_H_ + +#include "ElectrometerProtocol.h" + +/** + * \brief Visible class from the DServer + * + * \author Xavier Elattaoui + * \date 11-2006 + */ +class AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + AbstractElectrometerClass (std::string comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~AbstractElectrometerClass (void); + + /** + * \brief Electrometer common functions. + */ + virtual void range_up (void) = 0; + virtual void range_down (void) = 0; + virtual void reset (void); + virtual void local (void); + virtual void remote (void); + + /** + * \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); + + /** + * \brief Keithley Electrometer methods + */ + 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_off (void); + virtual void autoRange_off (void); + virtual void setAmperMeterMode (void); + virtual void setVoltMeterMode (void); + virtual void setOhmMeterMode (void); + virtual void setCoulombMeterMode(void); + + /** + * \brief Following functions are only supported for SCPI protocol + * + */ + void init_keithley (void); + void clear_registers (void); + void averageStateON (void); + void averageStateOFF (void); + 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); + 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); + 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)! + + /** + * \brief Novelec Electrometer methods + * + * Following functions are only supported for Novelec Protocol + */ + 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); + /** + * \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 void set_ElectroMeterFrequency (std::string freq); + virtual void set_ElectroMeterGain (std::string gain); + + /** + * \brief Electrometer Status and State. + */ + virtual std::string electrometer_status (void); + + /** + * \brief Common getters and setters + */ + virtual std::string get_ElectroMeterMode (void); + virtual std::string get_ElectroMeterRange (void); + + +protected : + + /** + * \brief Electrometer State + */ + enum ElectroState + { + ON = 0, + FAULT = 8, + ALARM = 11, + UNKNOWN = 13 + }; + + ElectroState electrometerState; + + void set_electroState(ElectroState newState) { electrometerState = newState; }; + + short _range; + std::string _rangeStr; + std::string _mode; + ElectrometerProtocol* _electrometerProtocol; + std::string _device_proxy_name; +private : + +public : + ElectroState electrometer_state (void) { return electrometerState; }; + +}; + +#endif // _ABSTRACT_ELECTROMETER_CLASS_H_ diff --git a/include/CommunicationLink.h b/include/CommunicationLink.h new file mode 100644 index 0000000..848a933 --- /dev/null +++ b/include/CommunicationLink.h @@ -0,0 +1,85 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// CommunicationLink.h +// +// = AUTHOR +// X. Elattaoui +// +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// +// ============================================================================ + +#ifndef _COMMUNICATION_LINK_H_ +#define _COMMUNICATION_LINK_H_ + +#include <string> + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ + + +/** + * \addtogroup Communication Management + * @{ + */ + +/** + * \brief Abstract class to manage a specific communication bus + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class CommunicationLink +{ +public : + + /** + * Initialization. + */ + CommunicationLink (std::string& communication_link_name); + + /** + * Release resources. + */ + virtual ~CommunicationLink (void); + + /** + * \brief Send command (data) as string to hardware. + * + * \throws Tango::DevFailed + */ + virtual void write(std::string) = 0; + + /** + * \brief Gets hardware response as string. + * + * \throws Tango::DevFailed + */ + virtual std::string read(void) = 0; + + /** + * \brief Performs a write read operation as string. + * + * \throws Tango::DevFailed + */ + virtual std::string write_read(std::string cmd_to_send) = 0; + +protected : + std::string _communication_Device_name; + +}; + +/** @} */ //- end addtogroup + +#endif // _COMMUNICATION_LINK_H_ diff --git a/include/ElectrometerException.h b/include/ElectrometerException.h new file mode 100644 index 0000000..836f877 --- /dev/null +++ b/include/ElectrometerException.h @@ -0,0 +1,192 @@ +//****************************************************************************************** +// +// +// july 24, 2006 : Header file for the Electrometers exceptions +// (avaiable for all models Keithley and Novelec) +// +// +// author : X.Elattaoui +// +// ElectrometerException.cpp: interface for the electrometer exceptions class. +// +//****************************************************************************************** + +#ifndef _ELECTROMETER_EXCEPTION +#define _ELECTROMETER_EXCEPTION + +#include <string> +#include <vector> + +namespace electrometer{ + +// ============================================================================ +// Electrometer Errors severities +// ============================================================================ +typedef enum { + WARN, + ERR, + PANIC +} ErrorSeverity; + +// ============================================================================ +//! The Electrometer exception abstraction base class. +// ============================================================================ +//! +//! detailed description to be written +//! +// ============================================================================ +class Error +{ +public: + + /** + * Initialization. + */ + Error (void); + + /** + * Initialization. + */ + Error (const char *reason, + const char *desc, + const char *origin, + int severity = electrometer::ERR); + + + /** + * Initialization. + */ + Error (const std::string& reason, + const std::string& desc, + const std::string& origin, + int severity = electrometer::ERR); + + /** + * Copy constructor. + */ + Error (const Error& src); + + /** + * Error details: code + */ + virtual ~Error (void); + + /** + * operator= + */ + Error& operator= (const Error& _src); + + /** + * Error details: reason + */ + std::string reason; + + /** + * Error details: description + */ + std::string desc; + + /** + * Error details: origin + */ + std::string origin; + + /** + * Error details: severity + */ + int severity; + +}; + +// ============================================================================ +// The Electrometer error list. +// ============================================================================ +typedef std::vector<Error> ErrorList; + + +// ============================================================================ +//! The Electrometer exception abstraction base class. +// ============================================================================ +//! +//! detailed description to be written +//! +// ============================================================================ +class ElectrometerException +{ +public: + + /** + * Initialization. + */ + ElectrometerException (void); + + /** + * Initialization. + */ + ElectrometerException (const char *reason, + const char *desc, + const char *origin, + int severity = electrometer::ERR); + + /** + * Initialization. + */ + ElectrometerException (const std::string& reason, + const std::string& desc, + const std::string& origin, + int severity = electrometer::ERR); + + /** + * Initialization. + */ + ElectrometerException (const Error& error); + + + /** + * Copy constructor. + */ + ElectrometerException (const ElectrometerException& src); + + /** + * operator= + */ + ElectrometerException& operator= (const ElectrometerException& _src); + + /** + * Release resources. + */ + virtual ~ElectrometerException (void); + + /** + * Push the specified error into the errors list. + */ + void push_error (const char *reason, + const char *desc, + const char *origin, + int severity = electrometer::ERR); + + /** + * Push the specified error into the errors list. + */ + void push_error (const std::string& reason, + const std::string& desc, + const std::string& origin, + int severity = electrometer::ERR); + + /** + * Push the specified error into the errors list. + */ + void push_error (const Error& error); + + /** + * The errors list + */ + ErrorList errors; + + +}; + +} // end namspace Electrometer +#endif //_ELECTROMETER_EXCEPTION + + diff --git a/include/ElectrometerProtocol.h b/include/ElectrometerProtocol.h new file mode 100644 index 0000000..358b3d1 --- /dev/null +++ b/include/ElectrometerProtocol.h @@ -0,0 +1,152 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Electrometer Support Library +// +// = FILENAME +// ElectrometerProtocol.h +// +// = AUTHOR +// X. Elattaoui +// +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// +// ============================================================================ + +#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 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 std::string readStatusByteRegister (void); //- used to know if the integration cycle is done! + 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 Electrometer : Keithley protocol dependent commands. + */ + virtual void init_keithley (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_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 : Buffer config + */ + virtual void set_buffer_size (void); + 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); + + + /** + * \brief Electrometer : Novelec protocol dependent commands. + */ + virtual void switch_MCCE2_ON (void); + virtual void switch_MCCE2_OFF (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); + + + +protected : + short _range; + std::string _mode; + CommunicationLink* _communication_link; + +private : + + +}; + +/** @} */ //- end addtogroup + +#endif // _ELECTROMETER_PROTOCOL_H_ diff --git a/include/KeithleyDDCProtocol.h b/include/KeithleyDDCProtocol.h new file mode 100644 index 0000000..18843d5 --- /dev/null +++ b/include/KeithleyDDCProtocol.h @@ -0,0 +1,114 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC Keithley Electrometer Support Library +// ( DDC for Device Dependent Command ) +// = FILENAME +// KeithleyDDCProtocol.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_DDC_PROTOCOL_H_ +#define _KEITHLEY_DDC_PROTOCOL_H_ + +#include "ElectrometerProtocol.h" +#include "ElectrometerException.h" + +/** + * \addtogroup Standard Commands Protocol + * @{ + */ + +/** + * \brief This class manage the Keithley DDC Commands Protocol + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class KeithleyDDCProtocol : public ElectrometerProtocol +{ +public: + + /** + * \brief Initialization. + */ + KeithleyDDCProtocol (std::string& gpib_device_name); + + /** + * \brief Release resources. + */ + virtual ~KeithleyDDCProtocol (void); + + /** + * \brief Electrometer Functions. + */ + void set_range (std::string value); + void autoRange_on (void); + void autoRange_off (void); + void autoRange_OFF_forK486_487 (void); + void autoRange_OFF_forK617_6512(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_off (void); + + void reset (void); +// void local (void); // To be implemented in future library versions +// void remote (void); + + /** + * \brief Electrometer : cmd to get electrometer data. + */ + std::string get_value(void); + + /** + * \brief Electrometer Mode. + */ + void setAmperMeterMode (void); + void setAmperMeterMode_forK487 (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode(void); + void clear_registers (void); + + /** + * \brief Get Raw Electrometer Status. + */ + std::string get_raw_status (void) ; + + /** + * \brief Electrometer Mode : getters and setters. + */ + std::string get_mode (void) { return _mode; }; + std::string get_range (void); + bool get_overloadRangeState (void) { return _is_overloaded; };//- used to know if the device range is overloaded! + + /* TODO : for next PicoLib evolution + //- CMD B +// virtual void reading_mode (void); + virtual void reading_source (void); + //- CMD Q + virtual void data_store (void); + //- CMD G + virtual void data_format (void); + //- = REL + virtual void baseline_suppression_ON(void); + virtual void baseline_suppression_OFF(void); + */ +protected : + +private : + + bool _is_overloaded; +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_DDC_PROTOCOL_H_ diff --git a/include/KeithleySCPIProtocol.h b/include/KeithleySCPIProtocol.h new file mode 100644 index 0000000..76ac51a --- /dev/null +++ b/include/KeithleySCPIProtocol.h @@ -0,0 +1,138 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI Keithley Electrometer Support Library +// +// = FILENAME +// KeithleySCPIProtocol.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_SCPI_PROTOCOL_H_ +#define _KEITHLEY_SCPI_PROTOCOL_H_ + +#include <vector> +#include "ElectrometerProtocol.h" +#include "ElectrometerException.h" + +/** + * \addtogroup Standard Commands Protocol + * @{ + */ + +/** + * \brief This class manage the Keithley SCPI Commands Protocol + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class KeithleySCPIProtocol : public ElectrometerProtocol +{ +public: + + /** + * \brief Initialization. + */ + KeithleySCPIProtocol (std::string& gpib_device_name); + + /** + * \brief Release resources. + */ + virtual ~KeithleySCPIProtocol (void); + + /** + * \brief Electrometer Functions. + */ + void set_range (std::string value) ; + void autoRange_on (void); + void autoRange_off (void); + + void zero_check_on (void); + void zero_check_off (void); + void zero_correct_on (void); + void zero_correct_off (void); + void zero_correct_state_on (void); + void zero_correct_state_off(void); + void auto_zero_on (void); + void auto_zero_off (void); + void reset (void); + void clear_registers (void); + + /** + * \brief Electrometer Mode. + */ + void setAmperMeterMode (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode(void); + + /** + * \brief Electrometer : cmd to get electrometer data. + */ + 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! + + 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_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_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 enable_SRQBufferFull (void); + void disable_SRQBufferFull (void); + + + /** + * \brief Get Raw Electrometer Status. + */ + std::string get_raw_status (void) ; + + /** + * \brief Electrometer : getter and setter. + */ + std::string get_mode (void); + std::string get_range (void); + + /** + * + */ + void set_isDiffSuportedMode (bool supportDiffMode) + { isDiffSuportedMode = supportDiffMode; }; + +protected : + std::vector<double> buildDataList (std::string listToParse); +private : + bool isDiffSuportedMode; + std::string trigCountStr; + + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_SCPI_PROTOCOL_H_ diff --git a/include/Keithley_485.h b/include/Keithley_485.h new file mode 100644 index 0000000..cf0adee --- /dev/null +++ b/include/Keithley_485.h @@ -0,0 +1,64 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_485.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_485_H_ +#define _KEITHLEY_485_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup DDC Keithley + * @{ + */ + +/** + * \brief This class manage 485 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_485 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_485 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_485 (void); + + /** + * \brief Device dependent commands. + */ + void range_up (void); + void range_down (void); + + /** + * \brief getter(s) & setter(s) + */ + std::string get_ElectroMeterRange(void); + + /** + * \brief Electrometer Status. + */ + std::string electrometer_status (void); +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_485_H_ diff --git a/include/Keithley_486.h b/include/Keithley_486.h new file mode 100644 index 0000000..ec9565e --- /dev/null +++ b/include/Keithley_486.h @@ -0,0 +1,70 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_486.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_486_H_ +#define _KEITHLEY_486_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup DDC Keithley + * @{ + */ + +/** + * \brief This class manage 486 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_486 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_486 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_486 (void); + + /** + * \brief Device dependent commands. + */ + void range_up (void); + void range_down (void); + void autoRange_off (void); + + /** + * \brief getter(s) & setter(s) + */ + std::string get_ElectroMeterRange(void); + + /** + * \brief Electrometer status. + */ + std::string electrometer_status (void); + + //- TODO : + // DDC_Filters* _ddcFilters; + // DDC_Triggers* _ddcTriggers; + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_486_H_ diff --git a/include/Keithley_487.h b/include/Keithley_487.h new file mode 100644 index 0000000..75b18aa --- /dev/null +++ b/include/Keithley_487.h @@ -0,0 +1,76 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_487.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_487_H_ +#define _KEITHLEY_487_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup DDC Keithley + * @{ + */ + +/** + * \brief This class manage 487 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_487 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_487 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_487 (void); + + /** + * \brief Electrometer methods. + */ + void range_up (void); + void range_down (void); + void autoRange_off (void); + /** + * \brief Electrometer Function(s). + */ + void setAmperMeterMode (void); + + /** + * \brief getter(s) & setter(s) + */ + std::string get_ElectroMeterMode(void); + std::string get_ElectroMeterRange(void); + + /** + * \brief Electrometer status. + */ + std::string electrometer_status (void); + + + //- TODO : + // DDC_Filters* _ddcFilters; + // DDC_Triggers* _ddcTriggers; + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_487_H_ diff --git a/include/Keithley_617.h b/include/Keithley_617.h new file mode 100644 index 0000000..2fe4314 --- /dev/null +++ b/include/Keithley_617.h @@ -0,0 +1,80 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_617.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_617_H_ +#define _KEITHLEY_617_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup DDC Keithley + * @{ + */ + +/** + * \brief This class manage 617 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_617 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_617 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_617 (void); + + /** + * \brief Device dependent commands. + */ + void autoRange_off (void); + void range_up (void); + void range_down (void); + + /** + * \brief Electrometer Mode. + */ + void setAmperMeterMode (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode (void); + + /** + * \brief getter(s) & setter(s) + */ + std::string get_ElectroMeterMode (void); + std::string get_ElectroMeterRange(void); + + /** + * \brief Electrometer status. + */ + std::string electrometer_status (void); + + + //- TODO : + // DDC_Filters* _ddcFilters; + // DDC_Triggers* _ddcTriggers; + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_617_H_ diff --git a/include/Keithley_6485.h b/include/Keithley_6485.h new file mode 100644 index 0000000..9f2ae99 --- /dev/null +++ b/include/Keithley_6485.h @@ -0,0 +1,61 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_6485.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_6485_H_ +#define _KEITHLEY_6485_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup SCPI Keithley + * @{ + */ + +/** + * \brief This class manage 6485 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_6485 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_6485 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_6485 (void); + + std::vector<double> get_integratedValue (void); + std::vector<double> get_fetchValue (void); + /** + * \brief Device dependent commands. + */ + void range_up (void); + void range_down (void); + +private: + //- method to obtain the range index + void update_range (void); + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_6485_H_ diff --git a/include/Keithley_6487.h b/include/Keithley_6487.h new file mode 100644 index 0000000..a564877 --- /dev/null +++ b/include/Keithley_6487.h @@ -0,0 +1,69 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_6487.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_6487_H_ +#define _KEITHLEY_6487_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup SCPI Keithley + * @{ + */ + +/** + * \brief This class manage 6487 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_6487 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_6487 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_6487 (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); + + //- TODO : + // SCPI_Filters* _ddcFilters; + // SCPI_Triggers* _ddcTriggers; +private: + //- method to obtain the range index + void update_range (void); + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_6487_H_ diff --git a/include/Keithley_6512.h b/include/Keithley_6512.h new file mode 100644 index 0000000..394e6ef --- /dev/null +++ b/include/Keithley_6512.h @@ -0,0 +1,80 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_6512.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _KEITHLEY_6512_H_ +#define _KEITHLEY_6512_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup DDC Keithley + * @{ + */ + +/** + * \brief This class manage 6512 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_6512 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_6512 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_6512 (void); + + /** + * \brief Device dependent commands. + */ + void autoRange_off (void); + void range_up (void); + void range_down (void); + + /** + * \brief Electrometer Mode. + */ + void setAmperMeterMode (void); + void setVoltMeterMode (void); + void setOhmMeterMode (void); + void setCoulombMeterMode (void); + + /** + * \brief getter(s) & setter(s) + */ + std::string get_ElectroMeterMode (void); + std::string get_ElectroMeterRange(void); + + /** + * \brief Electrometer status. + */ + std::string electrometer_status (void); + + + //- TODO : + // DDC_Filters* _ddcFilters; + // DDC_Triggers* _ddcTriggers; + +}; + +/** @} */ //- end addtogroup + +#endif // _KEITHLEY_6512_H_ diff --git a/include/Keithley_6514.h b/include/Keithley_6514.h new file mode 100644 index 0000000..e2e3c0d --- /dev/null +++ b/include/Keithley_6514.h @@ -0,0 +1,73 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI Keithley Electrometer Support Library +// +// = FILENAME +// Keithley_6514.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _Keithley_6514_H_ +#define _Keithley_6514_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup SCPI Keithley + * @{ + */ + +/** + * \brief This class manage 6514 Keithley type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Keithley_6514 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Keithley_6514 (std::string& comLink_device_name); + + /** + * \brief Release resources. + */ + virtual ~Keithley_6514 (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); + + //- TODO : + // SCPI_Filters* _ddcFilters; + // SCPI_Triggers* _ddcTriggers; +private: + //- method to obtain the range index + void update_range (void); + std::string _kmode; + +}; + +/** @} */ //- end addtogroup + +#endif // _Keithley_6514_H_ diff --git a/include/N_PhotoConducteur.h b/include/N_PhotoConducteur.h new file mode 100644 index 0000000..0871b40 --- /dev/null +++ b/include/N_PhotoConducteur.h @@ -0,0 +1,63 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Novelec Electrometer Support Library +// +// = FILENAME +// N_PhotoConducteur.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _NOVELEC_PHOTOCONDUCTEUR_H_ +#define _NOVELEC_PHOTOCONDUCTEUR_H_ + +#include "Novelec_MCCE2.h" + +/** + * \addtogroup Novelec + * @{ + */ + +/** + * \brief This class manage Novelec PhotoConductor types + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class N_PhotoConducteur : public Novelec_MCCE2 +{ +public: + + /** + * \brief Initialization. + */ + N_PhotoConducteur (std::string& comLink_device_name, short channel_address, short electroType); + + /** + * \brief Release resources. + */ + virtual ~N_PhotoConducteur (void); + + /** + * \brief device dependent commands. + */ + void range_up (void); + void range_down (void); + + /** + * \brief getters and setters. + */ + std::string get_ElectroMeterGain (void); + void set_ElectroMeterGain (std::string); + +protected : + +}; + +/** @} */ //- end addtogroup + +#endif // _NOVELEC_PHOTOCONDUCTEUR_H_ diff --git a/include/N_PhotoVoltaique.h b/include/N_PhotoVoltaique.h new file mode 100644 index 0000000..d98d152 --- /dev/null +++ b/include/N_PhotoVoltaique.h @@ -0,0 +1,68 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Novelec Electrometer Support Library +// +// = FILENAME +// N_PhotoVoltaique.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _NOVELEC_PHOTOVOLTAIQUE_H_ +#define _NOVELEC_PHOTOVOLTAIQUE_H_ + +#include "Novelec_MCCE2.h" + +/** + * \addtogroup Novelec + * @{ + */ + +/** + * \brief This class manage Novelec PhotoVoltaique types + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class N_PhotoVoltaique : public Novelec_MCCE2 +{ +public: + + /** + * \brief Initialization. + */ + N_PhotoVoltaique (std::string comLink_device_name, short channel_address, short electroType); + + /** + * \brief Release resources. + */ + virtual ~N_PhotoVoltaique (void); + + /** + * \brief device dependent commands. + */ + void range_up (void); + void range_down (void); + + /** + * \brief getters and setters. + */ + std::string get_ElectroMeterFrequency(void); + void set_ElectroMeterFrequency (std::string); + + /** + * Electrometer Status. + */ +// std::string electrometer_status (void); + +protected : + +}; + +/** @} */ //- end addtogroup + +#endif // _NOVELEC_PHOTOVOLTAIQUE_H_ diff --git a/include/NovelecProtocol.h b/include/NovelecProtocol.h new file mode 100644 index 0000000..24359ad --- /dev/null +++ b/include/NovelecProtocol.h @@ -0,0 +1,113 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Novelec Electrometer Support Library +// ( Supported type : MCCE-2 ) +// = FILENAME +// NovelecProtocol.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _NOVELEC_MCCE2_PROTOCOL_H_ +#define _NOVELEC_MCCE2_PROTOCOL_H_ + +#include "ElectrometerProtocol.h" +#include "ElectrometerException.h" + +/** + * \addtogroup Standard Commands Protocol + * @{ + */ + +/** + * \brief This class manage the Novelec Commands Protocol + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class NovelecProtocol : public ElectrometerProtocol +{ +public: + + /** + * \brief Initialization. + */ + NovelecProtocol (std::string& gpib_device_name, short channel_address, short electroTypeNumber); + + /** + * \brief Release resources. + */ + virtual ~NovelecProtocol(void); + + /** + * \brief Electrometer Functions. + */ + void set_range (std::string value); + std::string get_range (void); + + void reset (void); + void local (void); + void remote(void); + void clear_registers(void); //- clear all errors + + /** + * \brief Electrometer : cmd to get electrometer data. + */ + std::string get_value (void); + + /** + * \brief Electrometer Mode : Novelec SUPPORTS these commands + */ + void switch_MCCE2_ON (void); + void switch_MCCE2_OFF (void); + void unable_zeroVF_func (void); + void unable_offset_zeroV1_func (void); + void unable_leakage_zeroV2_func (void); + void unable_test_func (void); + void unable_measure_func (void); + + /** + * \brief Get Raw Electrometer Status. + */ + std::string get_raw_status (void) ; + /** + * \brief Electrometer Mode : getters and setters. + */ + std::string get_mode (void); + std::string get_polarity (void); + std::string get_frequency (void); + std::string get_gain (void); + std::string get_errors (void); + std::string get_electrotype (void); + void set_polarity (std::string pola); + void set_frequency (std::string freq); + void set_gain (std::string gain); + +protected : + short _devAdd; //- novelec active channel address + short _novType; //- novelec type number (1 to 5) + short _rangeParameterNum; //- command number for the range + std::string _function; //- the novelec mode + + //- check if the cmd is understood + void check_command (std::string resp_to_check); + //- check if the cmd is understood and extract data from the response + //- To do so, it check if the command number sent is in the received response (just after AWR cmdNum) + //- reply format : "devAddr AWR cmdNum = response " exp : response status "01 AWR 01 = value" + std::string check_and_extract_data (std::string resp_to_check, short command_sent); + +private : + //- if true, parameters cannot be changed ! + bool _is_measure_mode_on; + //- if true, explicite response mode is enabled + bool _is_explicite_resp_enabled; + +}; + +/** @} */ //- end addtogroup + +#endif // _NOVELEC_MCCE2_PROTOCOL_H_ diff --git a/include/Novelec_MCCE2.h b/include/Novelec_MCCE2.h new file mode 100644 index 0000000..6cecc12 --- /dev/null +++ b/include/Novelec_MCCE2.h @@ -0,0 +1,79 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Novelec Electrometer Support Library +// +// = FILENAME +// Novelec_MCCE2.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _NOVELEC_MCCE2_H_ +#define _NOVELEC_MCCE2_H_ + +#include "AbstractElectrometerClass.h" + +/** + * \addtogroup Novelec + * @{ + */ + +/** + * \brief This class manage Novelec MCCE-2 type + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class Novelec_MCCE2 : public AbstractElectrometerClass +{ +public: + + /** + * \brief Initialization. + */ + Novelec_MCCE2 (std::string& comLink_device_name, short channel_address, short electroType); + + /** + * \brief Release resources. + */ + virtual ~Novelec_MCCE2 (void); + + std::string get_ElectroMeterPolarity(void); + void set_ElectroMeterPolarity (std::string); + + /** + * \brief Electrometer Functions : mode for novelec types. + */ + void set_Zero_VonF_function (void); + void set_Offset_ZeroV1_function (void); + void set_Leakage_ZeroV2_function (void); + void set_Test_function (void); + void set_Measure_function (void); + + /** + * \brief Commands to start/stop the data acquisition + * + * + * This emulate the MCCE2 key ON/OFF + * (all parameters must be set before switching ON the MCCE2) + */ + void mcce_on (void); + void mcce_off (void); + + /** + * \brief Electrometer Status. + */ + std::string electrometer_status (void); + +protected : + short _rangeLimit; //- define the range limit for each novelec type + +}; + +/** @} */ //- end addtogroup + +#endif // _NOVELEC_MCCE2_H_ diff --git a/include/TangoGpibLink.h b/include/TangoGpibLink.h new file mode 100644 index 0000000..d03a031 --- /dev/null +++ b/include/TangoGpibLink.h @@ -0,0 +1,88 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// TangoGpibLink.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _TANGO_GPIB_LINK_H_ +#define _TANGO_GPIB_LINK_H_ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <tango.h> +#include <DeviceProxyHelper.h> +#include "CommunicationLink.h" + +/** + * \addtogroup Communication Management + * @{ + */ + +/** + * \brief This class manage the GPIB communication bus + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class TangoGpibLink : public CommunicationLink +{ + +public : + /** + * Initialization. + */ + TangoGpibLink (std::string& gpib_device_name); + + /** + * \brief Release resources. + */ + virtual ~TangoGpibLink (void); + + /** + * \brief Send command (data) as string to hardware. + * + * \throws Tango::DevFailed + */ + void write(std::string cmd) throw (Tango::DevFailed); + + /** + * \brief Gets hardware response as string. + * + * \throws Tango::DevFailed + */ + std::string read(void) throw (Tango::DevFailed); + + /** + * \brief Performs a write read operation as string. + * + * \throws Tango::DevFailed + */ + std::string write_read(std::string cmd) throw (Tango::DevFailed); + +private : + + /** + * Creates a proxy on the specified GPIB Device. + */ + void create_gpib_proxy(void) throw (Tango::DevFailed); + + Tango::DeviceProxyHelper* _gpib_proxy; + + bool _is_gpib_proxy_created; + + std::string response; + +}; + +/** @} */ //- end addtogroup + +#endif // _TANGO_GPIB_LINK_H_ diff --git a/include/TangoSerialLink.h b/include/TangoSerialLink.h new file mode 100644 index 0000000..826da78 --- /dev/null +++ b/include/TangoSerialLink.h @@ -0,0 +1,87 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// TangoSerialLink.h +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +#ifndef _TANGO_SERIAL_LINK_H_ +#define _TANGO_SERIAL_LINK_H_ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <tango.h> +#include <DeviceProxyHelper.h> +#include "CommunicationLink.h" + +/** + * \addtogroup Communication Management + * @{ + */ + +/** + * \brief This class manage the SERIAL communication bus + * + * \author Xavier Elattaoui + * \date 11-2006 + */ + +class TangoSerialLink : public CommunicationLink +{ + +public : + /** + * \brief Initialization. + */ + TangoSerialLink (std::string& serial_device_name); + + /** + * \brief Release resources. + */ + virtual ~TangoSerialLink (void); + + /** + * \brief Send command (data) as string to hardware. + * + * \throws Tango::DevFailed + */ + void write(std::string cmd) throw (Tango::DevFailed); + + /** + * \brief Gets hardware response as string. + * + * \throws Tango::DevFailed + */ + std::string read(void) throw (Tango::DevFailed); + + /** + * \brief Performs a write read operation as string. + * + * \throws Tango::DevFailed + */ + std::string write_read(std::string cmd) throw (Tango::DevFailed); + +private : + /** + * Creates a proxy on the specified Serial Device. + */ + void create_serial_proxy(void) throw (Tango::DevFailed); + + Tango::DeviceProxyHelper* _serial_proxy; + + bool _is_serial_proxy_created; + + std::string response; + +}; + +/** @} */ //- end addtogroup + +#endif // _TANGO_SERIAL_LINK_H_ diff --git a/src/AbstractElectrometerClass.cpp b/src/AbstractElectrometerClass.cpp new file mode 100644 index 0000000..5ae0977 --- /dev/null +++ b/src/AbstractElectrometerClass.cpp @@ -0,0 +1,569 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Abstract Electrometer Class Support Library +// +// = FILENAME +// AbstractElectrometerClass.cpp +// +// = AUTHOR +// X. Elattaoui +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "AbstractElectrometerClass.h" +#include "ElectrometerException.h" + +// ============================================================================ +// AbstractElectrometerClass::AbstractElectrometerClass +// ============================================================================ +AbstractElectrometerClass::AbstractElectrometerClass (std::string comLink_device_name) +: _device_proxy_name(comLink_device_name), + _range(0), + _rangeStr("NOT INITIALISED") +{ + std::cout << "AbstractElectrometerClass::AbstractElectrometerClass <-" << std::endl; + + + std::cout << "AbstractElectrometerClass::AbstractElectrometerClass ->" << std::endl; +} + +// ============================================================================ +// AbstractElectrometerClass::~AbstractElectrometerClass +// ============================================================================ +AbstractElectrometerClass::~AbstractElectrometerClass (void) +{ + std::cout << "AbstractElectrometerClass::~AbstractElectrometerClass <-" << std::endl; + + if(_electrometerProtocol) + { + delete _electrometerProtocol; + _electrometerProtocol = 0; + } + + std::cout << "AbstractElectrometerClass::~AbstractElectrometerClass ->" << std::endl; +} + + +// ============================================================================ +// AbstractElectrometerClass::zero_check_on +// ============================================================================ +void AbstractElectrometerClass::zero_check_on (void) +{ + //- send command + _electrometerProtocol->zero_check_on( ); +} +// ============================================================================ +// AbstractElectrometerClass::zero_check_off +// ============================================================================ +void AbstractElectrometerClass::zero_check_off (void) +{ + //- send command + _electrometerProtocol->zero_check_off( ); +} + +// ============================================================================ +// AbstractElectrometerClass::zero_correct_on +// ============================================================================ +void AbstractElectrometerClass::zero_correct_on (void) +{ + //- send command + _electrometerProtocol->zero_correct_on( ); +} + +// ============================================================================ +// AbstractElectrometerClass::zero_correct_off +// ============================================================================ +void AbstractElectrometerClass::zero_correct_off (void) +{ + //- send command + _electrometerProtocol->zero_correct_off( ); +} + +// ============================================================================ +// AbstractElectrometerClass::autoRange_ON +// ============================================================================ +void AbstractElectrometerClass::autoRange_on (void) +{ + _electrometerProtocol->autoRange_on( ); +} + +// ============================================================================ +// AbstractElectrometerClass::autoRange_OFF +// ============================================================================ +void AbstractElectrometerClass::autoRange_off (void) +{ + _electrometerProtocol->autoRange_off( ); +} + +// ============================================================================ +// AbstractElectrometerClass::auto_zero_on +// ============================================================================ +void AbstractElectrometerClass::auto_zero_on (void) +{ + _electrometerProtocol->auto_zero_on( ); +} + +// ============================================================================ +// AbstractElectrometerClass::auto_zero_off +// ============================================================================ +void AbstractElectrometerClass::auto_zero_off (void) +{ + _electrometerProtocol->auto_zero_off( ); +} + +// ============================================================================ +// AbstractElectrometerClass::init_keithley +// ============================================================================ +void AbstractElectrometerClass::init_keithley (void) +{ + _electrometerProtocol->init_keithley( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_knplc +// ============================================================================ +void AbstractElectrometerClass::set_knplc (std::string nplcValueStr) +{ + _electrometerProtocol->set_knplc(nplcValueStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_knplc +// ============================================================================ +std::string AbstractElectrometerClass::get_knplc (void) +{ + return _electrometerProtocol->get_knplc( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_triggercount +// ============================================================================ +void AbstractElectrometerClass::set_triggercount (std::string trigCountStr) +{ + _electrometerProtocol->set_triggercount(trigCountStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_triggercount +// ============================================================================ +std::string AbstractElectrometerClass::get_triggercount (void) +{ + return _electrometerProtocol->get_triggercount( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_triggerdelay +// ============================================================================ +void AbstractElectrometerClass::set_triggerdelay (std::string trigDelStr) +{ + _electrometerProtocol->set_triggerdelay(trigDelStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_triggerdelay +// ============================================================================ +std::string AbstractElectrometerClass::get_triggerdelay (void) +{ + return _electrometerProtocol->get_triggerdelay( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_triggerdelayAuto +// ============================================================================ +void AbstractElectrometerClass::set_triggerdelayAuto (std::string trigDelAutoStr) +{ + _electrometerProtocol->set_triggerdelayAuto(trigDelAutoStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_triggerdelayAuto +// ============================================================================ +std::string AbstractElectrometerClass::get_triggerdelayAuto (void) +{ + return _electrometerProtocol->get_triggerdelayAuto( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_averagecount +// ============================================================================ +void AbstractElectrometerClass::set_averagecount (std::string averCountStr) +{ + _electrometerProtocol->set_averagecount(averCountStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_averagecount +// ============================================================================ +std::string AbstractElectrometerClass::get_averagecount (void) +{ + return _electrometerProtocol->get_averagecount( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_averagecontrol +// ============================================================================ +void AbstractElectrometerClass::set_averagecontrol (std::string averCtrlStr) +{ + _electrometerProtocol->set_averagecontrol(averCtrlStr); +} + +// ============================================================================ +// AbstractElectrometerClass::get_averagecontrol +// ============================================================================ +std::string AbstractElectrometerClass::get_averagecontrol (void) +{ + return _electrometerProtocol->get_averagecontrol( ); +} + +// ============================================================================ +// AbstractElectrometerClass::clear_registers +// ============================================================================ +void AbstractElectrometerClass::clear_registers (void) +{ + _electrometerProtocol->clear_registers(); +} + +// ============================================================================ +// AbstractElectrometerClass::averageStateON +// ============================================================================ +void AbstractElectrometerClass::averageStateON (void) +{ + _electrometerProtocol->averageStateON(); +} + +// ============================================================================ +// AbstractElectrometerClass::averageStateOFF +// ============================================================================ +void AbstractElectrometerClass::averageStateOFF (void) +{ + _electrometerProtocol->averageStateOFF(); +} + +// ============================================================================ +// AbstractElectrometerClass::get_value +// ============================================================================ +std::string AbstractElectrometerClass::get_value (void) +{ + std::string argout("no data"); + argout = _electrometerProtocol->get_value( ); + + return argout; +} + +// ============================================================================ +// AbstractElectrometerClass::get_integratedValue +// ============================================================================ +std::vector<double> AbstractElectrometerClass::get_integratedValue (void) +{ + return _electrometerProtocol->get_integratedValue( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_fetchValue +// ============================================================================ +std::vector<double> AbstractElectrometerClass::get_fetchValue (void) +{ + return _electrometerProtocol->get_fetchValue( ); +} + +// ============================================================================ +// AbstractElectrometerClass::reset +// ============================================================================ +void AbstractElectrometerClass::reset (void) +{ + _electrometerProtocol->reset( ); +} + +// ============================================================================ +// AbstractElectrometerClass::local +// ============================================================================ +void AbstractElectrometerClass::local (void) +{ + _electrometerProtocol->local( ); +} + +// ============================================================================ +// AbstractElectrometerClass::remote +// ============================================================================ +void AbstractElectrometerClass::remote (void) +{ + _electrometerProtocol->remote( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterMode +// ============================================================================ +std::string AbstractElectrometerClass::get_ElectroMeterMode (void) +{ + return _electrometerProtocol->get_mode( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterRange +// ============================================================================ +std::string AbstractElectrometerClass::get_ElectroMeterRange (void) +{ + return _electrometerProtocol->get_range( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterRange +// ============================================================================ +bool AbstractElectrometerClass::get_overloadRangeState (void) +{ + return _electrometerProtocol->get_overloadRangeState( ); +} + +// ============================================================================ +// AbstractElectrometerClass::electrometer_status +// ============================================================================ +std::string AbstractElectrometerClass::electrometer_status (void) +{ + /** + * This command is sent for SCPI devices only, so the SCPI State is updated here + */ + std::string argout("no data"); + + try + { + argout = _electrometerProtocol->get_raw_status( ); + //- if no error the error code is 0 + if( XString<short>::convertFromString(&argout[0]) == ON) + set_electroState(ON); + else + set_electroState(ALARM); + } + catch(...) + { + set_electroState(FAULT); + throw; + } + + return argout; +} + +// ============================================================================ +// AbstractElectrometerClass::set_buffer_size +// ============================================================================ +void AbstractElectrometerClass::set_buffer_size (void) +{ + _electrometerProtocol->set_buffer_size(); +} + +// ============================================================================ +// AbstractElectrometerClass::clear_buffer +// ============================================================================ +void AbstractElectrometerClass::clear_buffer (void) +{ + _electrometerProtocol->clear_buffer(); +} + +// ============================================================================ +// AbstractElectrometerClass::store_raw_input +// ============================================================================ +void AbstractElectrometerClass::store_raw_input (void) +{ + _electrometerProtocol->store_raw_input(); +} + +// ============================================================================ +// AbstractElectrometerClass::start_storing +// ============================================================================ +void AbstractElectrometerClass::start_storing (void) +{ + _electrometerProtocol->start_storing(); +} + +// ============================================================================ +// AbstractElectrometerClass::enable_SRQBufferFull +// ============================================================================ +void AbstractElectrometerClass::enable_SRQBufferFull (void) +{ + _electrometerProtocol->enable_SRQBufferFull(); +} + +// ============================================================================ +// AbstractElectrometerClass::disable_SRQBufferFull +// ============================================================================ +void AbstractElectrometerClass::disable_SRQBufferFull (void) +{ + _electrometerProtocol->disable_SRQBufferFull(); +} + +// ============================================================================ +// AbstractElectrometerClass::readStatusByteRegister +// ============================================================================ +std::string AbstractElectrometerClass::readStatusByteRegister (void) +{ + return _electrometerProtocol->readStatusByteRegister(); +} + +// ============================================================================ +// AbstractElectrometerClass::MODE -> Ampere, Volt, Ohm, Coulomb and V on I meters +// The general case is that following functions are not supported +// When supported by a particular electrometer, these methods must be defined in the +// corresponding electrometer class +// ============================================================================ +// ============================================================================ +// AbstractElectrometerClass::setAmperMeterMode +// ============================================================================ +void AbstractElectrometerClass::setAmperMeterMode (void) +{ + _electrometerProtocol->setAmperMeterMode( ); +/* throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "AbstractElectrometerClass::setAmperMeterMode( )."); +*/} + +// ============================================================================ +// AbstractElectrometerClass::setVoltMeterMode +// ============================================================================ +void AbstractElectrometerClass::setVoltMeterMode (void) +{ + _electrometerProtocol->setVoltMeterMode( ); +/* throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "AbstractElectrometerClass::setAmperMeterMode( )."); +*/} + +// ============================================================================ +// AbstractElectrometerClass::setOhmMeterMode +// ============================================================================ +void AbstractElectrometerClass::setOhmMeterMode (void) +{ + _electrometerProtocol->setOhmMeterMode( ); +/* throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "AbstractElectrometerClass::setAmperMeterMode( )."); +*/} + + +// ============================================================================ +// AbstractElectrometerClass::setCoulombMeterMode +// ============================================================================ +void AbstractElectrometerClass::setCoulombMeterMode (void) +{ + _electrometerProtocol->setCoulombMeterMode( ); +/* throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "AbstractElectrometerClass::setAmperMeterMode( )."); +*/} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterPolarity +// ============================================================================ +std::string AbstractElectrometerClass::get_ElectroMeterPolarity (void) +{ + return _electrometerProtocol->get_polarity( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterFrequency +// ============================================================================ +std::string AbstractElectrometerClass::get_ElectroMeterFrequency (void) +{ + return _electrometerProtocol->get_frequency( ); +} + +// ============================================================================ +// AbstractElectrometerClass::get_ElectroMeterGain +// ============================================================================ +std::string AbstractElectrometerClass::get_ElectroMeterGain (void) +{ + return _electrometerProtocol->get_gain( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_ElectroMeterPolarity +// ============================================================================ +void AbstractElectrometerClass::set_ElectroMeterPolarity (std::string pola) +{ + _electrometerProtocol->set_polarity(pola); +} + +// ============================================================================ +// AbstractElectrometerClass::set_ElectroMeterFrequency +// ============================================================================ +void AbstractElectrometerClass::set_ElectroMeterFrequency (std::string freq) +{ + _electrometerProtocol->set_frequency(freq); +} + +// ============================================================================ +// AbstractElectrometerClass::set_ElectroMeterGain +// ============================================================================ +void AbstractElectrometerClass::set_ElectroMeterGain (std::string gain) +{ + _electrometerProtocol->set_gain(gain); +} + +// ============================================================================ +// AbstractElectrometerClass::set_Zero_VonF_function +// ============================================================================ +void AbstractElectrometerClass::set_Zero_VonF_function (void) +{ + _electrometerProtocol->unable_zeroVF_func( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_Offset_ZeroV1_function +// ============================================================================ +void AbstractElectrometerClass::set_Offset_ZeroV1_function (void) +{ + _electrometerProtocol->unable_offset_zeroV1_func( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_Leakage_ZeroV2_function +// ============================================================================ +void AbstractElectrometerClass::set_Leakage_ZeroV2_function (void) +{ + _electrometerProtocol->unable_leakage_zeroV2_func( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_Test_function +// ============================================================================ +void AbstractElectrometerClass::set_Test_function (void) +{ + _electrometerProtocol->unable_test_func( ); +} + +// ============================================================================ +// AbstractElectrometerClass::set_Measure_function +// ============================================================================ +void AbstractElectrometerClass::set_Measure_function (void) +{ + _electrometerProtocol->unable_measure_func( ); +} + +// ============================================================================ +// AbstractElectrometerClass::mcce_on +// ============================================================================ +void AbstractElectrometerClass::mcce_on (void) +{ + _electrometerProtocol->switch_MCCE2_ON( ); +} + +// ============================================================================ +// AbstractElectrometerClass::mcce_off +// ============================================================================ +void AbstractElectrometerClass::mcce_off (void) +{ + _electrometerProtocol->switch_MCCE2_OFF( ); +} + diff --git a/src/CommunicationLink.cpp b/src/CommunicationLink.cpp new file mode 100644 index 0000000..e84998c --- /dev/null +++ b/src/CommunicationLink.cpp @@ -0,0 +1,50 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Electrometer Support Library +// +// = FILENAME +// CommunicationLink.cpp +// +// = AUTHOR +// X. Elattaoui +// +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include "CommunicationLink.h" + +// ============================================================================ +// CommunicationLink::CommunicationLink +// ============================================================================ +//CommunicationLink::CommunicationLink (const std::string& communication_link_name) +CommunicationLink::CommunicationLink ( std::string& communication_link_name) +: _communication_Device_name(communication_link_name) +{ + std::cout << "CommunicationLink::CommunicationLink <-" << std::endl; + + + std::cout << "CommunicationLink::CommunicationLink ->" << std::endl; +} + +// ============================================================================ +// CommunicationLink::~CommunicationLink +// ============================================================================ +CommunicationLink::~CommunicationLink (void) +{ + std::cout << "CommunicationLink::~CommunicationLink <-" << std::endl; + + + std::cout << "CommunicationLink::~CommunicationLink ->" << std::endl; +} + diff --git a/src/ElectrometerException.cpp b/src/ElectrometerException.cpp new file mode 100644 index 0000000..eba1eab --- /dev/null +++ b/src/ElectrometerException.cpp @@ -0,0 +1,213 @@ +//****************************************************************************************** +// +// +// july 24, 2006 : Source file for the Electrometers exceptions +// (available for all models Keithley and Novelec) +// +// +// author : X.Elattaoui +// +// ElectrometerException.cpp: interface for the communication exceptions class. +// +// +// $Author: stephle $ +// +// $Revision: 1.1 $ +// +// $Log: not supported by cvs2svn $ +// +//****************************************************************************************** + +// ============================================================================ +// DEPENDENCIES +#include "ElectrometerException.h" + +namespace electrometer { + +// ============================================================================ +// Error::Error +// ============================================================================ +Error::Error (void) + : reason ("unknown"), + desc ("unknown error"), + origin ("unknown"), + severity (electrometer::ERR) +{ + +} + +// ============================================================================ +// Error::Error +// ============================================================================ +Error::Error (const char *_reason, + const char *_desc, + const char *_origin, + int _severity) + : reason (_reason), + desc (_desc), + origin (_origin), + severity (_severity) +{ + +} + +// ============================================================================ +// Error::Error +// ============================================================================ +Error::Error (const std::string& _reason, + const std::string& _desc, + const std::string& _origin, + int _severity) + : reason (_reason), + desc (_desc), + origin (_origin), + severity (_severity) +{ + +} + +// ============================================================================ +// Error::Error +// ============================================================================ +Error::Error (const Error& _src) + : reason (_src.reason), + desc (_src.desc), + origin (_src.origin), + severity (_src.severity) +{ + +} + +// ============================================================================ +// Error::~Error +// ============================================================================ +Error::~Error (void) +{ + +} + +// ============================================================================ +// Error::operator= +// ============================================================================ +Error& Error::operator= (const Error& _src) +{ + //- no self assign + if (this == &_src) { + return *this; + } + + this->reason = _src.reason; + this->desc = _src.desc; + this->origin = _src.origin; + this->severity = _src.severity; + + return *this; +} + +// ============================================================================ +// ElectrometerException::ElectrometerException +// ============================================================================ +ElectrometerException::ElectrometerException (void) + : errors(0) +{ + this->push_error(Error()); +} + +// ============================================================================ +// ElectrometerException::ElectrometerException +// ============================================================================ +ElectrometerException::ElectrometerException (const char *_reason, + const char *_desc, + const char *_origin, + int _severity) + : errors(0) +{ + + this->push_error(Error(_reason, _desc, _origin, _severity)); +} + +// ============================================================================ +// ElectrometerException::ElectrometerException +// ============================================================================ +ElectrometerException::ElectrometerException (const std::string& _reason, + const std::string& _desc, + const std::string& _origin, + int _severity) + : errors(0) +{ + this->push_error(_reason, _desc, _origin,_severity); +} + +// ============================================================================ +// ElectrometerException::ElectrometerException +// ============================================================================ +ElectrometerException::ElectrometerException (const ElectrometerException& _src) + : errors(0) +{ + for (unsigned int i = 0; i < _src.errors.size(); i++) { + this->push_error(_src.errors[i]); + } +} + +// ============================================================================ +// ElectrometerException::ElectrometerException +// ============================================================================ +ElectrometerException& ElectrometerException::operator= (const ElectrometerException& _src) +{ + //- no self assign + if (this == &_src) { + return *this; + } + + this->errors.clear(); + + for (unsigned int i = 0; i < _src.errors.size(); i++) { + this->push_error(_src.errors[i]); + } + + return *this; +} + +// ============================================================================ +// ElectrometerException::~ElectrometerException +// ============================================================================ +ElectrometerException::~ElectrometerException (void) +{ + this->errors.clear(); +} + + +// ============================================================================ +// ElectrometerException::push_error +// ============================================================================ +void ElectrometerException::push_error (const char *_reason, + const char *_desc, + const char *_origin, + int _severity) +{ + this->errors.push_back(Error(_reason, _desc, _origin, _severity)); +} + +// ============================================================================ +// ElectrometerException::push_error +// ============================================================================ +void ElectrometerException::push_error (const std::string& _reason, + const std::string& _desc, + const std::string& _origin, + int _severity) +{ + this->errors.push_back(Error(_reason, _desc, _origin, _severity)); +} + +// ============================================================================ +// ElectrometerException::push_error +// ============================================================================ +void ElectrometerException::push_error (const Error& _error) +{ + this->errors.push_back(_error); +} + + +} // namespace electrometer + + diff --git a/src/ElectrometerProtocol.cpp b/src/ElectrometerProtocol.cpp new file mode 100644 index 0000000..f57aae0 --- /dev/null +++ b/src/ElectrometerProtocol.cpp @@ -0,0 +1,582 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - ElectrometerProtocol Support Library +// +// = FILENAME +// ElectrometerProtocol.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include "ElectrometerProtocol.h" +#include "TangoGpibLink.h" +#include "ElectrometerException.h" + +// ============================================================================ +// ElectrometerProtocol::ElectrometerProtocol +// ============================================================================ +ElectrometerProtocol::ElectrometerProtocol () : + _range(0), + _mode("NOT INITIALISED"), + _communication_link(0) +{ + std::cout << "ElectrometerProtocol::ElectrometerProtocol <-" << std::endl; + + std::cout << "ElectrometerProtocol::ElectrometerProtocol ->" << std::endl; +} + +// ============================================================================ +// ElectrometerProtocol::~ElectrometerProtocol +// ============================================================================ +ElectrometerProtocol::~ElectrometerProtocol (void) +{ + std::cout << "ElectrometerProtocol::~ElectrometerProtocol <-" << std::endl; + + if(_communication_link) + { + delete _communication_link; + _communication_link = 0; + } + + std::cout << "ElectrometerProtocol::~ElectrometerProtocol ->" << std::endl; +} + +// ============================================================================ +// ElectrometerProtocol::local +// ============================================================================ +void ElectrometerProtocol::local (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This command is not implemented, if you want it post a bug in MANTIS.", + "ElectrometerProtocol::local( )."); +} + +// ============================================================================ +// ElectrometerProtocol::remote +// ============================================================================ +void ElectrometerProtocol::remote (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This command is not implemented, if you want it post a bug in MANTIS.", + "ElectrometerProtocol::remote( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_integratedValue +// ============================================================================ +std::vector<double> ElectrometerProtocol::get_integratedValue (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_integratedValue( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_fetchValue +// ============================================================================ +std::vector<double> ElectrometerProtocol::get_fetchValue (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_fetchValue( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_frequency +// ============================================================================ +std::string ElectrometerProtocol::get_frequency (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_frequency( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_gain +// ============================================================================ +std::string ElectrometerProtocol::get_gain (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_gain( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_polarity +// ============================================================================ +std::string ElectrometerProtocol::get_polarity (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_polarity( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_polarity +// ============================================================================ +void ElectrometerProtocol::set_polarity (std::string ) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_polarity( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_frequency +// ============================================================================ +void ElectrometerProtocol::set_frequency (std::string ) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_frequency( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_gain +// ============================================================================ +void ElectrometerProtocol::set_gain (std::string ) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_gain( )."); +} + +// ============================================================================ +// ElectrometerProtocol::unable_zeroVF_func +// ============================================================================ +void ElectrometerProtocol::unable_zeroVF_func (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::unable_zeroVF_func( )."); +} + +// ============================================================================ +// ElectrometerProtocol::unable_offset_zeroV1_func +// ============================================================================ +void ElectrometerProtocol::unable_offset_zeroV1_func (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::unable_offset_zeroV1_func( )."); +} + +// ============================================================================ +// ElectrometerProtocol::unable_leakage_zeroV2_func +// ============================================================================ +void ElectrometerProtocol::unable_leakage_zeroV2_func (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::unable_leakage_zeroV2_func( )."); +} + +// ============================================================================ +// ElectrometerProtocol::unable_test_func +// ============================================================================ +void ElectrometerProtocol::unable_test_func (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::unable_test_func( )."); +} + +// ============================================================================ +// ElectrometerProtocol::unable_measure_func +// ============================================================================ +void ElectrometerProtocol::unable_measure_func (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::unable_measure_func( )."); +} + +// ============================================================================ +// ElectrometerProtocol::switch_MCCE2_ON +// ============================================================================ +void ElectrometerProtocol::switch_MCCE2_ON (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::switch_MCCE2_ON( )."); +} + +// ============================================================================ +// ElectrometerProtocol::switch_MCCE2_OFF +// ============================================================================ +void ElectrometerProtocol::switch_MCCE2_OFF (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::switch_MCCE2_OFF( )."); +} + +// ============================================================================ +// ElectrometerProtocol::autoRange_ON +// ============================================================================ +void ElectrometerProtocol::autoRange_on (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::autoRange_on( )."); +} + +// ============================================================================ +// ElectrometerProtocol::autoRange_OFF +// ============================================================================ +void ElectrometerProtocol::autoRange_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::autoRange_off( )."); +} + + +// ============================================================================ +// ElectrometerProtocol::zero_check_on +// ============================================================================ +void ElectrometerProtocol::zero_check_on (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This will be done soon !!!.", + "ElectrometerProtocol::zero_check_on( )."); + +} +// ============================================================================ +// ElectrometerProtocol::zero_check_off +// ============================================================================ +void ElectrometerProtocol::zero_check_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This will be done soon !!!.", + "ElectrometerProtocol::zero_check_off( )."); +} + + +// ============================================================================ +// ElectrometerProtocol::zero_correct_on +// ============================================================================ +void ElectrometerProtocol::zero_correct_on (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This will be done soon !!!.", + "ElectrometerProtocol::zero_correct_on( )."); +} + +// ============================================================================ +// ElectrometerProtocol::zero_correct_off +// ============================================================================ +void ElectrometerProtocol::zero_correct_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_IMPLEMENTED", + "This will be done soon !!!.", + "ElectrometerProtocol::zero_correct_off( )."); + +} + +// ============================================================================ +// ElectrometerProtocol::auto_zero_on +// ============================================================================ +void ElectrometerProtocol::auto_zero_on (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::auto_zero_on( )."); + +} + +// ============================================================================ +// ElectrometerProtocol::auto_zero_off +// ============================================================================ +void ElectrometerProtocol::auto_zero_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::auto_zero_off( )."); + +} + +// ============================================================================ +// ElectrometerProtocol::setAmperMeterMode +// ============================================================================ +void ElectrometerProtocol::setAmperMeterMode (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::setAmperMeterMode( )."); +} +// ============================================================================ +// ElectrometerProtocol::setVoltMeterMode +// ============================================================================ +void ElectrometerProtocol::setVoltMeterMode (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::setVoltMeterMode( )."); +} +// ============================================================================ +// ElectrometerProtocol::setOhmMeterMode +// ============================================================================ +void ElectrometerProtocol::setOhmMeterMode (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::setOhmMeterMode( )."); +} +// ============================================================================ +// ElectrometerProtocol::setCoulombMeterMode +// ============================================================================ +void ElectrometerProtocol::setCoulombMeterMode (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "Novelec does not support this command.", + "ElectrometerProtocol::setCoulombMeterMode( )."); +} + +// ============================================================================ +// ElectrometerProtocol::init_keithley +// ============================================================================ +void ElectrometerProtocol::init_keithley (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::init_keithley( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_knplc +// ============================================================================ +void ElectrometerProtocol::set_knplc (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_knplc( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_knplc +// ============================================================================ +std::string ElectrometerProtocol::get_knplc (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_knplc( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_triggercount +// ============================================================================ +void ElectrometerProtocol::set_triggercount (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_triggercount( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_triggercount +// ============================================================================ +std::string ElectrometerProtocol::get_triggercount (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_triggercount( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_triggerdelay +// ============================================================================ +void ElectrometerProtocol::set_triggerdelay (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_triggerdelay( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_triggerdelay +// ============================================================================ +std::string ElectrometerProtocol::get_triggerdelay (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_triggerdelay( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_triggerdelayAuto +// ============================================================================ +void ElectrometerProtocol::set_triggerdelayAuto (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_triggerdelayAuto( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_triggerdelayAuto +// ============================================================================ +std::string ElectrometerProtocol::get_triggerdelayAuto (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_triggerdelayAuto( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_averagecount +// ============================================================================ +void ElectrometerProtocol::set_averagecount (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_averagecount( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_averagecount +// ============================================================================ +std::string ElectrometerProtocol::get_averagecount (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_averagecount( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_averagecontrol +// ============================================================================ +void ElectrometerProtocol::set_averagecontrol (std::string) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_averagecontrol( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_averagecontrol +// ============================================================================ +std::string ElectrometerProtocol::get_averagecontrol (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_averagecontrol( )."); +} + +// ============================================================================ +// ElectrometerProtocol::clear_registers +// ============================================================================ +void ElectrometerProtocol::clear_registers (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::clear_registers( )."); +} + +// ============================================================================ +// ElectrometerProtocol::averageStateON +// ============================================================================ +void ElectrometerProtocol::averageStateON (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::averageStateON( )."); +} + +// ============================================================================ +// ElectrometerProtocol::averageStateOFF +// ============================================================================ +void ElectrometerProtocol::averageStateOFF (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::averageStateOFF( )."); +} + +// ============================================================================ +// ElectrometerProtocol::set_buffer_size +// ============================================================================ +void ElectrometerProtocol::set_buffer_size (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::set_buffer_size( )."); +} + +// ============================================================================ +// ElectrometerProtocol::clear_buffer +// ============================================================================ +void ElectrometerProtocol::clear_buffer (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::clear_buffer( )."); +} + +// ============================================================================ +// ElectrometerProtocol::store_raw_input +// ============================================================================ +void ElectrometerProtocol::store_raw_input (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::store_raw_input( )."); +} + +// ============================================================================ +// ElectrometerProtocol::start_storing +// ============================================================================ +void ElectrometerProtocol::start_storing (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::start_storing( )."); +} + +// ============================================================================ +// ElectrometerProtocol::enable_SRQBufferFull +// ============================================================================ +void ElectrometerProtocol::enable_SRQBufferFull (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::enable_SRQBufferFull( )."); +} + +// ============================================================================ +// ElectrometerProtocol::disable_SRQBufferFull +// ============================================================================ +void ElectrometerProtocol::disable_SRQBufferFull (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::disable_SRQBufferFull( )."); +} + +// ============================================================================ +// ElectrometerProtocol::readStatusByteRegister +// ============================================================================ +std::string ElectrometerProtocol::readStatusByteRegister (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::readStatusByteRegister( )."); +} + +// ============================================================================ +// ElectrometerProtocol::get_overloadRangeState (DDC Devices !!!) +// ============================================================================ +bool ElectrometerProtocol::get_overloadRangeState (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "This Electrometer does not support this command.", + "ElectrometerProtocol::get_overloadRangeState( )."); +} + diff --git a/src/KeithleyDDCProtocol.cpp b/src/KeithleyDDCProtocol.cpp new file mode 100644 index 0000000..12ac5e8 --- /dev/null +++ b/src/KeithleyDDCProtocol.cpp @@ -0,0 +1,447 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC KeithleyDDCProtocol Support Library +// +// = FILENAME +// KeithleyDDCProtocol.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include "KeithleyDDCProtocol.h" +#include "TangoGpibLink.h" + +// ============================================================================ +// KeithleyDDCProtocol::KeithleyDDCProtocol +// ============================================================================ +KeithleyDDCProtocol::KeithleyDDCProtocol (std::string& gpib_device_name) +: ElectrometerProtocol(), +_is_overloaded(false) +{ + std::cout << "KeithleyDDCProtocol::KeithleyDDCProtocol <-" << std::endl; + + _communication_link = new TangoGpibLink (gpib_device_name); + + std::cout << "KeithleyDDCProtocol::KeithleyDDCProtocol ->" << std::endl; +} + +// ============================================================================ +// KeithleyDDCProtocol::~KeithleyDDCProtocol +// ============================================================================ +KeithleyDDCProtocol::~KeithleyDDCProtocol (void) +{ + std::cout << "KeithleyDDCProtocol::~KeithleyDDCProtocol <-" << std::endl; + + std::cout << "KeithleyDDCProtocol::~KeithleyDDCProtocol ->" << std::endl; +} + +// ============================================================================ +// KeithleyDDCProtocol::set_range +// ============================================================================ +void KeithleyDDCProtocol::set_range (std::string value) +{ +std::stringstream cmd_to_send; + + //- send command to Keithley device + cmd_to_send << "R" << value << "X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::get_range +// ============================================================================ +std::string KeithleyDDCProtocol::get_range (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "For DDC Keithley type, please check the status.", + "KeithleyDDCProtocol::get_range( )."); +} + +// ============================================================================ +// KeithleyDDCProtocol::zero_check_on +// ============================================================================ +void KeithleyDDCProtocol::zero_check_on (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "C1X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} +// ============================================================================ +// KeithleyDDCProtocol::zero_check_off +// ============================================================================ +void KeithleyDDCProtocol::zero_check_off (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "C0X" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + + +// ============================================================================ +// KeithleyDDCProtocol::zero_correct_on +// ============================================================================ +void KeithleyDDCProtocol::zero_correct_on (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "Z1X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::zero_correct_off +// ============================================================================ +void KeithleyDDCProtocol::zero_correct_off (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "Z0X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::auto_zero_on +// ============================================================================ +void KeithleyDDCProtocol::auto_zero_on (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "DDC Keithley does not support this command.", + "KeithleyDDCProtocol::auto_zero_on( )."); + +} + +// ============================================================================ +// KeithleyDDCProtocol::auto_zero_off +// ============================================================================ +void KeithleyDDCProtocol::auto_zero_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "DDC Keithley does not support this command.", + "KeithleyDDCProtocol::auto_zero_off( )."); + +} + +// ============================================================================ +// KeithleyDDCProtocol::autoRange_ON +// ============================================================================ +void KeithleyDDCProtocol::autoRange_on (void) +{ +std::stringstream cmd_to_send; + + cmd_to_send << "R0X" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleyDDCProtocol::autoRange_OFF +// ============================================================================ +void KeithleyDDCProtocol::autoRange_off (void) +{ + throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", + "DDC Keithley does not support this command.", + "KeithleyDDCProtocol::autoRange_off( )."); +} + +// ============================================================================ +// KeithleyDDCProtocol::autoRange_OFF for Keithley 486 & 487 +// ============================================================================ +void KeithleyDDCProtocol::autoRange_OFF_forK486_487 (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "R10X" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleyDDCProtocol::autoRange_OFF for Keithley 617 & 6512 +// ============================================================================ +void KeithleyDDCProtocol::autoRange_OFF_forK617_6512 (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "R12X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::MODE -> Ampere, Volt, Ohm, Coulomb and V on I meters +// ============================================================================ +// ============================================================================ +// KeithleyDDCProtocol::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void KeithleyDDCProtocol::setAmperMeterMode (void) +{ +std::stringstream cmd_to_send; + + //- mode current + _mode = "CURRent"; + + //- send command + cmd_to_send << "F1X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::setAmperMeterMode (487 Keithley DDC model +// ============================================================================ +void KeithleyDDCProtocol::setAmperMeterMode_forK487 (void) +{ +std::stringstream cmd_to_send; + + //- mode current + _mode = "CURRent"; + + //- send command + cmd_to_send << "F0X" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleyDDCProtocol::setVoltMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void KeithleyDDCProtocol::setVoltMeterMode (void) +{ +std::stringstream cmd_to_send; + + //- mode volt + _mode = "VOLTage"; + + //- send command + cmd_to_send << "F0X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::setOhmMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void KeithleyDDCProtocol::setOhmMeterMode (void) +{ +std::stringstream cmd_to_send; + + //- send command + //- mode ohm + _mode = "RESistance"; + + cmd_to_send << "F2X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::setCoulombMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void KeithleyDDCProtocol::setCoulombMeterMode (void) +{ +std::stringstream cmd_to_send; + + //- mode coulomb + _mode = "CHARge"; + + //- send command + cmd_to_send << "F3X" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleyDDCProtocol::get_value +// ============================================================================ +std::string KeithleyDDCProtocol::get_value (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); + + //- send command : G0X -> prefix (to check if device overload !) and second X to get data + cmd_to_send << "G0" << std::ends; + _communication_link->write(cmd_to_send.str()); + + //- get data value + cmd_to_send << "X" << std::ends; + argout = _communication_link->write_read(cmd_to_send.str()); + + //- send command : G1X -> no prefix and second X to get data + cmd_to_send << "G1X" << std::ends; + _communication_link->write(cmd_to_send.str()); + + //- check if device range is overloaded + if(argout[0] == 'O') + _is_overloaded = true; + else + _is_overloaded = false; + + //- return value : data begin at idx 4 + argout = argout.substr(4); + return argout; +} + +// ============================================================================ +// KeithleyDDCProtocol::reset +// ============================================================================ +void KeithleyDDCProtocol::reset (void) +{ +std::stringstream cmd_to_send; + + //- send command to return to default conditions !! + cmd_to_send << "SDC" << std::ends; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleyDDCProtocol::get_raw_status +// ============================================================================ +std::string KeithleyDDCProtocol::get_raw_status (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); + + //- send command : G0X -> show prefix ( = keithley type ) + cmd_to_send << "G0X" << std::endl; + _communication_link->write(cmd_to_send.str()); + + cmd_to_send.str(""); + //- get status word + cmd_to_send << "U0X" << std::endl; + argout = _communication_link->write_read(cmd_to_send.str()); + + std::cout << "\n\nKeithleyDDCProtocol::get_raw_status returns *" << argout << "*" << std::ends; + + return argout; +} + +// ============================================================================ +// KeithleyDDCProtocol::clear_registers +// ============================================================================ +void KeithleyDDCProtocol::clear_registers (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "*CLS" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// Following functions are part of commands supported via the DDC protocol. +// We may have to implement them after first tests on beamlines +/* +// ============================================================================ +// KeithleyDDCProtocol::setExternalFeedbackMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void KeithleyDDCProtocol::setExternalFeedbackMeterMode (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "F4X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::setVonIMeterMode (only 617 Keithley DDC model +// ============================================================================ +void KeithleyDDCProtocol::setVonIMeterMode (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "F5X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleyDDCProtocol::setVonIMeterMode (only 487 Keithley DDC model +// ============================================================================ +void KeithleyDDCProtocol::setVonIMeterMode_forK487 (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << "F1X" << std::ends; + _communication_link->write(cmd_to_send.str()); + +} + + ... TO BE IMPLEMENTED !!!!! + +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::reading_source (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} + +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::data_store (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} + +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::data_format (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} + +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::baseline_suppression_ON (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} + +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::baseline_suppression_OFF (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} +// ============================================================================ +// KeithleyDDCProtocol::reading_source +// ============================================================================ +void KeithleyDDCProtocol::keithley_status (void) + throw (electrometer::ElectrometerException, Tango::DevFailed) +{ + +} +*/ diff --git a/src/KeithleySCPIProtocol.cpp b/src/KeithleySCPIProtocol.cpp new file mode 100644 index 0000000..62af3ae --- /dev/null +++ b/src/KeithleySCPIProtocol.cpp @@ -0,0 +1,898 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI KeithleySCPIProtocol Support Library +// +// = FILENAME +// KeithleySCPIProtocol.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "KeithleySCPIProtocol.h" +#include "TangoGpibLink.h" + +// ============================================================================ +// KeithleySCPIProtocol::KeithleySCPIProtocol +// ============================================================================ +KeithleySCPIProtocol::KeithleySCPIProtocol (std::string& gpib_device_name) +: ElectrometerProtocol(), + isDiffSuportedMode(false), + trigCountStr("") +{ + std::cout << "KeithleySCPIProtocol::KeithleySCPIProtocol <-" << std::endl; + + _communication_link = new TangoGpibLink (gpib_device_name); + + //- Select reading only + std::string cmd_to_send("FORM:ELEM READ"); + + //- send command + _communication_link->write(cmd_to_send); + + std::cout << "KeithleySCPIProtocol::KeithleySCPIProtocol ->" << std::endl; +} + +// ============================================================================ +// KeithleySCPIProtocol::~KeithleySCPIProtocol +// ============================================================================ +KeithleySCPIProtocol::~KeithleySCPIProtocol (void) +{ + std::cout << "KeithleySCPIProtocol::~KeithleySCPIProtocol <-" << std::endl; + + std::cout << "KeithleySCPIProtocol::~KeithleySCPIProtocol ->" << std::endl; +} + +// ============================================================================ +// KeithleySCPIProtocol::set_range +// ============================================================================ +void KeithleySCPIProtocol::set_range (std::string value) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + //- send command to Keithley device + cmd_to_send = tmpMode + ":RANGe " + value ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::zero_check_on +// ============================================================================ +void KeithleySCPIProtocol::zero_check_on (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCH ON" ; + _communication_link->write(cmd_to_send); + +} +// ============================================================================ +// KeithleySCPIProtocol::zero_check_off +// ============================================================================ +void KeithleySCPIProtocol::zero_check_off (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCH OFF"; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::zero_correct_on +// ============================================================================ +void KeithleySCPIProtocol::zero_correct_on (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCOR ON" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::zero_correct_off +// ============================================================================ +void KeithleySCPIProtocol::zero_correct_off (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCOR OFF" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::zero_correct_state_on +// ============================================================================ +void KeithleySCPIProtocol::zero_correct_state_on (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCOR:STAT ON" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::zero_correct_state_off +// ============================================================================ +void KeithleySCPIProtocol::zero_correct_state_off (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:ZCOR:STAT OFF" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::autoRange_ON +// ============================================================================ +void KeithleySCPIProtocol::autoRange_on (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + cmd_to_send = tmpMode + ":RANGe:AUTO ON" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::autoRange_OFF +// ============================================================================ +void KeithleySCPIProtocol::autoRange_off (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = tmpMode + ":RANGe:AUTO OFF"; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::auto_zero_on +// ============================================================================ +void KeithleySCPIProtocol::auto_zero_on (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:AZER ON" ; + _communication_link->write(cmd_to_send); + +} +// ============================================================================ +// KeithleySCPIProtocol::auto_zero_off +// ============================================================================ +void KeithleySCPIProtocol::auto_zero_off (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "SYST:AZER OFF" ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::MODE -> Ampere, Volt, Ohm, Coulomb and V on I meters +// ============================================================================ +// ============================================================================ +// KeithleySCPIProtocol::setAmperMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setAmperMeterMode (void) +{ +std::stringstream cmd_to_send; +std::string mode_ (""); + + //- mode current (send CURR) + mode_ = "CURRent"; + + //- send command + cmd_to_send << "FUNC \'" << mode_ << "\'" << std::endl; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleySCPIProtocol::setVoltMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setVoltMeterMode (void) +{ +std::stringstream cmd_to_send; +std::string mode_ (""); + + //- mode volt + mode_ = "VOLTage"; + + //- send command + cmd_to_send << "FUNC \'" << mode_ << "\'" << std::endl; + _communication_link->write(cmd_to_send.str()); +} + +// ============================================================================ +// KeithleySCPIProtocol::setOhmMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setOhmMeterMode (void) +{ +std::stringstream cmd_to_send; +std::string mode_ (""); + + //- mode ohm + mode_ = "RESistance"; + + //- send command + cmd_to_send << "FUNC \'" << mode_ << "\'" << std::endl; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleySCPIProtocol::setCoulombMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setCoulombMeterMode (void) +{ +std::stringstream cmd_to_send; +std::string mode_ (""); + + //- mode coulomb + mode_ = "CHARge"; + + //- send command + cmd_to_send << "FUNC \'" << mode_ << "\'" << std::endl; + _communication_link->write(cmd_to_send.str()); + +} + +// ============================================================================ +// KeithleySCPIProtocol::get_mode +// ============================================================================ +std::string KeithleySCPIProtocol::get_mode (void) +{ +std::string cmd_to_send(""); + + //- get electrometer mode + if(isDiffSuportedMode) + { + //- send command + cmd_to_send = "FUNC?" ; + _mode = _communication_link->write_read(cmd_to_send); + //- _mode returned is as this "RES" so, erase " caracters + _mode.erase(_mode.find("\""), 1); + _mode.erase(_mode.find("\""), 1); + } + else + _mode = "CURR\n"; + + return _mode; + +} + +// ============================================================================ +// KeithleySCPIProtocol::get_range +// ============================================================================ +std::string KeithleySCPIProtocol::get_range (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = tmpMode + ":RANGe?" ; + std::string _rangeStr = _communication_link->write_read(cmd_to_send); + + return _rangeStr; + +} + +// ============================================================================ +// KeithleySCPIProtocol::get_value +// ============================================================================ +std::string KeithleySCPIProtocol::get_value (void) +{ +std::string cmd_to_send(""); +std::string tmp(""); + + //- This command performs an INIT and then query the updated value + cmd_to_send = "MEAS?" ; + tmp = _communication_link->write_read(cmd_to_send); + + //- extract all data + return tmp; +} + +// ============================================================================ +// KeithleySCPIProtocol::get_integratedValue +// ============================================================================ +std::vector<double> KeithleySCPIProtocol::get_integratedValue (void) +{ +std::string cmd_to_send(""); +std::string tmp(""); + + //- This command performs an INIT and then query the bufferised values + cmd_to_send = "TRAC:DATA?" ; + tmp = _communication_link->write_read(cmd_to_send); + + //- extract all data + return buildDataList(tmp); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_fetchValue +// ============================================================================ +std::vector<double> KeithleySCPIProtocol::get_fetchValue (void) +{ +std::string cmd_to_send(""); +std::string tmp(""); + + //- This command queries the last value(s) + cmd_to_send = "FETch?" ; + tmp = _communication_link->write_read(cmd_to_send); + + //- extract all data + return buildDataList(tmp); + +} + +// ============================================================================ +// KeithleySCPIProtocol::buildDataList +// +// This method extract and convert data from the received string +// ============================================================================ +std::vector<double> KeithleySCPIProtocol::buildDataList(std::string datalist) +{ +std::string dataStr(""); +std::vector<double> argout; +std::string::size_type posBeg; +std::string::size_type posEnd; +short numberOfData = 0; + //- + posBeg = 0; + posEnd = datalist.find(',', posBeg); +//-DEBUG std::cout << "\t*****::buildDataList -> argin :\n$" << datalist << "$" << std::endl; + //- there is just one value + if(posEnd == std::string::npos) + { + argout.push_back( XString<double>::convertFromString(datalist) ); +//-DEBUG std::cout << "\t*****::buildDataList -> JUST ONE DATA :$" << datalist << "$" << std::endl; + } + else + { + int i = 0; + //std::string tmp = get_triggercount(); + numberOfData = XString<short>::convertFromString(get_triggercount()); + + for(i=0; i < numberOfData; i++) + { + dataStr = datalist.substr(posBeg,posEnd); + argout.push_back( XString<double>::convertFromString(dataStr) ); +//-DEBUG std::cout << "\t*****::buildDataList -> FULL OF DATA : " << i << " -> $" << argout[i] << "$" << std::endl; + posBeg = posEnd+1; + posEnd = datalist.find(',', posBeg); + + //- end of string reached so latest data is here + if(posEnd == std::string::npos) + { + dataStr = datalist.substr(posBeg); + argout.push_back( XString<double>::convertFromString(dataStr) ); + break; + } + + } + } + + return argout; +} + +// ============================================================================ +// KeithleySCPIProtocol::init_keithley to perform reading(s) data +// ============================================================================ +void KeithleySCPIProtocol::init_keithley (void) +{ +std::string cmd_to_send("INIT"); + + //- send command : INIT to trigg readings ! + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::set_knplc : specify the integration rate +// ============================================================================ +void KeithleySCPIProtocol::set_knplc (std::string nbNPLC) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = tmpMode + ":NPLC " + nbNPLC ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_knplc : get the integration rate +// ============================================================================ +std::string KeithleySCPIProtocol::get_knplc (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode + tmpMode = get_mode( ); + + //- erase bad caracters + tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = tmpMode + ":NPLCycles?" ; + return _communication_link->write_read(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::set_triggercount +// ============================================================================ +void KeithleySCPIProtocol::set_triggercount (std::string nbTrigCount) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "TRIG:COUN " + nbTrigCount ; + //- for internal use ( = keithley device buffer size) + trigCountStr = nbTrigCount; + + _communication_link->write(cmd_to_send); + + //- set buffer size ( = number of triggers ) + set_buffer_size(); + +} + +// ============================================================================ +// KeithleySCPIProtocol::get_triggercount +// ============================================================================ +std::string KeithleySCPIProtocol::get_triggercount (void) +{ +std::string cmd_to_send(""); +std::string response(""); + + //- send command + cmd_to_send = "TRIG:COUNt?" ; + response = _communication_link->write_read(cmd_to_send); + + return response; +} + +// ============================================================================ +// KeithleySCPIProtocol::set_triggerdelay +// ============================================================================ +void KeithleySCPIProtocol::set_triggerdelay (std::string trigDelay) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "TRIG:DEL " + trigDelay ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_triggerdelay +// ============================================================================ +std::string KeithleySCPIProtocol::get_triggerdelay (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "TRIG:DEL?" ; + return _communication_link->write_read(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::set_triggerdelayAuto +// ============================================================================ +void KeithleySCPIProtocol::set_triggerdelayAuto (std::string trigDelayAuto) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "TRIG:DEL:" + trigDelayAuto ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_triggerdelayAuto +// ============================================================================ +std::string KeithleySCPIProtocol::get_triggerdelayAuto (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "TRIG:DEL:AUTO?" ; + return _communication_link->write_read(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::set_averagecount +// ============================================================================ +void KeithleySCPIProtocol::set_averagecount (std::string nbAverageCount) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode +// tmpMode = get_mode( ); + + //- erase bad caracters +// tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = "AVER:COUN " + nbAverageCount; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_averagecount +// ============================================================================ +std::string KeithleySCPIProtocol::get_averagecount (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode +// tmpMode = get_mode( ); + + //- erase bad caracters +// tmpMode.erase(tmpMode.find("\n") ); + + //- send command + cmd_to_send = "AVER:COUNt?" ; + return _communication_link->write_read(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::set_averagecontrol +// ============================================================================ +void KeithleySCPIProtocol::set_averagecontrol (std::string nbAverageControl) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode +// tmpMode = get_mode( ); + + //- send command + cmd_to_send = "AVER:TCON " + nbAverageControl; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_averagecontrol +// ============================================================================ +std::string KeithleySCPIProtocol::get_averagecontrol (void) +{ +std::string cmd_to_send(""); +std::string tmpMode; + + //- get electrometer mode +// tmpMode = get_mode( ); + + //- send command + cmd_to_send = "AVER:TCONtrol?" ; + return _communication_link->write_read(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::clear_registers +// ============================================================================ +void KeithleySCPIProtocol::clear_registers (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "*CLS" ; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::averageStateON +// ============================================================================ +void KeithleySCPIProtocol::averageStateON (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "AVER ON" ; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::averageStateOFF +// ============================================================================ +void KeithleySCPIProtocol::averageStateOFF (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "AVER OFF"; + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::reset +// ============================================================================ +void KeithleySCPIProtocol::reset (void) +{ +std::string cmd_to_send(""); + + //- send command + cmd_to_send = "*RST" ; + _communication_link->write(cmd_to_send); + + //- Select reading only + cmd_to_send = "FORM:ELEM READ"; + + //- send command + _communication_link->write(cmd_to_send); +} + +// ============================================================================ +// KeithleySCPIProtocol::get_raw_status +// ============================================================================ +std::string KeithleySCPIProtocol::get_raw_status (void) +{ +std::string cmd_to_send(""); +std::string argout("no data"); + + //- send command : read error queue only + cmd_to_send = "STAT:QUE?"; + argout = _communication_link->write_read(cmd_to_send); + + + return argout; +} + +// ============================================================================ +// KeithleySCPIProtocol::set_buffer_size() +// ============================================================================ +void KeithleySCPIProtocol::set_buffer_size (void) +{ +std::string cmd_to_send(""); + + //- send command : size = number of triggers + cmd_to_send = "TRAC:POIN " + trigCountStr; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::clear_buffer() +// ============================================================================ +void KeithleySCPIProtocol::clear_buffer (void) +{ +std::string cmd_to_send("TRAC:CLEAR"); + + //- send command : clear previous data + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::store_raw_input() +// ============================================================================ +void KeithleySCPIProtocol::store_raw_input (void) +{ +std::string cmd_to_send("TRAC:FEED SENS"); + + //- send command : Store raw input readings + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::start_storing() +// ============================================================================ +void KeithleySCPIProtocol::start_storing (void) +{ +std::string cmd_to_send("TRAC:FEED:CONT NEXT"); + + //- send command : Start storing readings + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::enable_SRQBufferFull() +// ============================================================================ +void KeithleySCPIProtocol::enable_SRQBufferFull (void) +{ +/**********************************************************/ +/* NOTE : */ +/* 512 is the 10th bit in the MESUREMENT EVENT REGISTERS */ +/* which the BUFFER FULL bit that can be enabled */ +/**********************************************************/ + + std::string cmd_to_send("STAT:MEAS:ENAB 512"); + + //- send command : enable buffer full in the Measurement event enable register + _communication_link->write(cmd_to_send); + + //- Program the service request enable register: to send SRQ on Buffer Full ! + cmd_to_send = "*SRE 1"; + + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::disable_SRQBufferFull() +// ============================================================================ +void KeithleySCPIProtocol::disable_SRQBufferFull (void) +{ +std::string cmd_to_send("STAT:MEAS?"); + + //- send command : disable buffer full event + _communication_link->write_read(cmd_to_send); + + //- Disable the service request enable register + cmd_to_send = "*SRE 0"; + _communication_link->write(cmd_to_send); + +} + +// ============================================================================ +// KeithleySCPIProtocol::readStatusByteRegister() +// ============================================================================ +std::string KeithleySCPIProtocol::readStatusByteRegister (void) +{ +std::string cmd_to_send("*STB?"); + + //- if asserted -> the event sets a bit in the Status Byte Register + return _communication_link->write_read(cmd_to_send); + + //- Cf Keithley doc to know how the to get the wanted event + //- Chapter : Status Structure +} + + + + +// Following functions are part of commands supported via the SCPI protocol. +// We may have to implement them after first tests on beamlines + +/* +// ============================================================================ +// KeithleySCPIProtocol::setExternalFeedbackMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setExternalFeedbackMeterMode (void) +{ +std::stringstream cmd_to_send; + + cmd_to_send << "F4X" << std::endl; + _communication_link->write(cmd_to_send()); + +} + +// ============================================================================ +// KeithleySCPIProtocol::setVonIMeterMode +// ============================================================================ +void KeithleySCPIProtocol::setVonIMeterMode (void) +{ +std::stringstream cmd_to_send; + + //- send command + try + { + cmd_to_send << "F5X" << std::endl; + _communication_link->write(cmd_to_send.str()); + } + catch(Tango::DevFailed& df) + { + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + (const char*)"Unable to perform a write operation", + (const char*)"KeithleySCPIProtocol::setVonIMeterMode"); + } + catch(...) + { + throw ; + } + +} +*/ + +/* TO BE IMPLEMENTED !!!!! + +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::reading_source (void) +{ + +} + +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::data_store (void) +{ + +} + +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::data_format (void) +{ + +} + +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::baseline_suppression_ON (void) +{ + +} + +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::baseline_suppression_OFF (void) +{ + +} +// ============================================================================ +// KeithleySCPIProtocol::reading_source +// ============================================================================ +void KeithleySCPIProtocol::keithley_status (void) +{ + +} +*/ diff --git a/src/Keithley_485.cpp b/src/Keithley_485.cpp new file mode 100644 index 0000000..1ac0af8 --- /dev/null +++ b/src/Keithley_485.cpp @@ -0,0 +1,255 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_485.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 485; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "KeithleyDDCProtocol.h" +#include "Keithley_485.h" +/* +* Valid Range values for a K_485 +*/ +static const std::string K485_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3"}; + +/* +* Range limit +*/ +static const short K485_rangeLimit = 7; + +// ============================================================================ +// Keithley_485::Keithley_485 +// ============================================================================ +Keithley_485::Keithley_485 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) + +{ + std::cout << "Keithley_485::Keithley_485 <-" << std::endl; + + _electrometerProtocol = new KeithleyDDCProtocol (_device_proxy_name); + + std::cout << "Keithley_485::Keithley_485 ->" << std::endl; +} + +// ============================================================================ +// Keithley_485::~Keithley_485 +// ============================================================================ +Keithley_485::~Keithley_485 (void) +{ + std::cout << "Keithley_485::~Keithley_485 <-" << std::endl; + + std::cout << "Keithley_485::~Keithley_485 ->" << std::endl; +} + +// ============================================================================ +// Keithley_485::range_up +// ============================================================================ +void Keithley_485::range_up (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range += 1; + + if(_range > K485_rangeLimit) + { + _range = K485_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_485::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_485::range_down +// ============================================================================ +void Keithley_485::range_down (void) +{ + +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range -= 1; + + if(_range < 0) + { + _range=0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_485::range_down( )."); + } + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_485::get_ElectroMeterRange +// ============================================================================ +std::string Keithley_485::get_ElectroMeterRange (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _rangeStr; +} + +// ============================================================================ +// Keithley_485::electrometer_status +// ============================================================================ +std::string Keithley_485::electrometer_status (void) +{ + std::string _kstatus("undefined status"); + std::string argout("undefined status"); + std::string tmp(""); + + //- read keithley status from HW + _kstatus = _electrometerProtocol->get_raw_status(); + + //- build status + try + { + //- model number : + std::string modelNum = _kstatus.substr(0,3); + //- if not expected data (here model number) + if(modelNum.find("485") == std::string::npos) + { + set_electroState(ALARM); + argout = "Invalid status string received"; + return argout; + } + argout = "Keithley Type : " + modelNum + "\n"; + //- Zero check state + tmp = _kstatus.substr(3,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Check : ON\n"; + else + argout += "Zero Check : OFF\n"; + //- Log state + tmp = _kstatus.substr(4,1); + if(XString<short>::convertFromString(tmp)) + argout += "Log : ON\n"; + else + argout += "Log : OFF\n"; + //- Range + tmp = _kstatus.substr(5,1); + _range = XString<short>::convertFromString(tmp); + _rangeStr = K485_rangeValue[_range]; + argout += _rangeStr + "\n"; + //- Relative (baseline suppress) + tmp = _kstatus.substr(6,1); + if(XString<short>::convertFromString(tmp)) + argout += "Relative ON\n"; + else + argout += "Relative OFF\n"; + //- Relative (baseline suppress) + tmp = _kstatus.substr(7,1); + if(XString<short>::convertFromString(tmp)) + argout += "EOI : Send\n"; + else + argout += "EOI : Do Not Send\n"; + //- Trigger + tmp = _kstatus.substr(8,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Trigger : Continuous on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Trigger :One-Shot on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Trigger :Continuous on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Trigger :One-Shot on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Trigger :Continuous on \"X\"\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Trigger :One-Shot on \"X\"\n"; + //- SRQ Data Mask + tmp = _kstatus.substr(9,2); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ Data Mask : SRQ Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ Data Mask : Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "SRQ Data Mask : Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 9) + argout += "SRQ Data Mask : Reading Done or Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 16) + argout += "SRQ Data Mask : Busy\n"; + else + if(XString<short>::convertFromString(tmp) == 17) + argout += "SRQ Data Mask : Busy or Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 24) + argout += "SRQ Data Mask : Busy or Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 25) + argout += "SRQ Data Mask : Busy, Reading Done or Reading Overflow\n"; + //- SRQ Error Mask + tmp = _kstatus.substr(9,2); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ Error Mask : SRQ Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ Error Mask : IDDCO\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "SRQ Error Mask : IDDC\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "SRQ Error Mask : IDDCO or IDDC\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "SRQ Error Mask : Not in Remote\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "SRQ Error Mask : Not in Remote or IDDCO\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "SRQ Error Mask : Not in Remote or IDDC\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "SRQ Error Mask : Not in Remote, IDDCO or IDDC\n"; + } + catch(std::out_of_range) + { + set_electroState(ALARM); + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Cannot extract device status [find or substr failed !].", + "Keithley_485::electrometer_status( )."); + } + + set_electroState(ON); + return argout; +} + diff --git a/src/Keithley_486.cpp b/src/Keithley_486.cpp new file mode 100644 index 0000000..efa11a1 --- /dev/null +++ b/src/Keithley_486.cpp @@ -0,0 +1,355 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_486.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 486; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_486.h" +#include "KeithleyDDCProtocol.h" +/* +* Valid Range values for a K_486 +*/ +static const std::string K486_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3", "AUTO OFF"}; +/* +* Range limit : no range for values R8 & R9 (R10 = AUTORANGE OFF) +*/ +static short K486_rangeLimit = 8; + + +// ============================================================================ +// Keithley_486::Keithley_486 +// ============================================================================ +Keithley_486::Keithley_486 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_486::Keithley_486 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleyDDCProtocol(_device_proxy_name); + + std::cout << "Keithley_486::Keithley_486 ->" << std::endl; +} + +// ============================================================================ +// Keithley_486::~Keithley_486 +// ============================================================================ +Keithley_486::~Keithley_486 (void) +{ + std::cout << "Keithley_486::~Keithley_486 <-" << std::endl; + + std::cout << "Keithley_486::~Keithley_486 ->" << std::endl; +} + +// ============================================================================ +// Keithley_486::autoRange_off +// ============================================================================ +void Keithley_486::autoRange_off (void) +{ + + //- send the appropriate command + KeithleyDDCProtocol* _kddc = dynamic_cast<KeithleyDDCProtocol*>(_electrometerProtocol); + if(_kddc) + _kddc->autoRange_OFF_forK486_487(); +} + +// ============================================================================ +// Keithley_486::range_up +// ============================================================================ +void Keithley_486::range_up (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range += 1; + + if(_range > K486_rangeLimit) + { + _range =K486_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_486::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_486::range_down +// ============================================================================ +void Keithley_486::range_down (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range -= 1; + + if(_range < 0) + { + _range = 0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_486::range_down( )."); + } + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_486::get_ElectroMeterRange +// ============================================================================ +std::string Keithley_486::get_ElectroMeterRange (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _rangeStr; +} + +// ============================================================================ +// Keithley_486::electrometer_status +// ============================================================================ +std::string Keithley_486::electrometer_status (void) +{ + std::string _kstatus("undefined status"); + std::string argout("undefined status"); + std::string tmp(""); + + //- read keithley status from HW + _kstatus = _electrometerProtocol->get_raw_status(); + + //- build status + try + { + //- model number : + std::string modelNum = _kstatus.substr(0,3); + //- if not expected data (here model number) + if(modelNum.find("486") == std::string::npos) + { + set_electroState(ALARM); + argout = "Invalid status string received"; + return argout; + } + argout = "Keithley Type : " + modelNum + "\n"; + //- Display Intensity ('A') + tmp = _kstatus.substr(_kstatus.find('A')+1,1); + std::cout << "\nDisplay Intensity = *" << tmp <<"*" << std::endl; + if(!XString<short>::convertFromString(tmp)) + argout += "Display Intensity : NORMAL\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Display Intensity : DIM\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Display Intensity : OFF\n"; + //- Reading Source ('B') + tmp = _kstatus.substr(_kstatus.find('B')+1,1); + std::cout << "\nReading Source = *" << tmp <<"*" << std::endl; + if(!XString<short>::convertFromString(tmp)) + argout += "Reading Source : A/D Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Reading Source : One Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Reading Source : All Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Reading Source : Max Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Reading Source : Min Data Store Reading\n"; + //- Zero check state ('C') + tmp = _kstatus.substr(_kstatus.find('C')+1,1); + std::cout << "\nZero check state = *" << tmp <<"*" << std::endl; + if(XString<short>::convertFromString(tmp)) + argout += "Zero Check : Enabled\n"; + else + argout += "Zero Check : Disabled\n"; + //- Data Format ('G') + tmp = _kstatus.substr(_kstatus.find('G')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Format : Reading With Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Data Format : Reading Without Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Data Format : Reading and Buffer Location With Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Data Format : Reading and Buffer Location Without Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Data Format : Binary Reading - precision, bytes reversed for Intel CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Data Format : Binary Reading - precision, bytes in normal order for Motorola CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Data Format : Binary Reading - counts and exponent, bytes reversed for Intel CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Data Format : Binary Reading - counts and exponent, bytes in normal order for Motorola CPUs\n"; + //- Self Test ('J') + tmp = _kstatus.substr(_kstatus.find('J')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Self Test : No Errors\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Self Test : ROM Error\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Self Test : RAM Error\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Self Test : ROM and RAM Error\n"; + //- EOI & Bus Hold Off ('K') + tmp = _kstatus.substr(_kstatus.find('J')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "EOI & Bus Hold Off : EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "EOI & Bus Hold Off : No EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "EOI & Bus Hold Off : EOI and no Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "EOI & Bus Hold Off : No EOI and no Hold-Off\n"; + //- SRQ ('M') + tmp = _kstatus.substr(_kstatus.find('M')+1,3); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ : Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ : Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "SRQ : Data Store Full\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "SRQ : Data Store 1/2 full\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "SRQ : Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 16) + argout += "SRQ : Ready\n"; + else + if(XString<short>::convertFromString(tmp) == 32) + argout += "SRQ : Error\n"; + else + if(XString<short>::convertFromString(tmp) == 128) + argout += "SRQ : Voltage Source Error\n"; + //- Data Store Size ('N') + tmp = _kstatus.substr(_kstatus.find('N')+1,3); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Store Size : Wrap Around\n"; + else + argout += "Data Store Size : " + tmp + "\n"; + //- Filters ('P') + tmp = _kstatus.substr(_kstatus.find('P')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Filters : Both Filters Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Filters : Digital Filter Enabled, Analog Filter Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Filters : Digital Filter Disabled, Analog Filter Enabled\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Filters : Both Filters Enabled\n"; + //- Range ('Rmn') + //- check AutoRange + tmp = _kstatus.substr(_kstatus.find('R')+1,2); + std::cout << "\ncheck AutoRange = *" << tmp[0] << "*" << std::endl; +// if(atoi(&tmp[0]) == 0) + if(tmp[0] == '0') + argout += "Range : AutoRange Disabled\n"; + else + argout += "Range : AutoRange Enabled\n"; + //- range value +// tmp = _kstatus.substr(_kstatus.find('R')+2,1); + _range = atoi(&tmp[1]); + _rangeStr = K486_rangeValue[_range]; + std::cout << "\nRange = *" << _range <<"*" << ", RangeStr=" << _rangeStr << std::endl; + argout += _rangeStr + "\n"; + //- Integration Period ('S') + tmp = _kstatus.substr(_kstatus.find('S')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Integration Period : Fast (4-1/2d)\n"; + else + argout += "Integration Period : Line Cycle (5-1/2d)\n"; + //- Trigger ('T') + tmp = _kstatus.substr(_kstatus.find('T')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Trigger : Multiple On Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Trigger : One-shot On Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Trigger : Multiple On Get\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Trigger : One-shot On Get)\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Trigger : Multiple On X\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Trigger : One-shot On X\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Trigger : Multiple On External Trigger\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Trigger : One-shot On External Trigger\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "Trigger : Multiple On Operate\n"; + else + if(XString<short>::convertFromString(tmp) == 9) + argout += "Trigger : One-shot On Operate\n"; + //- Relative ('Z') (baseline suppress) + tmp = _kstatus.substr(_kstatus.find('Z')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Relative : Current Rel Disabled\n"; + else + argout += "Relative : Current Rel Enabled\n"; + } + catch(std::out_of_range) + { + set_electroState(ALARM); + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Cannot extract device status [find or substr failed !].", + "Keithley_486::electrometer_status( )."); + } + + set_electroState(ON); + return argout; +} diff --git a/src/Keithley_487.cpp b/src/Keithley_487.cpp new file mode 100644 index 0000000..8496b32 --- /dev/null +++ b/src/Keithley_487.cpp @@ -0,0 +1,388 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_487.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 487; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_487.h" +#include "KeithleyDDCProtocol.h" +/* +* Valid Range values for a K_487 +*/ +static const std::string K487_rangeValue[] = {"AUTO ON","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3", "AUTO OFF"}; +/* +* Range limit : no range for values R8 & R9 (R10 = AUTORANGE OFF) +*/ +static short K487_rangeLimit = 8; + + +// ============================================================================ +// Keithley_487::Keithley_487 +// ============================================================================ +Keithley_487::Keithley_487 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_487::Keithley_487 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleyDDCProtocol (_device_proxy_name); + + std::cout << "Keithley_487::Keithley_487 ->" << std::endl; +} + +// ============================================================================ +// Keithley_487::~Keithley_487 +// ============================================================================ +Keithley_487::~Keithley_487 (void) +{ + std::cout << "Keithley_487::~Keithley_487 <-" << std::endl; + + std::cout << "Keithley_487::~Keithley_487 ->" << std::endl; +} + +// ============================================================================ +// Keithley_487::autoRange_off +// ============================================================================ +void Keithley_487::autoRange_off (void) +{ + + //- send the appropriate command + KeithleyDDCProtocol* _kddc = dynamic_cast<KeithleyDDCProtocol*>(_electrometerProtocol); + if(_kddc) + _kddc->autoRange_OFF_forK486_487(); +} + +// ============================================================================ +// Keithley_487::range_up +// ============================================================================ +void Keithley_487::range_up (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range += 1; + + if(_range > K487_rangeLimit) + { + _range = K487_rangeLimit; + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_487::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_487::range_down +// ============================================================================ +void Keithley_487::range_down (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range -= 1; + + if(_range < 0) + { + _range=0; + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_487::range_down( )."); + } + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_487::get_ElectroMeterRange +// ============================================================================ +std::string Keithley_487::get_ElectroMeterRange (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _rangeStr; +} + +// ============================================================================ +// Keithley_487::get_ElectroMeterMode +// ============================================================================ +std::string Keithley_487::get_ElectroMeterMode (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _mode; +} + +// ============================================================================ +// Keithley_487::setAmperMeterMode +// ============================================================================ +void Keithley_487::setAmperMeterMode (void) +{ + + //- send the appropriate command + KeithleyDDCProtocol* _kddc = dynamic_cast<KeithleyDDCProtocol*>(_electrometerProtocol); + if(_kddc) + _kddc->setAmperMeterMode_forK487(); + else + throw electrometer::ElectrometerException("BAD_CAST", + "Unable to switch the electrmometer mode.", + "Keithley_487::setAmperMeterMode( )."); +} + +// ============================================================================ +// Keithley_487::electrometer_status +// ============================================================================ +std::string Keithley_487::electrometer_status (void) +{ + std::string _kstatus("undefined status"); + std::string argout("undefined status"); + std::string tmp(""); + + //- read keithley status from HW + _kstatus = _electrometerProtocol->get_raw_status(); + + //- build status + try + { + std::string modelNum = _kstatus.substr(0,3); + //- if not expected data (here model number) + if(modelNum.find("487") == std::string::npos) + { + set_electroState(ALARM); + argout = "Invalid status string received"; + return argout; + } + argout = "Keithley Type : " + modelNum + "\n"; + //- Display Intensity ('A') + tmp = _kstatus.substr(_kstatus.find('A')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Display Intensity : NORMAL\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Display Intensity : DIM\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Display Intensity : OFF\n"; + //- Reading Source ('B') + tmp = _kstatus.substr(_kstatus.find('B'),1); + if(!XString<short>::convertFromString(tmp)) + argout += "Reading Source : A/D Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Reading Source : One Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Reading Source : All Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Reading Source : Max Data Store Reading\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Reading Source : Min Data Store Reading\n"; + //- Zero check state ('C') + tmp = _kstatus.substr(_kstatus.find('C')+1,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Check : Enabled\n"; + else + argout += "Zero Check : Disabled\n"; + //- V/I Ohms ('F') + tmp = _kstatus.substr(_kstatus.find('F')+1,1); + if(XString<short>::convertFromString(tmp)) + { + argout += "V/I Ohms : Enabled\n"; + _mode = "V/I Ohms"; + } + else + { + argout += "V/I Ohms : Disabled\n"; + _mode = "CURRent"; + } + //- Data Format ('G') + tmp = _kstatus.substr(_kstatus.find('G')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Format : Reading With Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Data Format : Reading Without Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Data Format : Reading and Buffer Location With Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Data Format : Reading and Buffer Location Without Prefix (ASCII)\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Data Format : Binary Reading - precision, bytes reversed for Intel CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Data Format : Binary Reading - precision, bytes in normal order for Motorola CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Data Format : Binary Reading - counts and exponent, bytes reversed for Intel CPUs\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Data Format : Binary Reading - counts and exponent, bytes in normal order for Motorola CPUs\n"; + //- Self Test ('J') + tmp = _kstatus.substr(_kstatus.find('J')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Self Test : No Errors\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Self Test : ROM Error\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Self Test : RAM Error\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Self Test : ROM and RAM Error\n"; + //- EOI & Bus Hold Off ('K') + tmp = _kstatus.substr(_kstatus.find('K')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "EOI & Bus Hold Off : EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "EOI & Bus Hold Off : No EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "EOI & Bus Hold Off : EOI and no Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "EOI & Bus Hold Off : No EOI and no Hold-Off\n"; + //- SRQ ('M') + tmp = _kstatus.substr(_kstatus.find('M')+1,3); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ : Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ : Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "SRQ : Data Store Full\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "SRQ : Data Store 1/2 full\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "SRQ : Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 16) + argout += "SRQ : Ready\n"; + else + if(XString<short>::convertFromString(tmp) == 32) + argout += "SRQ : Error\n"; + else + if(XString<short>::convertFromString(tmp) == 128) + argout += "SRQ : Voltage Source Error\n"; + //- Data Store Size ('N') + tmp = _kstatus.substr(_kstatus.find('N')+1,3); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Store Size : Wrap Around\n"; + else + argout += "Data Store Size : " + tmp + "\n"; + //- Filters ('P') + tmp = _kstatus.substr(_kstatus.find('P')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Filters : Both Filters Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Filters : Digital Filter Enabled, Analog Filter Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Filters : Digital Filter Disabled, Analog Filter Enabled\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Filters : Both Filters Enabled\n"; + //- Range ('Rmn') + //- check AutoRange + tmp = _kstatus.substr(_kstatus.find('R')+1,2); + if(tmp[0] == '0') + argout += "Range : AutoRange Disabled\n"; + else + argout += "Range : AutoRange Enabled\n"; + //- range value + _range = atoi(&tmp[1]); + _rangeStr = K487_rangeValue[_range]; + argout += _rangeStr + "\n"; + //- Integration Period ('S') + tmp = _kstatus.substr(_kstatus.find('S')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Integration Period : Fast (4-1/2d)\n"; + else + argout += "Integration Period : Line Cycle (5-1/2d)\n"; + //- Trigger ('T') + tmp = _kstatus.substr(_kstatus.find('T')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Trigger : Multiple On Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Trigger : One-shot On Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Trigger : Multiple On Get\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Trigger : One-shot On Get)\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Trigger : Multiple On X\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Trigger : One-shot On X\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Trigger : Multiple On External Trigger\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Trigger : One-shot On External Trigger\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "Trigger : Multiple On Operate\n"; + else + if(XString<short>::convertFromString(tmp) == 9) + argout += "Trigger : One-shot On Operate\n"; + //- Relative ('Z') (baseline suppress) + tmp = _kstatus.substr(_kstatus.find('Z')+1,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Relative : Current Rel Disabled\n"; + else + argout += "Relative : Current Rel Enabled\n"; + } + catch(std::out_of_range) + { + set_electroState(ALARM); + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Cannot extract device status [find or substr failed !].", + "Keithley_487::electrometer_status( )."); + } + + set_electroState(ON); + return argout; +} diff --git a/src/Keithley_617.cpp b/src/Keithley_617.cpp new file mode 100644 index 0000000..cc9d724 --- /dev/null +++ b/src/Keithley_617.cpp @@ -0,0 +1,396 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - DDC KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_617.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 617; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_617.h" +#include "KeithleyDDCProtocol.h" +/* +* Valid Range values for a K_617 +*/ +static const std::string K617_AmpRangeValue[] = {"AUTO ON","2E-12","2E-11","2E-10","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3","2E-2", "AUTO OFF"}; +static const std::string K617_VoltRangeValue[]= {"AUTO ON","2E-1","2","20","200","200","200","200","200","200","200","200", "AUTO OFF"}; +static const std::string K617_OhmRangeValue[] = {"AUTO ON","2E3","2E4","2E5","2E6","2E7","2E8","2E9","2E10","2E11","2E11","2E11", "AUTO OFF"}; +static const std::string K617_CouRangeValue[] = {"AUTO ON","2E-10","2E-9","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10", "AUTO OFF"}; +static const std::string K617_XfdbRangeValue[]= {"AUTO ON","2E-1","2","20","20","20","20","20","20","20","20","20", "AUTO OFF"}; +static const std::string K617_VonIRangeValue[]= {"AUTO ON","200E12","20E12","2E12","200E9","20E9","2E9","200E6","20E6","2E6","200E3","200E3", "AUTO OFF"}; +/* +* Range limit +*/ +static short K617_rangeLimit = 12; + +// ============================================================================ +// Keithley_617::Keithley_617 +// ============================================================================ +Keithley_617::Keithley_617 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_617::Keithley_617 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleyDDCProtocol (_device_proxy_name); + + std::cout << "Keithley_617::Keithley_617 ->" << std::endl; +} + +// ============================================================================ +// Keithley_617::~Keithley_617 +// ============================================================================ +Keithley_617::~Keithley_617 (void) +{ + std::cout << "Keithley_617::~Keithley_617 <-" << std::endl; + + std::cout << "Keithley_617::~Keithley_617 ->" << std::endl; +} + +// ============================================================================ +// Keithley_617::autoRange_off +// ============================================================================ +void Keithley_617::autoRange_off (void) +{ + + //- send the appropriate command + KeithleyDDCProtocol* _kddc = dynamic_cast<KeithleyDDCProtocol*>(_electrometerProtocol); + if(_kddc) + _kddc->autoRange_OFF_forK617_6512(); +} + +// ============================================================================ +// Keithley_617::range_up +// ============================================================================ +void Keithley_617::range_up (void) +{ + +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range += 1; + + if(_range > K617_rangeLimit) + { + _range = K617_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_617::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_617::range_down +// ============================================================================ +void Keithley_617::range_down (void) +{ + +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range -= 1; + + if(_range < 0) + { + _range = 0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_617::range_down( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_617::get_ElectroMeterRange +// ============================================================================ +std::string Keithley_617::get_ElectroMeterRange (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _rangeStr; +} + +// ============================================================================ +// Keithley_617::get_ElectroMeterMode +// ============================================================================ +std::string Keithley_617::get_ElectroMeterMode (void) +{ + // force read of mode on instrument to update _mode variable + electrometer_status(); + + return _mode; +} + +// ============================================================================ +// Keithley_617::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_617::setAmperMeterMode (void) +{ + _electrometerProtocol->setAmperMeterMode( ); +} + +// ============================================================================ +// Keithley_617::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_617::setVoltMeterMode (void) +{ + _electrometerProtocol->setVoltMeterMode( ); +} + +// ============================================================================ +// Keithley_617::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_617::setOhmMeterMode (void) +{ + _electrometerProtocol->setOhmMeterMode( ); +} + +// ============================================================================ +// Keithley_617::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_617::setCoulombMeterMode (void) +{ + _electrometerProtocol->setCoulombMeterMode( ); +} + +// ============================================================================ +// Keithley_617::electrometer_status +// ============================================================================ +std::string Keithley_617::electrometer_status (void) +{ + std::string _kstatus("undefined status"); + std::string argout("undefined status"); + std::string tmp(""); + + //- read keithley status from HW + _kstatus = _electrometerProtocol->get_raw_status(); + + //- build status + try + { + //- model number : + std::string modelNum = _kstatus.substr(0,3); + std::cout<< "\n617 status = " << modelNum << std::endl; + //- if not expected data (here model number) + if(modelNum.find("617") == std::string::npos) + { + set_electroState(ALARM); + argout = "Invalid status string received"; + return argout; + } + argout = "Keithley Type : " + modelNum + "\n"; + //- Functions and associate range : + tmp = _kstatus.substr(3,1); + short func = XString<short>::convertFromString(tmp); + //- Range : + tmp = _kstatus.substr(4,2); + _range = XString<short>::convertFromString(tmp); + if(!func) + { + _mode = "Function : VOLTS"; + argout += _mode + "\n"; + _rangeStr = K617_VoltRangeValue[_range]; + } + else + if(func == 1) + { + _mode = "Function : AMPS"; + argout += _mode + "\n"; + _rangeStr = K617_AmpRangeValue[_range]; + argout += _rangeStr + "\n"; + } + else + if(func == 2) + { + _mode = "Function : OHMS"; + argout += _mode + "\n"; + _rangeStr = K617_OhmRangeValue[_range]; + } + else + if(func == 3) + { + _mode = "Function : COULOMBS"; + argout += _mode + "\n"; + _rangeStr = K617_CouRangeValue[_range]; + } + else + if(func == 4) + { + _mode = "Function : XFDBK"; + argout += _mode + "\n"; + _rangeStr = K617_XfdbRangeValue[_range]; + } + else + if(func == 5) + { + _mode = "Function : V/I"; + argout += _mode + "\n"; + _rangeStr = K617_XfdbRangeValue[_range]; + } + //- Range : + argout += "RANGE : " + _rangeStr + "\n"; + //- Zero check state + tmp = _kstatus.substr(6,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Check : ON\n"; + else + argout += "Zero Check : OFF\n"; + //- Zero correct state + tmp = _kstatus.substr(7,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Correct : ON\n"; + else + argout += "Zero Correct : OFF\n"; + //- Suppress + tmp = _kstatus.substr(8,1); + if(XString<short>::convertFromString(tmp)) + argout += "Suppress : ON\n"; + else + argout += "Suppress : OFF\n"; + //- Trigger + tmp = _kstatus.substr(9,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Trigger : Continuous on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Trigger :One-Shot on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Trigger :Continuous on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Trigger :One-Shot on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Trigger :Continuous on \"X\"\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Trigger :One-Shot on \"X\"\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Trigger :Continuous on External\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Trigger :One-Shot on External\n"; + //- Voltage Source + tmp = _kstatus.substr(10,1); + if(XString<short>::convertFromString(tmp)) + argout += "Voltage Source Operate : ON\n"; + else + argout += "Voltage Source Operate : OFF\n"; + //- Read Mode + tmp = _kstatus.substr(11,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Read Mode : Electrometer\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Read Mode : Data Store\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Read Mode : Maximum\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Read Mode : Minimum\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Read Mode :Voltage Source\n"; + //- Display : + tmp = _kstatus.substr(13,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Display : Electrometer\n"; + else + argout += "Display : Voltage Source\n"; + //- Data Store + tmp = _kstatus.substr(14,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Store : Conversion Rate\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Data Store : 1 RDG/Sec\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Data Store : 1 RDG/10Sec\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Data Store : 1 RDG/Min\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Data Store : 1 RDG/10Min\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Data Store : 1 RDG/1Hr\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Data Store : Trig Button\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Data Store : Disabled\n"; + //- SRQ Mask + tmp = _kstatus.substr(15,2); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ Data Mask : SRQ Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ Data Mask : Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "SRQ Data Mask : Data Store Full\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "SRQ Data Mask : Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 16) + argout += "SRQ Data Mask : Ready\n"; + else + if(XString<short>::convertFromString(tmp) == 32) + argout += "SRQ Data Mask : Error\n"; + //- EOI & Bus Hold Off + tmp = _kstatus.substr(17,1); + if(!XString<short>::convertFromString(tmp)) + argout += "EOI & Bus Hold Off : EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "EOI & Bus Hold Off : No EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "EOI & Bus Hold Off : EOI and no Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "EOI & Bus Hold Off : No EOI and no Hold-Off\n"; + } + catch(std::out_of_range) + { + set_electroState(ALARM); + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Cannot extract device status [find or substr failed !].", + "Keithley_617::electrometer_status( )."); + } + + set_electroState(ON); + return argout; +} diff --git a/src/Keithley_6485.cpp b/src/Keithley_6485.cpp new file mode 100644 index 0000000..6b46658 --- /dev/null +++ b/src/Keithley_6485.cpp @@ -0,0 +1,180 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_6485.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 6485; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_6485.h" +#include "KeithleySCPIProtocol.h" +/* +* Valid Range values for a K_6485 +*/ +static const std::string K6485_rangeValue[] = {"2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3","2E-2"}; +/* +* Max Index Range value for a K_6485 +*/ +static const short K6485_rangeLimit = 7; + +// ============================================================================ +// Keithley_6485::Keithley_6485 +// ============================================================================ +Keithley_6485::Keithley_6485 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_6485::Keithley_6485 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleySCPIProtocol (_device_proxy_name); + + //- this model does not support different mode (OhmMeter, VoltMeter and so on ) + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(_kscpi) + _kscpi->set_isDiffSuportedMode(false); + + std::cout << "Keithley_6485::Keithley_6485 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6485::~Keithley_6485 +// ============================================================================ +Keithley_6485::~Keithley_6485 (void) +{ + std::cout << "Keithley_6485::~Keithley_6485 <-" << std::endl; + + std::cout << "Keithley_6485::~Keithley_6485 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6485::range_up +// ============================================================================ +void Keithley_6485::range_up (void) +{ +std::stringstream cmd_to_send; + + //- update range index from hardware + update_range( ); + + _range += 1; + + if(_range > K6485_rangeLimit) + { + _range = K6485_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6485::range_up( )."); + } + + //- build and send the command + _rangeStr = K6485_rangeValue[_range]; + cmd_to_send << _rangeStr << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6485::range_down +// ============================================================================ +void Keithley_6485::range_down (void) +{ +std::stringstream cmd_to_send; + + //- update range index from hardware + update_range( ); + + _range -= 1; + + if(_range < 0) + { + _range=0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_6485::range_down( )."); + } + //- build and send the command + _rangeStr = K6485_rangeValue[_range]; + cmd_to_send << _rangeStr << std::endl; + + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6485::update_range +// ============================================================================ +void Keithley_6485::update_range (void) +{ +std::string range_str(""); +double rangeValueReturned = 0; +double rangeValueCalculated = 0; +double delta = 0; + + /** + * NOTE : SCPI models return a range value +/- 5% + */ + + //- get range from hardware + range_str = _electrometerProtocol->get_range( ); + //- convert range in decimal value + rangeValueReturned = XString<double>::convertFromString(range_str); + + //- find and return the index + short idx = 0; + for(idx=0; idx<K6485_rangeLimit ; idx++) + { + rangeValueCalculated = XString<double>::convertFromString(K6485_rangeValue[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + + //- throw if index not found + if(idx == K6485_rangeLimit) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Failed to get range index.", + "Keithley_6485::update_range( )."); + + //- update range with index found + this->_range = idx; + +} + +// ============================================================================ +// Keithley_6485::get_integratedValue +// ============================================================================ +std::vector<double> Keithley_6485::get_integratedValue (void) +{ + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(!_kscpi) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Dynamic cast failed !.", + "Keithley_6485::get_integratedValue( )."); + + return _electrometerProtocol->get_integratedValue( ); +} + +// ============================================================================ +// Keithley_6485::get_fetchValue +// ============================================================================ +std::vector<double> Keithley_6485::get_fetchValue (void) +{ + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(!_kscpi) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Dynamic cast failed !.", + "Keithley_6485::get_fetchValue( )."); + + return _kscpi->get_fetchValue( ); +} + diff --git a/src/Keithley_6487.cpp b/src/Keithley_6487.cpp new file mode 100644 index 0000000..dace9e3 --- /dev/null +++ b/src/Keithley_6487.cpp @@ -0,0 +1,186 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_6487.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 6487; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_6487.h" +#include "KeithleySCPIProtocol.h" +/* +* Valid Range values for a K_6487 +*/ +static const std::string K6487_rangeValue[8] = {"2E-2","2E-3","2E-4","2E-5","2E-6","2E-7","2E-8","2E-9"}; +/* +* Max Index Range value for a K_6487 +*/ +static const short K6487_rangeLimit = 7; + +// ============================================================================ +// Keithley_6487::Keithley_6487 +// ============================================================================ +Keithley_6487::Keithley_6487 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_6487::Keithley_6487 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleySCPIProtocol (_device_proxy_name); + + //- this model does not support different mode (OhmMeter, VoltMeter and so on ) + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(_kscpi) + _kscpi->set_isDiffSuportedMode(false); + + std::cout << "Keithley_6487::Keithley_6487 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6487::~Keithley_6487 +// ============================================================================ +Keithley_6487::~Keithley_6487 (void) +{ + std::cout << "Keithley_6487::~Keithley_6487 <-" << std::endl; + + std::cout << "Keithley_6487::~Keithley_6487 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6487::range_up +// ============================================================================ +void Keithley_6487::range_up (void) +{ +std::stringstream cmd_to_send; + + //- update range index from hardware + update_range( ); + + _range += 1; + + if(_range > K6487_rangeLimit) + { + _range = K6487_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6487::range_up( )."); + } + + //- build and send the command + _rangeStr = K6487_rangeValue[_range]; + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6487::range_down +// ============================================================================ +void Keithley_6487::range_down (void) +{ + +std::stringstream cmd_to_send; + + //- update range index from hardware + update_range( ); + + _range -= 1; + + if(_range < 0) + { + _range = 0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_6487::range_down( )."); + } + _rangeStr = K6487_rangeValue[_range]; + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6487::setAmperMeterMode +// ============================================================================ +void Keithley_6487::setAmperMeterMode (void) +{ + _electrometerProtocol->setAmperMeterMode( ); +} + +// ============================================================================ +// Keithley_6487::get_integratedValue +// ============================================================================ +std::vector<double> Keithley_6487::get_integratedValue (void) +{ + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(!_kscpi) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Dynamic cast failed !.", + "Keithley_6487::get_integratedValue( )."); + + return _kscpi->get_integratedValue( ); +} + +// ============================================================================ +// Keithley_6487::get_fetchValue +// ============================================================================ +std::vector<double> Keithley_6487::get_fetchValue (void) +{ + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(!_kscpi) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Dynamic cast failed !.", + "Keithley_6487::get_fetchValue( )."); + + return _kscpi->get_fetchValue( ); +} + +// ============================================================================ +// Keithley_6487::update_range +// ============================================================================ +void Keithley_6487::update_range (void) +{ +std::string range_str(""); +double rangeValueReturned = 0; +double rangeValueCalculated = 0; +double delta = 0; + + /** + * NOTE : SCPI models return a range value +/- 5% + */ + + //- get range from hardware + range_str = _electrometerProtocol->get_range( ); + //- convert range in decimal value + rangeValueReturned = XString<double>::convertFromString(range_str); + + //- find and return the index + short idx = 0; + for(idx=0; idx<K6487_rangeLimit ; idx++) + { + rangeValueCalculated = XString<double>::convertFromString(K6487_rangeValue[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + + //- throw if index not found + if(idx == K6487_rangeLimit) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Failed to get range index.", + "Keithley_6487::update_range( )."); + + //- update range with the index found + this->_range = idx; + +} diff --git a/src/Keithley_6512.cpp b/src/Keithley_6512.cpp new file mode 100644 index 0000000..72584a6 --- /dev/null +++ b/src/Keithley_6512.cpp @@ -0,0 +1,374 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_6512.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 6512; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_6512.h" +#include "KeithleyDDCProtocol.h" +/* +* Valid Range values for a K_6512 +*/ +static const std::string K6512_AmpRangeValue[] = {"AUTO ON","2E-12","2E-11","2E-10","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3","2E-2", "AUTO OFF"}; +static const std::string K6512_VoltRangeValue[]= {"AUTO ON","2E-1","2","20","200","200","200","200","200","200","200","200", "AUTO OFF"}; +static const std::string K6512_OhmRangeValue[] = {"AUTO ON","2E3","2E4","2E5","2E6","2E7","2E8","2E9","2E10","2E11","2E11","2E11", "AUTO OFF"}; +static const std::string K6512_CouRangeValue[] = {"AUTO ON","2E-10","2E-9","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10","2E-10", "AUTO OFF"}; +static const std::string K6512_XfdbRangeValue[]= {"AUTO ON","2E-1","2","20","20","20","20","20","20","20","20","20", "AUTO OFF"}; +/* +* Range limit +*/ +static short K6512_rangeLimit = 12; + +// ============================================================================ +// Keithley_6512::Keithley_6512 +// ============================================================================ +Keithley_6512::Keithley_6512 (std::string& comLink_device_name):AbstractElectrometerClass(comLink_device_name) +{ + std::cout << "Keithley_6512::Keithley_6512 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleyDDCProtocol (_device_proxy_name); + + std::cout << "Keithley_6512::Keithley_6512 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6512::~Keithley_6512 +// ============================================================================ +Keithley_6512::~Keithley_6512 (void) +{ + std::cout << "Keithley_6512::~Keithley_6512 <-" << std::endl; + + std::cout << "Keithley_6512::~Keithley_6512 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6512::autoRange_off +// ============================================================================ +void Keithley_6512::autoRange_off (void) +{ + + KeithleyDDCProtocol* _kddc = dynamic_cast<KeithleyDDCProtocol*>(_electrometerProtocol); + if(_kddc) + _kddc->autoRange_OFF_forK617_6512(); +} + +// ============================================================================ +// Keithley_6512::range_up +// ============================================================================ +void Keithley_6512::range_up (void) +{ +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range += 1; + + if(_range > K6512_rangeLimit) + { + _range = K6512_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6512::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6512::range_down +// ============================================================================ +void Keithley_6512::range_down (void) +{ + +std::stringstream cmd_to_send; + + // force read of range on instrument to update _range variable + electrometer_status(); + + _range -= 1; + + if(_range < 0) + { + _range =0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_6512::range_down( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6512::get_ElectroMeterRange +// ============================================================================ +std::string Keithley_6512::get_ElectroMeterRange (void) +{ + // force read of range on instrument to update _range variable + electrometer_status(); + + return _rangeStr; +} + +// ============================================================================ +// Keithley_6512::get_ElectroMeterMode +// ============================================================================ +std::string Keithley_6512::get_ElectroMeterMode (void) +{ + // force read of mode on instrument to update _mode variable + electrometer_status(); + + return _mode; +} + +// ============================================================================ +// Keithley_6512::setAmperMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_6512::setAmperMeterMode (void) +{ + _electrometerProtocol->setAmperMeterMode( ); +} + +// ============================================================================ +// Keithley_6512::setVoltMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_6512::setVoltMeterMode (void) +{ + _electrometerProtocol->setVoltMeterMode( ); +} + +// ============================================================================ +// Keithley_6512::setOhmMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_6512::setOhmMeterMode (void) +{ + _electrometerProtocol->setOhmMeterMode( ); +} + +// ============================================================================ +// Keithley_6512::setCoulombMeterMode (617 & 6512 Keithley DDC models +// ============================================================================ +void Keithley_6512::setCoulombMeterMode (void) +{ + _electrometerProtocol->setCoulombMeterMode( ); +} + +// ============================================================================ +// Keithley_6512::electrometer_status +// ============================================================================ +std::string Keithley_6512::electrometer_status (void) +{ + std::string _kstatus("undefined status"); + std::string argout("undefined status"); + std::string tmp(""); + + //- read keithley status from HW + _kstatus = _electrometerProtocol->get_raw_status(); + + //- build status + try + { + //- model number : + std::string modelNum = _kstatus.substr(0,4); + //- if not expected data (here model number) + if(modelNum.find("6512") == std::string::npos) + { + set_electroState(ALARM); + argout = "Invalid status string received"; + return argout; + } + argout = "Keithley Type : " + modelNum + "\n"; + //- Functions and associate range : + tmp = _kstatus.substr(4,1); + short func = XString<short>::convertFromString(tmp); + //- Range : + tmp = _kstatus.substr(5,2); + _range = XString<short>::convertFromString(tmp); + if(!func) + { + _mode = "Function : VOLTS"; + argout += _mode + "\n"; + _rangeStr = K6512_VoltRangeValue[_range]; + } + else + if(func == 1) + { + _mode = "Function : AMPS"; + argout += _mode + "\n"; + _rangeStr = K6512_AmpRangeValue[_range]; + argout += _rangeStr + "\n"; + } + else + if(func == 2) + { + _mode = "Function : OHMS"; + argout += _mode + "\n"; + _rangeStr = K6512_OhmRangeValue[_range]; + } + else + if(func == 3) + { + _mode = "Function : COULOMBS"; + argout += _mode + "\n"; + _rangeStr = K6512_CouRangeValue[_range]; + } + else + if(func == 4) + { + _mode = "Function : XFDBK"; + argout += _mode + "\n"; + _rangeStr = K6512_XfdbRangeValue[_range]; + } + //- Range : + argout += "RANGE : " + _rangeStr + "\n"; + //- Zero check state + tmp = _kstatus.substr(7,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Check : ON\n"; + else + argout += "Zero Check : OFF\n"; + //- Zero correct state + tmp = _kstatus.substr(8,1); + if(XString<short>::convertFromString(tmp)) + argout += "Zero Correct : ON\n"; + else + argout += "Zero Correct : OFF\n"; + //- Suppress + tmp = _kstatus.substr(9,1); + if(XString<short>::convertFromString(tmp)) + argout += "Suppress : ON\n"; + else + argout += "Suppress : OFF\n"; + //- Trigger + tmp = _kstatus.substr(10,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Trigger : Continuous on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Trigger :One-Shot on Talk\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Trigger :Continuous on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Trigger :One-Shot on Get\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Trigger :Continuous on \"X\"\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Trigger :One-Shot on \"X\"\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Trigger :Continuous on External\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Trigger :One-Shot on External\n"; + //- Read Mode + tmp = _kstatus.substr(12,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Read Mode : Electrometer\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Read Mode : Data Store\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Read Mode : Maximum\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Read Mode : Minimum\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Read Mode :Voltage Source\n"; + //- Data Store + tmp = _kstatus.substr(15,1); + if(!XString<short>::convertFromString(tmp)) + argout += "Data Store : Conversion Rate\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "Data Store : 1 RDG/Sec\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "Data Store : 1 RDG/10Sec\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "Data Store : 1 RDG/Min\n"; + else + if(XString<short>::convertFromString(tmp) == 4) + argout += "Data Store : 1 RDG/10Min\n"; + else + if(XString<short>::convertFromString(tmp) == 5) + argout += "Data Store : 1 RDG/1Hr\n"; + else + if(XString<short>::convertFromString(tmp) == 6) + argout += "Data Store : Trig Button\n"; + else + if(XString<short>::convertFromString(tmp) == 7) + argout += "Data Store : Disabled\n"; + //- SRQ Mask + tmp = _kstatus.substr(16,2); + if(!XString<short>::convertFromString(tmp)) + argout += "SRQ Data Mask : SRQ Disabled\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "SRQ Data Mask : Reading Overflow\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "SRQ Data Mask : Data Store Full\n"; + else + if(XString<short>::convertFromString(tmp) == 8) + argout += "SRQ Data Mask : Reading Done\n"; + else + if(XString<short>::convertFromString(tmp) == 16) + argout += "SRQ Data Mask : Ready\n"; + else + if(XString<short>::convertFromString(tmp) == 32) + argout += "SRQ Data Mask : Error\n"; + //- EOI & Bus Hold Off + tmp = _kstatus.substr(18,1); + if(!XString<short>::convertFromString(tmp)) + argout += "EOI & Bus Hold Off : EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 1) + argout += "EOI & Bus Hold Off : No EOI and Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 2) + argout += "EOI & Bus Hold Off : EOI and no Hold-Off\n"; + else + if(XString<short>::convertFromString(tmp) == 3) + argout += "EOI & Bus Hold Off : No EOI and no Hold-Off\n"; + } + catch(std::out_of_range) + { + set_electroState(ALARM); + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Cannot extract device status [find or substr failed !].", + "Keithley_6512::electrometer_status( )."); + } + + + set_electroState(ON); + return argout; +} diff --git a/src/Keithley_6514.cpp b/src/Keithley_6514.cpp new file mode 100644 index 0000000..54ed372 --- /dev/null +++ b/src/Keithley_6514.cpp @@ -0,0 +1,319 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - SCPI KeithleyElectrometer Support Library +// +// = FILENAME +// Keithley_6514.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ +static long KEITHLEY_MODEL = 6514; + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "Keithley_6514.h" +#include "KeithleySCPIProtocol.h" +/* +* Valid Range values for a K_6514 +*/ +static const std::string K6514_AMP_rangeStr[] = {"2E-11","2E-10","2E-9","2E-8","2E-7","2E-6","2E-5","2E-4","2E-3","2E-2"}; +static const std::string K6514_VOLT_rangeStr[]= {"2","20","200"}; +static const std::string K6514_OHM_rangeStr[] = {"2E3","2E4","2E5","2E6","2E7","2E8","2E9","2E10","2E11"}; +static const std::string K6514_COU_rangeStr[] = {"2E-7","2E-6","2E-5","2E-4"}; +/* +* Max Index Range value for a K_6514 +*/ +static const short K6514_AMP_rangeLimit = 9; +static const short K6514_VOLT_rangeLimit= 2; +static const short K6514_OHM_rangeLimit = 8; +static const short K6514_COU_rangeLimit = 3; + +// ============================================================================ +// Keithley_6514::Keithley_6514 +// ============================================================================ +Keithley_6514::Keithley_6514 (std::string& comLink_device_name): +AbstractElectrometerClass(comLink_device_name), +_kmode("") +{ + std::cout << "Keithley_6514::Keithley_6514 <-" << std::endl; + + //- build the keithley Electrometer obj + _electrometerProtocol = new KeithleySCPIProtocol(_device_proxy_name); + + //- this model supports different mode (OhmMeter, VoltMeter and so on ) + KeithleySCPIProtocol* _kscpi = dynamic_cast<KeithleySCPIProtocol*>(_electrometerProtocol); + if(_kscpi) + _kscpi->set_isDiffSuportedMode(true); + + std::cout << "Keithley_6514::Keithley_6514 ->" << std::endl; +} + +// ============================================================================ +// Keithley_6514::~Keithley_6514 +// ============================================================================ +Keithley_6514::~Keithley_6514 (void) +{ + std::cout << "Keithley_6514::~Keithley_6514 <-" << std::endl; + + std::cout << "Keithley_6514::~Keithley_6514 ->" << std::endl; +} + + +// ============================================================================ +// Keithley_6514::range_up +// ============================================================================ +void Keithley_6514::range_up (void) +{ + +std::stringstream cmd_to_send; + + //- update range value from hardware + update_range( ); + + _range += 1; + + //- check range validity + if(_kmode.find("CURR") != std::string::npos) + { + if(_range > K6514_AMP_rangeLimit) + { + _range = K6514_AMP_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6514::range_up( )."); + } + _rangeStr = K6514_AMP_rangeStr[_range]; + } + else + if (_kmode.find("VOLT") != std::string::npos) + { + if(_range > K6514_VOLT_rangeLimit) + { + _range = K6514_VOLT_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6514::range_up( )."); + } + _rangeStr = K6514_VOLT_rangeStr[_range]; + } + else + if (_kmode.find("RES") != std::string::npos) + { + if(_range > K6514_OHM_rangeLimit) + { + _range = K6514_OHM_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6514::range_up( )."); + } + _rangeStr = K6514_OHM_rangeStr[_range]; + } + else if (_kmode.find("CHAR") != std::string::npos) + { + if(_range > K6514_COU_rangeLimit) + { + _range = K6514_COU_rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "Keithley_6514::range_up( )."); + } + _rangeStr = K6514_COU_rangeStr[_range]; + } + else + throw electrometer::ElectrometerException("UNKNOWN_MODE", + "Unable to find the electrometer mode used.", + "Keithley_6514::range_up( )."); + + //- build and send the command + cmd_to_send << _rangeStr << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6514::range_down +// ============================================================================ +void Keithley_6514::range_down (void) +{ + +std::stringstream cmd_to_send; + + //- update range value from hardware + update_range( ); + + _range -= 1; + + if(_range < 0) + { + _range = 0; + + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "Keithley_6514::range_down( )."); + } + + //- check range validity + if(_kmode.find("CURR") != std::string::npos) + cmd_to_send << K6514_AMP_rangeStr[_range] << std::endl; + else if (_kmode.find("VOLT") != std::string::npos) + cmd_to_send << K6514_VOLT_rangeStr[_range] << std::endl; + else if (_kmode.find("RES") != std::string::npos) + cmd_to_send << K6514_OHM_rangeStr[_range] << std::endl; + else if (_kmode.find("CHAR") != std::string::npos) + cmd_to_send << K6514_COU_rangeStr[_range] << std::endl; + else + throw electrometer::ElectrometerException("UNKNOWN_MODE", + "Unable to find the electrometer mode used.", + "Keithley_6514::range_down( )."); + + + //- build and send the command + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// Keithley_6514::get_integratedValue +// ============================================================================ +std::vector<double> Keithley_6514::get_integratedValue (void) +{ + return _electrometerProtocol->get_integratedValue( ); +} + +// ============================================================================ +// Keithley_6514::get_fetchValue +// ============================================================================ +std::vector<double> Keithley_6514::get_fetchValue (void) +{ + return _electrometerProtocol->get_fetchValue( ); +} + +// ============================================================================ +// Keithley_6514::setAmperMeterMode +// ============================================================================ +void Keithley_6514::setAmperMeterMode (void) +{ + + _electrometerProtocol->setAmperMeterMode( ); + + +} + +// ============================================================================ +// Keithley_6514::setVoltMeterMode +// ============================================================================ +void Keithley_6514::setVoltMeterMode (void) +{ + + _electrometerProtocol->setVoltMeterMode( ); + +} + +// ============================================================================ +// Keithley_6514::setOhmMeterMode +// ============================================================================ +void Keithley_6514::setOhmMeterMode (void) +{ + + _electrometerProtocol->setOhmMeterMode( ); + +} + +// ============================================================================ +// Keithley_6514::setCoulombMeterMode +// ============================================================================ +void Keithley_6514::setCoulombMeterMode (void) +{ + + _electrometerProtocol->setCoulombMeterMode( ); + +} + +// ============================================================================ +// Keithley_6487::update_range +// ============================================================================ +void Keithley_6514::update_range (void) +{ +std::string range_str(""); +double rangeValueReturned = 0; +double rangeValueCalculated = 0; +double delta = 0; + + /** + * NOTE : SCPI models return a range value +/- 5% + */ + + //- get device mode + _kmode = get_ElectroMeterMode(); + + //- get range from hardware + range_str = _electrometerProtocol->get_range( ); + //- convert range in decimal value + rangeValueReturned = XString<double>::convertFromString(range_str); + + //- find and return the index + short idx = 0; + short idx_limit = 0; + + if(_kmode.find("CURR") != std::string::npos) + idx_limit = K6514_AMP_rangeLimit; + else if (_kmode.find("VOLT") != std::string::npos) + idx_limit = K6514_VOLT_rangeLimit; + else if (_kmode.find("RES") != std::string::npos) + idx_limit = K6514_OHM_rangeLimit; + else if (_kmode.find("CHAR") != std::string::npos) + idx_limit = K6514_COU_rangeLimit; + else + throw electrometer::ElectrometerException("UNKNOWN_MODE", + "Unable to find the electrometer mode used.", + "Keithley_6514::update_range( )."); + + +//- find the range index + for(idx=0; idx<idx_limit ; idx++) + { + if(_kmode.find("CURR") != std::string::npos) + { + rangeValueCalculated = XString<double>::convertFromString(K6514_AMP_rangeStr[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + else if (_kmode.find("VOLT") != std::string::npos) + { + rangeValueCalculated = XString<double>::convertFromString(K6514_VOLT_rangeStr[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + else if (_kmode.find("RES") != std::string::npos) + { + rangeValueCalculated = XString<double>::convertFromString(K6514_OHM_rangeStr[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + else if (_kmode.find("CHAR") != std::string::npos) + { + rangeValueCalculated = XString<double>::convertFromString(K6514_COU_rangeStr[idx]); + delta = rangeValueCalculated * 5 / 100; + if( (rangeValueCalculated + delta) >= rangeValueReturned && (rangeValueCalculated - delta) <= rangeValueReturned) + break; + } + } + + //- throw if index not found + if(idx == idx_limit) + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Failed to get range index.", + "Keithley_6514::update_range( )."); + + //- update the range with the index found + this->_range = idx; +} diff --git a/src/Makefile.linux b/src/Makefile.linux new file mode 100644 index 0000000..e526e8d --- /dev/null +++ b/src/Makefile.linux @@ -0,0 +1,165 @@ +#============================================================================= +# +# file : Makefile.h +# +# description : Makefile for DeviceServer +# +# $Author: stephle $ +# +# $Revision: 1.1 $ +# +# $Log: not supported by cvs2svn $ +# Revision 1.3 2006/03/21 16:59:13 hardion +# * Add Software Support to Makefile process +# +# Revision 1.2 2006/03/21 15:25:20 hardion +# * Update Pogo +# * fix bug in Makefile process +# +# Revision 1.3 2006/03/14 14:57:34 hardion +# * Update Makefile process to allow compilation of library +# +# Revision 1.2 2006/01/05 16:51:30 hardion +# * Update Makefile.linux and tango.opt for library use +# +# +#============================================================================= + + + +#============================================================================= +# OUTPUT_TYPE can be one of the following : +# - 'STATIC_LIB' for a static library (.a) +# - 'DYNAMIC_LIB' for a dynamic library (.so) +# - 'DEVICE' for a device server (will automatically include and link +# with Tango dependencies) +# - 'SIMPLE_EXE' for an executable with no dependency (for exemple the test tool +# of a library with no Tango dependencies) +# +OUTPUT_TYPE = STATIC_LIB + +#============================================================================= +# OUTPUT_DIR is the directory which contains the build result. +# if not set, the standard location is : +# - $HOME/DeviceServers if OUTPUT_TYPE is DEVICE +# - ../bin for others +# +OUTPUT_DIR = ../lib + + +#============================================================================= +# PACKAGE_NAME is the name of the library/device/exe you want to build +# - for a device server, PACKAGE_NAME will be prefixed by 'ds_' +# - for a library (static or dynamic), PACKAGE_NAME will be prefixed by 'lib' +# - for a simple executable, PACKAGE_NAME will be the name of the executable +# +PACKAGE_NAME = Electrometers + + + + + +#============================================================================= +# INC_DIR_USER is the list of all include path needed by your sources +# - for a device server, tango dependencies are automatically appended +# - '-I ../include' and '-I .' are automatically appended in all cases +# +# -I$(SOLEIL_ROOT)/hw-support/ace/include for ACE library +# -I$(SOLEIL_ROOT)/hw-support/asl/include for ASL library +# -I$(SOLEIL_ROOT)/sw-support/hkl/include for HKL library +# ...etc +# +# la partie communication d�pend de tango +INC_DIR_USER=-I$(TANGO_HOME)/include -I$(OMNI_HOME)/include -I$(SOLEIL_ROOT)/dev/include + + + + + +#============================================================================= +# LIB_DIR_USER is the list of user library directories +# - for a device server, tango libraries directories are automatically appended +# - '-L ../lib' is automatically appended in all cases +# -L $(SOLEIL_ROOT)/hw-support/ace/lib for ACE library +# -L $(SOLEIL_ROOT)/hw-support/asl/lib for ASL library +# -L $(SOLEIL_ROOT)/sw-support/hkl/lib for HKL library +# ...etc +# +LIB_DIR_USER= + + + +#============================================================================= +# LFLAGS_USR is the list of user link flags +# - for a device server, tango libraries directories are automatically appended +# - '-ldl -lpthread' is automatically appended in all cases +# +# !!! ATTENTION !!! +# Be aware that the order matters. +# For example if you must link with libA, and if libA depends itself on libB +# you must use '-lA -lB' in this order as link flags, otherwise you will get +# 'undefined reference' errors +# +# -lACE for ACE +# -lASL for ASL +# -lHKL for HKL +# +LFLAGS_USR= + + + + + +#============================================================================= +# CXXFLAGS_USR lists the compilation flags specific for your library/device/exe +# This is the place where to put your compile-time macros using '-Dmy_macro' +# +# -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ for ACE +# +#CXXFLAGS_USR=-DSIMULATED_AXIS + + +# +# include Standard TANGO compilation options +# +include $(SOLEIL_ROOT)/env/tango.opt + + + +#============================================================================= +# SVC_OBJS is the list of all objects needed to make the output +# +SVC_OBJS = $(OBJDIR)/CommunicationLink.o \ + $(OBJDIR)/TangoGpibLink.o \ + $(OBJDIR)/TangoSerialLink.o \ + $(OBJDIR)/ElectrometerProtocol.o \ + $(OBJDIR)/KeithleyDDCProtocol.o \ + $(OBJDIR)/KeithleySCPIProtocol.o \ + $(OBJDIR)/NovelecProtocol.o \ + $(OBJDIR)/AbstractElectrometerClass.o \ + $(OBJDIR)/Novelec_MCCE2.o \ + $(OBJDIR)/N_PhotoVoltaique.o \ + $(OBJDIR)/N_PhotoConducteur.o \ + $(OBJDIR)/Keithley_485.o \ + $(OBJDIR)/Keithley_486.o \ + $(OBJDIR)/Keithley_487.o \ + $(OBJDIR)/Keithley_617.o \ + $(OBJDIR)/Keithley_6512.o \ + $(OBJDIR)/Keithley_6485.o \ + $(OBJDIR)/Keithley_6487.o \ + $(OBJDIR)/Keithley_6514.o \ + $(OBJDIR)/ElectrometerException.o + +# +# Verbose mode +# +#.SILENT: + +# +# include common targets +# +include $(SOLEIL_ROOT)/env/common_target.opt + + + + diff --git a/src/Makefile.vc b/src/Makefile.vc new file mode 100644 index 0000000..bc34104 --- /dev/null +++ b/src/Makefile.vc @@ -0,0 +1,58 @@ +# +device_server= Lib_Electrometer_OBJ +# +# LEs PATHS des includes propres � ce DServer +# Mettre /Ic:\monchemininclude /ID:\monautrechemininclude +INCUSER= +# +# Le chemin complet de vos Librairies +# +# LIBUSER = "x:\moncheminlibrairie\malibrairie.lib" +LIBUSER= +# Si vous souhaitez g�n�rer une librairie et pas un executable +# decommentez la ligne suivante +LIBRARY_NAME= ..\lib\Electrometers.lib +# +# Le chemin ou j'ai d'autres fichiers sources que ceux du DeviceServer � compiler +CPPDIRUSER= + +# +# ------------------Fin des modifications pour le end user ------------------------------------- +# +make_dir=$(SOLEIL_ROOT)\env + +# Les d�finitions communes � tous les DeviceServeurs +!include $(make_dir)\tango.opt + +exe_device_server= $(EXEDIR)\ds_$(device_server).exe + +# -------------------------------------- +# Partie sp�cifique Device Server +# -------------------------------------- + +LISTEOBJ = \ + $(OBJDIR)\CommunicationLink.OBJ \ + $(OBJDIR)\TangoGpibLink.OBJ \ + $(OBJDIR)\TangoSerialLink.OBJ \ + $(OBJDIR)\ElectrometerProtocol.OBJ \ + $(OBJDIR)\KeithleyDDCProtocol.OBJ \ + $(OBJDIR)\KeithleySCPIProtocol.OBJ \ + $(OBJDIR)\NovelecProtocol.OBJ \ + $(OBJDIR)\AbstractElectrometerClass.OBJ \ + $(OBJDIR)\Novelec_MCCE2.OBJ \ + $(OBJDIR)\N_PhotoVoltaique.OBJ \ + $(OBJDIR)\N_PhotoConducteur.OBJ \ + $(OBJDIR)\Keithley_485.OBJ \ + $(OBJDIR)\Keithley_486.OBJ \ + $(OBJDIR)\Keithley_487.OBJ \ + $(OBJDIR)\Keithley_617.OBJ \ + $(OBJDIR)\Keithley_6512.OBJ \ + $(OBJDIR)\Keithley_6485.OBJ \ + $(OBJDIR)\Keithley_6487.OBJ \ + $(OBJDIR)\Keithley_6514.OBJ \ + $(OBJDIR)\ElectrometerException.OBJ + + +# -------------------------------------- +!include $(make_dir)\common_target.opt + diff --git a/src/N_PhotoConducteur.cpp b/src/N_PhotoConducteur.cpp new file mode 100644 index 0000000..a7c7779 --- /dev/null +++ b/src/N_PhotoConducteur.cpp @@ -0,0 +1,125 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - NovelecElectrometer Support Library +// PhotoConducteur Types are Type 4 & 5 only +// +// = FILENAME +// N_PhotoConducteur.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "N_PhotoConducteur.h" +#include "NovelecProtocol.h" +/* +* Valid Range values for a N_PhotoConducteur +*/ +static const std::string NType_4_rangeValue[] = {"100 MOhms","30 MOhms","10 MOhms","3 MOhms"}; +static const std::string NType_5_rangeValue[] = {"1000 KOhms","300 KOhms","100 KOhms","30 KOhms"}; + + +// ============================================================================ +// N_PhotoConducteur::N_PhotoConducteur +// ============================================================================ +N_PhotoConducteur::N_PhotoConducteur (std::string& comLink_device_name, short address, short novTypeNumber) +: Novelec_MCCE2(comLink_device_name, address, novTypeNumber) +{ + std::cout << "N_PhotoConducteur::N_PhotoConducteur <-" << std::endl; + + _rangeLimit = 3; + + std::cout << "N_PhotoConducteur::N_PhotoConducteur ->" << std::endl; +} + +// ============================================================================ +// N_PhotoConducteur::~N_PhotoConducteur +// ============================================================================ +N_PhotoConducteur::~N_PhotoConducteur (void) +{ + std::cout << "N_PhotoConducteur::~N_PhotoConducteur <-" << std::endl; + + std::cout << "N_PhotoConducteur::~N_PhotoConducteur ->" << std::endl; +} + +// ============================================================================ +// N_PhotoConducteur::range_up +// ============================================================================ +void N_PhotoConducteur::range_up (void) +{ + +std::stringstream cmd_to_send; + + _range += 1; + + if(_range > _rangeLimit) + { + _range = _rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "N_PhotoConducteur::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// N_PhotoConducteur::range_down +// ============================================================================ +void N_PhotoConducteur::range_down (void) +{ + +std::stringstream cmd_to_send; + + _range -= 1; + + if(_range < 0) + { + _range = 0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "N_PhotoConducteur::range_down( )."); + } + + //- build and send the command +// _rangeStr = NType1_rangeValue[_range]; + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// N_PhotoConducteur::get_ElectroMeterGain +// ============================================================================ +std::string N_PhotoConducteur::get_ElectroMeterGain (void) +{ + NovelecProtocol* _nproto = dynamic_cast<NovelecProtocol*>(_electrometerProtocol); + if(!_nproto) + throw electrometer::ElectrometerException("BAD_CAST", + "Unable to query the electrmometer gain.", + "N_PhotoConducteur::get_ElectroMeterGain( )."); + return _nproto->get_gain(); +} + +// ============================================================================ +// N_PhotoConducteur::set_ElectroMeterGain +// ============================================================================ +void N_PhotoConducteur::set_ElectroMeterGain (std::string gain) +{ + NovelecProtocol* _nproto = dynamic_cast<NovelecProtocol*>(_electrometerProtocol); + if(!_nproto) + throw electrometer::ElectrometerException("BAD_CAST", + "INTERNAL ERROR : Unable to change the electrmometer function.", + "N_PhotoConducteur::set_ElectroMeterGain( )."); + _nproto->set_gain(gain); +} diff --git a/src/N_PhotoVoltaique.cpp b/src/N_PhotoVoltaique.cpp new file mode 100644 index 0000000..2d36994 --- /dev/null +++ b/src/N_PhotoVoltaique.cpp @@ -0,0 +1,135 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - NovelecElectrometer Support Library +// PhotoVoltaique Types are Type 1, 2 & 3 +// +// = FILENAME +// N_PhotoVoltaique.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "N_PhotoVoltaique.h" +#include "NovelecProtocol.h" +/* +* Valid Range values for a N_PhotoVoltaique +*/ +static const std::string NType1_rangeValue[] = {"1e-11 A","3e-11 A","1e-10 A","3e-10 A"}; +static const std::string NType2_rangeValue[] = {"1e-10 A","3e-10 A","1e-9 A","3e-9 A","1e-8 A","3e-8 A","1e-7 A","3e-7 A"}; +static const std::string NType3_rangeValue[] = {"1e-8 A","3e-8 A","1e-7 A","3e-7 A","1e-6 A","3e-6 A","1e-5 A","3e-5 A"}; + + +// ============================================================================ +// N_PhotoVoltaique::N_PhotoVoltaique +// ============================================================================ +N_PhotoVoltaique::N_PhotoVoltaique (std::string comLink_device_name, short address, short novTypeNumber) +: Novelec_MCCE2(comLink_device_name, address, novTypeNumber) +{ + std::cout << "N_PhotoVoltaique::N_PhotoVoltaique <-" << std::endl; + + //- init range limit + switch(novTypeNumber) + { + case 1 : _rangeLimit = 3; + break; + case 2 : + case 3 : _rangeLimit = 7; + break; + } + + std::cout << "N_PhotoVoltaique::N_PhotoVoltaique ->" << std::endl; +} + +// ============================================================================ +// N_PhotoVoltaique::~N_PhotoVoltaique +// ============================================================================ +N_PhotoVoltaique::~N_PhotoVoltaique (void) +{ + std::cout << "N_PhotoVoltaique::~N_PhotoVoltaique <-" << std::endl; + + std::cout << "N_PhotoVoltaique::~N_PhotoVoltaique ->" << std::endl; +} + +// ============================================================================ +// N_PhotoVoltaique::range_up +// ============================================================================ +void N_PhotoVoltaique::range_up (void) +{ + +std::stringstream cmd_to_send; + + _range += 1; + + if(_range > _rangeLimit) + { + _range = _rangeLimit; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range up limit reached.", + "N_PhotoVoltaique::range_up( )."); + } + + //- build and send the command + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// N_PhotoVoltaique::range_down +// ============================================================================ +void N_PhotoVoltaique::range_down (void) +{ + +std::stringstream cmd_to_send; + + _range -= 1; + + if(_range < 0) + { + _range = 0; + throw electrometer::ElectrometerException("OUT_OF_RANGE", + "Range down limit reached.", + "N_PhotoVoltaique::range_down( )."); + } + + //- build and send the command +// _rangeStr = NType1_rangeValue[_range]; + cmd_to_send << _range << std::endl; + _electrometerProtocol->set_range(cmd_to_send.str()); +} + +// ============================================================================ +// N_PhotoVoltaique::get_ElectroMeterFrequency Filter +// ============================================================================ +std::string N_PhotoVoltaique::get_ElectroMeterFrequency (void) +{ + NovelecProtocol* _nproto = dynamic_cast<NovelecProtocol*>(_electrometerProtocol); + if(!_nproto) + throw electrometer::ElectrometerException("BAD_CAST", + "Unable to query the electrmometer frequency.", + "N_PhotoVoltaique::get_ElectroMeterFrequency( )."); + return _nproto->get_frequency(); +} + +// ============================================================================ +// N_PhotoVoltaique::set_ElectroMeterFrequency Filter +// ============================================================================ +void N_PhotoVoltaique::set_ElectroMeterFrequency (std::string freqFilter) +{ + NovelecProtocol* _nproto = dynamic_cast<NovelecProtocol*>(_electrometerProtocol); + if(!_nproto) + throw electrometer::ElectrometerException("BAD_CAST", + "Unable to query the electrmometer frequency.", + "N_PhotoVoltaique::set_ElectroMeterFrequency( )."); + _nproto->set_frequency(freqFilter); +} + diff --git a/src/NovelecProtocol.cpp b/src/NovelecProtocol.cpp new file mode 100644 index 0000000..72513f9 --- /dev/null +++ b/src/NovelecProtocol.cpp @@ -0,0 +1,683 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - NovelecProtocol Support Library +// +// = FILENAME +// NovelecProtocol.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "NovelecProtocol.h" +#include "TangoSerialLink.h" + +//- commands numbers +static const short STATUS_CMD_NUM = 1; +static const short ERRORS_CMD_NUM = 2; +static const short MODE_CMD_NUM = 3; +static const short ELECTROTYPE_CMD_NUM = 4; +static const short POLARITY_CMD_NUM = 5; +static const short FREQUENCY_CMD_NUM = 6; +static const short GAIN_CMD_NUM = 7; +static const short RANGE_CMD_NUM = 8; +static const short RESPONSE_LGTH_CMD_NUM = 17; +static const short CLEAR_ERRORS_CMD_NUM = 18; +//- the specific new line character +static const char END_OF_LINE[] = {'\r','\n'}; +//- modes allowed +static const std::string mode_str[] = {"ERR : UNKNOWN MODE","ZERO V/F","OFFSET","LEAKAGE","TEST","MEASURE"}; +static const std::string range_str[5][8]= { {"1e-11AcC","3e-11AcC","1e-10AcC","3e-10AcC", "OUT OF RANGE","OUT OF RANGE","OUT OF RANGE","OUT OF RANGE"}, + {"1e-10AcC","3e-10AcC","1e-9AcC","3e-9AcC","1e-8AcC","3e-8AcC","1e-7AcC","3e-7AcC"}, + {"1e-8AcC","3e-8AcC","1e-7AcC","3e-7AcC","1e-6AcC","3e-6AcC","1e-5AcC","3e-5AcC"}, + {"1000MOhm","300MOhm","100MOhm","30MOhm","OUT OF RANGE","OUT OF RANGE","OUT OF RANGE","OUT OF RANGE"}, + {"1000KOhm","300KOhm","100KOhm","30KOhm","OUT OF RANGE","OUT OF RANGE","OUT OF RANGE","OUT OF RANGE",} + }; +static const std::string frequency_str[]= {"3 Hz","10 Hz","100 Hz","1000 Hz"}; +static const std::string gain_str[] = {"1","10","100"}; + + +// ============================================================================ +// NovelecProtocol::NovelecProtocol +// ============================================================================ +NovelecProtocol::NovelecProtocol (std::string& serial_device_name, short devAddress, short novelecType) +: ElectrometerProtocol(), + _devAdd(devAddress), + _novType(novelecType), + _is_measure_mode_on(false) +{ +std::stringstream explicite_resp; +std::string tmp("no data"); + + std::cout << "NovelecProtocol::NovelecProtocol <-" << std::endl; + + _communication_link = new TangoSerialLink (serial_device_name); + _rangeParameterNum = _novType + 2; + + //- CMD to enable PROG cmds + this->switch_MCCE2_OFF(); + + //- Clear error registers + this->clear_registers(); + + //- send cmd to have an explicite response : + explicite_resp << _devAdd << " PROG " << RESPONSE_LGTH_CMD_NUM << " 1" << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(explicite_resp.str()); + //- check only the command response + check_command(tmp); + //- if no error + _is_explicite_resp_enabled = true; + + std::cout << "NovelecProtocol::NovelecProtocol ->" << std::endl; +} + +// ============================================================================ +// NovelecProtocol::~NovelecProtocol +// ============================================================================ +NovelecProtocol::~NovelecProtocol (void) +{ + std::cout << "NovelecProtocol::~NovelecProtocol <-" << std::endl; + + std::cout << "NovelecProtocol::~NovelecProtocol ->" << std::endl; +} + +// ============================================================================ +// NovelecProtocol::switch_MCCE2_ON +// ============================================================================ +void NovelecProtocol::switch_MCCE2_ON (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " MEASURE 1" << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); + + _is_measure_mode_on = true; +} + +// ============================================================================ +// NovelecProtocol::switch_MCCE2_OFF +// ============================================================================ +void NovelecProtocol::switch_MCCE2_OFF (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " MEASURE 0" << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); + + _is_measure_mode_on = false; +} + +// ============================================================================ +// NovelecProtocol::get_mode +// ============================================================================ +std::string NovelecProtocol::get_mode (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_mode () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << MODE_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, MODE_CMD_NUM); + + //- check what is the response mode type + if( _is_explicite_resp_enabled == false ) + { + short idx = XString<short>::convertFromString(argout); + _function = mode_str[idx]; + } + else + _function = argout; + +//std::cout << "***INFO : NovelecProtocol::get_mode () <- $" << _function << "$\n\n" << std::endl; + + return _function; +} + +// ============================================================================ +// NovelecProtocol::get_value +// ============================================================================ +std::string NovelecProtocol::get_value (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); +std::string value("no data"); +short cmd_num = 13; //- default value for DEBUG !!! + +//std::cout << "\n\n***INFO : NovelecProtocol::get_value () ->" << std::endl; + + //- first get mode + get_mode(); + if( (_function.find("OFFSET") != std::string::npos) || (_function.find("V1") != std::string::npos) ) + { + cmd_num = 12; + } + else + if( (_function.find("LEAKAGE") != std::string::npos) || (_function.find("V2") != std::string::npos) ) + cmd_num = 11; + else + std::cout << "\t\t***WARN : Current mode : \"" << get_mode() << "\" has no value available." << std::endl; + + cmd_to_send << _devAdd << " READ " << cmd_num << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + value = check_and_extract_data(tmp, cmd_num); + +//std::cout << "***INFO : NovelecProtocol::get_value () <- $" << value << "$\n\n" << std::endl; + + return value; +} + +// ============================================================================ +// NovelecProtocol::unable_zeroVF_func +// ============================================================================ +void NovelecProtocol::unable_zeroVF_func (void) +{ +std::stringstream cmd_to_send; +std::string cmdNumber(" 1"); //- PROG 1 -> = PROG FUNCTION +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " PROG 1 " << cmdNumber << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::unable_offset_zeroV1_func +// ============================================================================ +void NovelecProtocol::unable_offset_zeroV1_func (void) +{ +std::stringstream cmd_to_send; +std::string cmdNumber(" 2"); //- PROG 1 -> = PROG FUNCTION +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " PROG 1 " << cmdNumber << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::unable_leakage_zeroV2_func +// ============================================================================ +void NovelecProtocol::unable_leakage_zeroV2_func (void) +{ +std::stringstream cmd_to_send; +std::string cmdNumber(" 3"); //- PROG 1 -> = PROG FUNCTION +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " PROG 1 " << cmdNumber << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::unable_test_func +// ============================================================================ +void NovelecProtocol::unable_test_func (void) +{ +std::stringstream cmd_to_send; +std::string cmdNumber(" 4"); //- PROG 1 -> = PROG FUNCTION +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " PROG 1 " << cmdNumber << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::unable_measure_func +// ============================================================================ +void NovelecProtocol::unable_measure_func (void) +{ +std::stringstream cmd_to_send; +std::string cmdNumber(" 5"); //- PROG 1 -> = PROG FUNCTION +std::string tmp("no data"); + + //- send cmd to have a explicite response : + cmd_to_send << _devAdd << " PROG 1 " << cmdNumber << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check only the command response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::get_range +// ============================================================================ +std::string NovelecProtocol::get_range (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_range () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << RANGE_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, RANGE_CMD_NUM); + + //- check what is the response mode type + short idx = -1; + if( _is_explicite_resp_enabled == false ) + { + idx = XString<short>::convertFromString(argout); + argout = range_str[_novType-1][idx]; + } + +//std::cout << "***INFO : NovelecProtocol::get_range () =$" << argout << "$" << std::endl; + + return argout; +} + +// ============================================================================ +// NovelecProtocol::set_range +// ============================================================================ +void NovelecProtocol::set_range (std::string value) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command to Novelec device + cmd_to_send << _devAdd << " PROG " << _rangeParameterNum << " " << value << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- the novelec device send ACK/NAK response after a received command + check_command(tmp); + +} + +// ============================================================================ +// NovelecProtocol::get_polarity +// ============================================================================ +std::string NovelecProtocol::get_polarity (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_polarity () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << POLARITY_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, POLARITY_CMD_NUM); + + //- check what is the response mode type + if( _is_explicite_resp_enabled == false ) + { + short idx = XString<short>::convertFromString(argout); + if(idx < 0) + argout = "negative"; + else + argout = "positive"; + } + +//std::cout << "***INFO : NovelecProtocol::get_polarity () -> $" << argout << "$" << std::endl; + return argout; +} + +// ============================================================================ +// NovelecProtocol::set_polarity +// ============================================================================ +void NovelecProtocol::set_polarity (std::string newPolarity) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command to Novelec device + cmd_to_send << _devAdd << " PROG 2" << " " << newPolarity << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- the novelec device send ACK/NAK response after a received command + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::get_frequency +// ============================================================================ +std::string NovelecProtocol::get_frequency (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_frequency () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << FREQUENCY_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, FREQUENCY_CMD_NUM); + + //- check what is the response mode type + if( _is_explicite_resp_enabled == false ) + { + short idx = XString<short>::convertFromString(argout); + argout = frequency_str[idx]; + } + + +//std::cout << "***INFO : NovelecProtocol::get_frequency () -> $" << argout << "$" << std::endl; + return argout; +} + +// ============================================================================ +// NovelecProtocol::set_frequency +// ============================================================================ +void NovelecProtocol::set_frequency (std::string newFrequency) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command to Novelec device + cmd_to_send << _devAdd << " PROG 9" << " " << newFrequency << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- the novelec device send ACK/NAK response after a received command + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::get_gain +// ============================================================================ +std::string NovelecProtocol::get_gain (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_gain () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << GAIN_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, GAIN_CMD_NUM); + + //- check what is the response mode type + if( _is_explicite_resp_enabled == false ) + { + short idx = XString<short>::convertFromString(argout); + argout = gain_str[idx]; + } + else + //- erase wildcard char : response received is as this "*10xx" + argout = argout.erase(argout.find('*'),1); + +//std::cout << "***INFO : NovelecProtocol::get_gain () -> $" << argout << "$" << std::endl; + return argout; +} + +// ============================================================================ +// NovelecProtocol::set_gain +// ============================================================================ +void NovelecProtocol::set_gain (std::string newGain) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command to Novelec device + cmd_to_send << _devAdd << " PROG 8" << " " << newGain << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + + //- the novelec device send ACK/NAK response after a received command + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::get_errors +// ============================================================================ +std::string NovelecProtocol::get_errors (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_errors () ->" << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << ERRORS_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, ERRORS_CMD_NUM); + + return argout; +} + +// ============================================================================ +// NovelecProtocol::get_electrotype +// ============================================================================ +std::string NovelecProtocol::get_electrotype (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + +//std::cout << "\n\n***INFO : NovelecProtocol::get_electrotype () -> " << std::endl; + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << ELECTROTYPE_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, ELECTROTYPE_CMD_NUM); + + //- check what is the response mode type + if( _is_explicite_resp_enabled == true ) + argout = argout.substr(argout.find(".")+1); + +//std::cout << "***INFO : NovelecProtocol::get_electrotype () -> $" << argout << "$" << std::endl; + return argout; +} + +// ============================================================================ +// NovelecProtocol::reset +// ============================================================================ +void NovelecProtocol::reset (void) +{ +std::stringstream cmd_to_send; + + //- send command + cmd_to_send << _devAdd << " RESET" << END_OF_LINE << std::endl; + _communication_link->write(cmd_to_send.str()); + //- there is no response from the device !!! +} + +// ============================================================================ +// NovelecProtocol::local +// ============================================================================ +void NovelecProtocol::local (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command + cmd_to_send << _devAdd << " LOCAL" << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + + //- check the response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::remote +// ============================================================================ +void NovelecProtocol::remote (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command + cmd_to_send << _devAdd << " REMOTE" << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + + //- check the response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::get_raw_status +// ============================================================================ +std::string NovelecProtocol::get_raw_status (void) +{ +std::stringstream cmd_to_send; +std::string argout("no data"); +std::string tmp("no data"); + + //- send command to Novelec device + cmd_to_send << _devAdd << " READ " << STATUS_CMD_NUM << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + //- check and extract the response + argout = check_and_extract_data(tmp, STATUS_CMD_NUM); + + return argout; +} + +// ============================================================================ +// NovelecProtocol::clear_registers +// ============================================================================ +void NovelecProtocol::clear_registers (void) +{ +std::stringstream cmd_to_send; +std::string tmp("no data"); + + //- send command + cmd_to_send << _devAdd << " PROG " << CLEAR_ERRORS_CMD_NUM << " 1 " << END_OF_LINE << std::endl; + tmp = _communication_link->write_read(cmd_to_send.str()); + + //- check the response + check_command(tmp); +} + +// ============================================================================ +// NovelecProtocol::check_command +// This method read the device response and check and throw an +// Electrometer Exception if the device response is a NAK. +// Else, it returns the extracted response +// ============================================================================ +void NovelecProtocol::check_command (std::string response) +{ +std::string data; + + //- A correct response is : + // -> "address ACK " : if command well understood + //- An invalid response is: "address NAK ..." + + if(response.find("NAK") != std::string::npos) + { + if(_is_measure_mode_on) + throw electrometer::ElectrometerException("COMMAND_NOT_ALLOWED", + "Cannot change parameter(s) when MEASURE mode enabled.", + "NovelecProtocol::check_command( )."); + + else + throw electrometer::ElectrometerException("COMMAND_NOT_UNDERSTOOD", + "Bad formatted string command sent -> NAK received !", + "NovelecProtocol::check_command( )."); + } + else + if(response.find("ACK") != std::string::npos) + data = response; + else //- must not exist !!! + throw electrometer::ElectrometerException("INVALID_DATA", + "Invalid string received from Novelec device.", + "NovelecProtocol::check_command( )."); + +} + +// ============================================================================ +// NovelecProtocol::check_and_extract_data +// This method read the device response and check and throw an +// Electrometer Exception if the device response is a NAK. +// Else, it returns the extracted response +// ============================================================================ +std::string NovelecProtocol::check_and_extract_data (std::string response, short cmd_sent) +{ +std::string data; +std::string cmd_sentStr; + + cmd_sentStr = XString<short>::convertToString(cmd_sent); + + //- A correct response is : + // -> "address AWR ReadNum = data " : if there is a returned value + //- An invalid response is: "address NAK ..." + + if(response.find("NAK") != std::string::npos) + { + throw electrometer::ElectrometerException("COMMAND_NOT_UNDERSTOOD", + "Bad formatted string command sent -> NAK received !", + "NovelecProtocol::check_and_extract_data( )."); + } + else + if(response.find("AWR") != std::string::npos) + { + //- check if it is the received answer of the command sent + if(response.find(cmd_sentStr) != std::string::npos) + { + //- extract data in the device response + data = response.substr(response.find("=")+1); + + /* + * check if the response is a short or explicite response + * + * To do so, check if char at idx 18 is a space or a letter : + * if it is a space -> this is a short response + * and must be converted to return the explicite response + * else it is an explicite response and can be returned as this + */ + //- extract char + response = response.substr(18,1); + //- check what is this char a 'space' or 'letter' + if(response.find(" ") != std::string::npos) + _is_explicite_resp_enabled = false; + else + _is_explicite_resp_enabled = true; + + //- erase first and last space char + data.erase(data.find_first_of(" "),1); + data.erase(data.find_last_of(" ")); + } + else + throw electrometer::ElectrometerException("SYNCHRONISATION_LOST", + "The received response is not for the command previously sent.", + "NovelecProtocol::check_and_extract_data( )."); + } + else //- must not exist !!! + throw electrometer::ElectrometerException("INVALID_DATA", + "Invalid string received from Novelec device.", + "NovelecProtocol::check_and_extract_data( )."); + + + //- DEBUG +//std::cout << "NovelecProtocol::check_and_extract_data ANSWER =*" << data << "*" << std::endl; + + + return data; +} diff --git a/src/Novelec_MCCE2.cpp b/src/Novelec_MCCE2.cpp new file mode 100644 index 0000000..c390630 --- /dev/null +++ b/src/Novelec_MCCE2.cpp @@ -0,0 +1,273 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - NovelecElectrometer Support Library +// +// = FILENAME +// Novelec_MCCE2.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <iostream> +#include <sstream> +#include <string> +#include <Xstring.h> +#include "NovelecProtocol.h" +#include "Novelec_MCCE2.h" + + +// ============================================================================ +// Novelec_MCCE2::Novelec_MCCE2 +// ============================================================================ +Novelec_MCCE2::Novelec_MCCE2 (std::string& comLink_device_name, short address, short novTypeNumber) +: AbstractElectrometerClass(comLink_device_name), + _rangeLimit(0) +{ + std::cout << "Novelec_MCCE2::Novelec_MCCE2 <-" << std::endl; + + //- build the Novelec Electrometer obj + _electrometerProtocol = new NovelecProtocol(_device_proxy_name, address, novTypeNumber); + + std::cout << "Novelec_MCCE2::Novelec_MCCE2 ->" << std::endl; +} + +// ============================================================================ +// Novelec_MCCE2::~Novelec_MCCE2 +// ============================================================================ +Novelec_MCCE2::~Novelec_MCCE2 (void) +{ + std::cout << "Novelec_MCCE2::~Novelec_MCCE2 <-" << std::endl; + + std::cout << "Novelec_MCCE2::~Novelec_MCCE2 ->" << std::endl; +} + +// ============================================================================ +// Novelec_MCCE2::get_ElectroMeterPolarity +// ============================================================================ +std::string Novelec_MCCE2::get_ElectroMeterPolarity (void) +{ + return _electrometerProtocol->get_polarity(); +} + +// ============================================================================ +// Novelec_MCCE2::set_ElectroMeterPolarity +// ============================================================================ +void Novelec_MCCE2::set_ElectroMeterPolarity (std::string polarity) +{ + _electrometerProtocol->set_polarity(polarity); +} + +// ============================================================================ +// Novelec_MCCE2::set_Zero_VonF_function +// ============================================================================ +void Novelec_MCCE2::set_Zero_VonF_function (void) +{ + _electrometerProtocol->unable_zeroVF_func(); +} + +// ============================================================================ +// Novelec_MCCE2::set_Offset_function +// ============================================================================ +void Novelec_MCCE2::set_Offset_ZeroV1_function (void) +{ + _electrometerProtocol->unable_offset_zeroV1_func(); +} + +// ============================================================================ +// Novelec_MCCE2::set_Leakage_ZeroV2_function +// ============================================================================ +void Novelec_MCCE2::set_Leakage_ZeroV2_function (void) +{ + _electrometerProtocol->unable_leakage_zeroV2_func(); +} + +// ============================================================================ +// Novelec_MCCE2::set_Test_function +// ============================================================================ +void Novelec_MCCE2::set_Test_function (void) +{ + _electrometerProtocol->unable_test_func(); +} + +// ============================================================================ +// Novelec_MCCE2::set_Measure_function +// ============================================================================ +void Novelec_MCCE2::set_Measure_function (void) +{ + _electrometerProtocol->unable_measure_func(); +} + +// ============================================================================ +// Novelec_MCCE2::mcce_on +// ============================================================================ +void Novelec_MCCE2::mcce_on (void) +{ + _electrometerProtocol->switch_MCCE2_ON(); +} + +// ============================================================================ +// Novelec_MCCE2::mcce_off +// ============================================================================ +void Novelec_MCCE2::mcce_off (void) +{ + _electrometerProtocol->switch_MCCE2_OFF(); +} + +// ============================================================================ +// Novelec_MCCE2::electrometer_status +// ============================================================================ +std::string Novelec_MCCE2::electrometer_status (void) +{ + std::string argout("undefined status"); + std::string typeStr(" "); + std::string tmp(" "); + short _status = 0; + short _errors = 0; + short _type = 0; + + NovelecProtocol* _nproto = dynamic_cast<NovelecProtocol*>(_electrometerProtocol); + if(!_nproto) + throw electrometer::ElectrometerException("BAD_CAST", + "Unable to query the electrmometer status.", + "Novelec_MCCE2::electrometer_status( )."); + + //- get Electrometer type : + try + { + tmp = _nproto->get_electrotype(); + _type = XString<short>::convertFromString(tmp); +//std::cout << "\t Novelec_MCCE2::Novelec_MCCE2 -> TYPE : *" << _type << "*" << std::endl; + } + catch(...) + { + set_electroState(FAULT); + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Unable to query the electrmometer type.", + "Novelec_MCCE2::electrometer_status( )."); + } + + argout = "\n\nINFOS :\n"; + argout += "----------\n"; + + switch(_type) + { + case 1 : typeStr = "Photovolta�que UHS"; + break; + case 2 : typeStr = "Photovolta�que HS"; + break; + case 3 : typeStr = "Photovolta�que MS"; + break; + case 4 : typeStr = "Photoconducteur HS"; + break; + case 5 : typeStr = "Photoconducteur MS"; + break; + default : set_electroState(FAULT); + argout = "Invalid status string returned !"; + return argout; + } + argout += "Novelec type : " + typeStr + "\n"; + + //- get Electrometer mode : + argout += "Novelec mode : " + _electrometerProtocol->get_mode() + "\n"; +//std::cout << "\t Novelec_MCCE2::Novelec_MCCE2 -> MODE : *" << _electrometerProtocol->get_mode() << "*" << std::endl; + + try + { + //- read novelec status from HW + tmp = _electrometerProtocol->get_raw_status(); + _status = XString<short>::convertFromString(tmp); +//std::cout << "\t Novelec_MCCE2::Novelec_MCCE2 -> STATUS : *" << _status << "*" << std::endl; + } + catch(...) + { + set_electroState(FAULT); + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Unable to query the electrmometer status.", + "Novelec_MCCE2::electrometer_status( )."); + } + + argout += "Status detail :\n"; + argout += "------------------------\n"; + + //- build novelec status + if(_status & 0x10) + argout += "En mesure\n"; + else + argout += "Hors mesure\n"; + if(_status & 0x20) + argout += "Param�tres par defaut\n"; + else + argout += "Ram OK\n"; + if(_status & 0x40) + argout += "Param�tre invalide\n"; + else + argout += "Param�tre OK\n"; + if(_status & 0x80) + { + argout += "ERREUR\n"; + set_electroState(ALARM); + } + else + { + argout += "Pas d'erreur\n"; + set_electroState(ON); + } + + //- error(s) detail(s) + if(_status & 0x80) + { + try + { + //- read novelec error(s) from HW + tmp = _nproto->get_errors(); + _errors = XString<short>::convertFromString(tmp); +//std::cout << "\t Novelec_MCCE2::Novelec_MCCE2 -> ERROR : *" << _errors << "*" << std::endl; + } + catch(...) + { + set_electroState(FAULT); + throw electrometer::ElectrometerException("INTERNAL_ERROR", + "Unable to query the electrmometer errors.", + "Novelec_MCCE2::electrometer_status( )."); + } + + argout += "\nError(s) detail(s) :\n"; + argout += "------------------------\n"; + + if(_errors & 0x01) + argout += "Param�tre par d�faut\n"; + if(_errors & 0x02) + argout += "Erreur s�rie\n"; + if(_errors & 0x04) + argout += "Param�tre invalide\n"; + if(_errors & 0x08) + argout += "Electrom�tre satur�\n"; + if(_errors & 0x10) + argout += "Electrom�tre bloqu�\n"; + if(_errors & 0x20) + argout += "HT < limite basse\n"; + if(_errors & 0x40) + argout += "HT > limite haute\n"; + if(_errors & 0x80) + argout += "Initialisation\n"; + if(_errors & 0x100) + argout += "D�faut batterie\n"; + if(_errors & 0x200) + argout += "D�faut d'alimentation\n"; + if(_errors & 0x400) + argout += "Type d'�lectrom�tre inconnu\n"; + if(_errors & 0x800) + argout += "Electrom�tre d�connect�\n"; + + set_electroState(ALARM); + } +//std::cout << "\t Novelec_MCCE2::Novelec_MCCE2 -> electro_status() : *" << argout << "*" << std::endl; + + return argout; +} diff --git a/src/TangoGpibLink.cpp b/src/TangoGpibLink.cpp new file mode 100644 index 0000000..92ee23a --- /dev/null +++ b/src/TangoGpibLink.cpp @@ -0,0 +1,165 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// TangoGpibLink.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <string> +#include <iostream> +#include "TangoGpibLink.h" + + +// ============================================================================ +// TangoGpibLink::TangoGpibLink +// ============================================================================ +TangoGpibLink::TangoGpibLink (std::string& gpib_device_name) +: CommunicationLink(gpib_device_name), +_gpib_proxy (0), +_is_gpib_proxy_created (false) +{ + std::cout << "TangoGpibLink::TangoGpibLink <-" << std::endl; + + response.erase(); + + std::cout << "TangoGpibLink::TangoGpibLink ->" << std::endl; +} + +// ============================================================================ +// TangoGpibLink::~TangoGpibLink +// ============================================================================ +TangoGpibLink::~TangoGpibLink (void) +{ + std::cout << "TangoGpibLink::~TangoGpibLink <-" << std::endl; + + if(_is_gpib_proxy_created) + { + delete _gpib_proxy; + _gpib_proxy = 0; + _is_gpib_proxy_created = false; + } + + std::cout << "TangoGpibLink::~TangoGpibLink ->" << std::endl; +} + + +// ============================================================================ +// TangoGpibLink::create_gpib_proxy +// ============================================================================ +void TangoGpibLink::create_gpib_proxy (void) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + + try + { + //- try + this->_gpib_proxy = new Tango::DeviceProxyHelper(_communication_Device_name); + _is_gpib_proxy_created = true; + } + catch(Tango::DevFailed& df ) + { + description << "Unable to create proxy on : " << _communication_Device_name << ends; + _is_gpib_proxy_created = false; + + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + description.str(), + (const char*)"TangoGpibLink::create_gpib_proxy"); + } + +} + + +// ============================================================================ +// TangoGpibLink::write +// ============================================================================ +void TangoGpibLink::write (std::string command_to_send) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + + if(!_is_gpib_proxy_created) + create_gpib_proxy(); + + try + { + //- try + this->_gpib_proxy->command_in("Write", command_to_send); + } + catch(Tango::DevFailed& df ) + { + description << "Unable to write command : " << command_to_send << ends; + + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + description.str(), + (const char*)"TangoGpibLink::write"); + + } +} + + +// ============================================================================ +// TangoGpibLink::read +// ============================================================================ +std::string TangoGpibLink::read (void) throw (Tango::DevFailed) +{ + + if(!_is_gpib_proxy_created) + create_gpib_proxy(); + + try + { + //- try + this->_gpib_proxy->command_out("Read", this->response); + } + catch(Tango::DevFailed& df ) + { + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + (const char*)"Unable to perform a read operation", + (const char*)"TangoGpibLink::read"); + } + + return this->response ; + +} + +// ============================================================================ +// TangoGpibLink::write_read +// ============================================================================ +std::string TangoGpibLink::write_read (std::string command_to_send) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + + if(!_is_gpib_proxy_created) + create_gpib_proxy(); + + try + { + //- try + this->_gpib_proxy->command_inout("WriteRead", command_to_send, response); + return this->response; + + } + catch(Tango::DevFailed& df ) + { + description << "Unable to write command : " << command_to_send << " and read device response." << ends; + + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + description.str(), + (const char*)"TangoGpibLink::write_read"); + + } + +} + diff --git a/src/TangoSerialLink.cpp b/src/TangoSerialLink.cpp new file mode 100644 index 0000000..0756539 --- /dev/null +++ b/src/TangoSerialLink.cpp @@ -0,0 +1,156 @@ +// ============================================================================ +// +// = CONTEXT +// TANGO Project - Keithley Electrometer Support Library +// +// = FILENAME +// TangoSerialLink.cpp +// +// = AUTHOR +// X. Elattaoui +// +// ============================================================================ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <string> +#include <iostream> +#include "TangoSerialLink.h" + +//- Read serial data in mode LINE (i.e SerialLine device wait until EOF is received from instrument + +static const long MODE_LINE = 2; + +// ============================================================================ +// TangoSerialLink::TangoSerialLink +// ============================================================================ +TangoSerialLink::TangoSerialLink (std::string& serial_device_name) +: CommunicationLink(serial_device_name), + _serial_proxy (0), + _is_serial_proxy_created (false) +{ + std::cout << "TangoSerialLink::TangoSerialLink <-" << std::endl; + + response.erase(); + + std::cout << "TangoSerialLink::TangoSerialLink ->" << std::endl; +} + +// ============================================================================ +// TangoSerialLink::~TangoSerialLink +// ============================================================================ +TangoSerialLink::~TangoSerialLink (void) +{ + std::cout << "TangoSerialLink::~TangoSerialLink <-" << std::endl; + + if(_is_serial_proxy_created) + { + delete _serial_proxy; + _serial_proxy = 0; + _is_serial_proxy_created = false; + } + + std::cout << "TangoSerialLink::~TangoSerialLink ->" << std::endl; +} + + +// ============================================================================ +// TangoSerialLink::create_serial_proxy +// ============================================================================ +void TangoSerialLink::create_serial_proxy (void) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + + try + { + //- try + this->_serial_proxy = new Tango::DeviceProxyHelper(_communication_Device_name); + _is_serial_proxy_created = true; + } + catch(Tango::DevFailed& df ) + { + description << "Unable to create proxy on : " << _communication_Device_name << ends; + _is_serial_proxy_created = false; + + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + description.str(), + (const char*)"TangoSerialLink::create_serial_proxy"); + + } +} + +// ============================================================================ +// TangoSerialLink::write +// ============================================================================ +void TangoSerialLink::write (std::string command_to_send) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + + if(!_is_serial_proxy_created) + create_serial_proxy(); + + try + { + //- try + this->_serial_proxy->command_in("DevSerWriteString", command_to_send.c_str()); + } + catch(Tango::DevFailed& df ) + { + description << "Unable to write command : " << command_to_send << ends; + + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + description.str(), + (const char*)"TangoSerialLink::write"); + + } +} + + +// ============================================================================ +// TangoSerialLink::read +// ============================================================================ +std::string TangoSerialLink::read (void) throw (Tango::DevFailed) +{ + + if(!_is_serial_proxy_created) + create_serial_proxy(); + + try + { + //- try in mode LINE + this->_serial_proxy->command_inout("DevSerReadString", MODE_LINE ,this->response); + } + catch(Tango::DevFailed& df ) + { + Tango::Except::re_throw_exception (df, + (const char*)"COMMUNICATION_ERROR", + (const char*)"Unable to perform a read operation", + (const char*)"TangoSerialLink::read"); + } + + return this->response ; +} + +// ============================================================================ +// TangoSerialLink::write_read +// ============================================================================ +std::string TangoSerialLink::write_read (std::string command_to_send) throw (Tango::DevFailed) +{ + TangoSys_OMemStream description; + std::string respTmp(""); + +// long nb_char_written = 0; + + omni_thread::sleep(0, 200000000); //200 milliseconds + write(command_to_send); + //- sleep a little bit to let the adapter(RS232/485) to switch mode + omni_thread::sleep(0, 100000000); //100 milliseconds + // now read response from HW + respTmp = this->read(); + + return respTmp; +} + -- GitLab