00001 00002 00003 00004 00005 00006 00007
00008 #ifndef Agilent4279A_h
00009 #define Agilent4279A_h
00010
00011 #include <vector>
00012 #include <pair.h>
00013 #include "GPIBEquipment.h"
00014 #include "LibGPIB.h"
00015
00016 extern "C++" {
00017 namespace LibGPIB {
00025 class Agilent4279A : public GPIBEquipment {
00026 public:
00027
00028 00029 00030 00031
00041 enum MeasurementParameter {
00045 MPAR_CP_D = 1,
00046 MPAR1 = 1,
00050 MPAR_CP_Q = 2,
00051 MPAR2 = 2,
00055 MPAR_CP_G = 3,
00056 MPAR3 = 3,
00060 MPAR_CS_D = 4,
00061 MPAR4 = 4,
00065 MPAR_CS_Q = 5,
00066 MPAR5 = 5,
00070 MPAR_CS_RS = 6,
00071 MPAR6 = 6
00072 } ;
00073
00077 enum OscillatorLevel {
00081 OSC_20_mV = 1,
00082
00086 OSC_50_mV = 2,
00087
00091 OSC_100_mV = 3,
00092
00096 OSC_200_mV = 4,
00097
00101 OSC_500_mV = 5,
00102
00106 OSC_1000_mV = 6
00107 } ;
00108
00109 enum DCBias {
00113 BIAS_OFF = 0,
00114
00118 BIAS_ON = 1
00119 } ;
00120
00121 enum DCBiasMode {
00125 SPOT_BIAS = 1,
00126 BMOD1 = 1,
00127
00131 PROG_SWEEP_BIAS = 2,
00132 BMOD2 = 2,
00133
00137 EXT_BIAS = 3,
00138 BMOD3 =3
00139 } ;
00140
00141 enum MeasurementRange {
00145 RANGE_AUTO = 0,
00146 RANG0 = 0,
00147
00151 RANGE_2pF = 1,
00152 RANG1 = 1,
00153
00157 RANGE_8pF = 2,
00158 RANG2 = 2,
00159
00163 RANGE_32pF = 3,
00164 RANG3 = 3,
00165
00169 RANGE_128pF = 4,
00170 RANG4 = 4,
00171
00175 RANGE_512pF = 5,
00176 RANG5 = 5,
00177
00181 RANGE_1024pF = 6,
00182 RANG6 = 6
00183 } ;
00184
00185 enum AutoBiasPolarity {
00189 AUTO_BIAS_POLARITY_OFF = 0,
00190 APOL0 = 0,
00191
00195 AUTO_BIAS_POLARITY_ON = 1,
00196 APOL1 = 1
00197 } ;
00198
00199
00200 enum IntegrationTime {
00204 INTEGRATION_TIME_SHORT = 1,
00205 ITIM1 = 1,
00206
00210 INTEGRATION_TIME_MEDIUM = 2,
00211 ITIM2 = 2,
00212
00216 INTEGRATION_TIME_LONG = 3,
00217 ITIM3 = 3
00218 } ;
00219
00220 enum TriggerMode {
00224 INT_TRIG = 1,
00225 TRIG1 = 1,
00226
00230 EXT_TRIG = 2,
00231 TRIG2 = 2,
00232
00236 MAN_TRIG = 3,
00237 TRIG3 = 3
00238 } ;
00239
00240 enum CableLengthValue {
00242 LENGTH_0METER = 0,
00243 CABL0 = 0,
00244
00246 LENGTH_1METER = 1,
00247 CABL1 = 1,
00248
00250 LEGNTH_2METER = 2,
00251 CABL2 = 2
00252 } ;
00253
00254 enum OpenCompensations {
00258 OPEN_COMPENSATION_INVALID = 0,
00259 OPEN0 = 0,
00263 OPEN_COMPENSATION_VALID = 1,
00264 OPEN1 = 1
00265 } ;
00266
00267 enum ShortCompensations {
00271 SHORT_COMPENSATION_INVALID = 0,
00272 SHOR0 = 0,
00273
00277 SHORT_COMPENSATION_VALID = 1,
00278 SHOR1 = 1
00279 } ;
00280
00281 enum StandardCompMode {
00285 C_D = 1,
00286 SPAR1 = 1,
00287
00291 C_G = 2,
00292 SPAR2 = 2
00293 } ;
00294
00295 enum StdCompValid {
00299 STD_COMPENSATION_INVALID = 0,
00300 STD0 = 0,
00301
00305 STD_COMPENSATION_VALID = 1,
00306 STD1 = 1
00307 } ;
00308
00309 enum OffsetA {
00313 OFFSET_A_INVALID = 0,
00314 AOFF0 = 0,
00315
00319 OFFSET_A_VALID = 1,
00320 AOFF1 = 1
00321 } ;
00322
00323 enum OffsetB {
00327 OFFSET_B_INVALID = 0,
00328 BOFF0 = 0,
00329
00333 OFFSET_B_VALID = 1,
00334 BOFF1 = 1
00335 } ;
00336
00337 enum DisplayPage {
00341 MEAS_PAGE = 1,
00342 DPAG1 = 1,
00343
00347 STATUS_PAGE = 2,
00348 DPAG2 = 2,
00349
00353 BLANK_PAGE = 3,
00354 DPAG3 = 3
00355 } ;
00356
00357 enum MonitorDisplay {
00361 MONITOR_DISPLAY_OFF = 0,
00362 VMON0 = 0,
00363
00367 MONITOR_DISPLAY_OPEN = 1,
00368 VMON1 = 1,
00369
00373 MONITOR_DISPLAY_SHORT = 2,
00374 VMON2 = 2,
00375
00379 MONITOR_DISPLAY_STD_MEAS = 3,
00380 VMOS3 = 3,
00381
00385 MONITOR_DISPLAY_STD_REF = 4,
00386 VMOS4 = 4,
00387
00391 MONITOR_DISPLAY_OFFSET = 5,
00392 VMOS5 = 5
00393 } ;
00394
00396
00397
00401 typedef MeasurementRange AutoBiasRange ;
00403
00411 class InvalidParameter {
00412 public:
00429 InvalidParameter( const string class_name,
00430 const string file_name,
00431 const string function_name,
00432 int line_number ) { }
00433
00434 } ;
00436
00440
00442
00455 void SetMeasurementParameter(enum MeasurementParameter mparam) ;
00456
00463 void SetOscillatorLevel (enum OscillatorLevel mparam) ;
00464
00473 void SetDCBias (enum DCBias mparam) ;
00474
00479 void SetDCBiasMode (enum DCBiasMode mparam) ;
00480
00486 void SetDCSpotBiasVoltage (double bias_value) ;
00487
00494 void CreateSweepPointTable ( vector<pair<double, enum MeasurementRange> >& bias_range_table ) ;
00495
00500 void SetAutoBiasPolarity (enum AutoBiasPolarity mparam);
00501
00506 void SetAutoBiasPolarityRange (enum AutoBiasRange mparam) ;
00507
00513 void SetIntegrationTime (enum IntegrationTime mparam) ;
00514
00519 void SetAveragingRate (int ave_rate) ;
00520
00525 void SetTriggerDelayTime (double delay) ;
00526
00531 void SetStepDelayTime (double delay) ;
00532
00537 void SetCableLength (enum CableLengthValue length) ;
00538
00543 void SetTriggerMode (enum TriggerMode mparam) ;
00544
00550 void SetOpenCompensations (enum OpenCompensations mparam) ;
00551
00555 void MakeOpenMeasurment () ;
00556
00564 void GetOpenMeasurementData (double& capacitance, double& conductance) ;
00565
00570 void SetShortCompensations (enum ShortCompensations mparam) ;
00571
00575 void MakeShortMeasurement () ;
00576
00583 void GetShortMeasurementData (double& inductance, double& resistance);
00584
00589 void SetStandardCompMode (enum StandardCompMode mparam) ;
00590
00598 void SetStandardCompRefCap (float c_value) ;
00599
00609 void SetStandardCompRefDissFact (float d_value) ;
00610
00616 void SetStandardCompRefCond (float g_value) ;
00617
00621 void MakeStandardCompMeasurement () ;
00622
00629 void SetStdCompDataValid (enum StdCompValid mparam) ;
00630
00634 void GetStdCompMeasData (double& capacitance, double& dissipation_factor) ;
00635
00639 void GetStdCompRefData (double& capacitance, double& dissipation_factor) ;
00640
00646 void SetCompDataNum (int value);
00647
00651 void ExecuteTempComp () ;
00652
00659 void SetOffsetA (enum OffsetA mparam) ;
00660
00667 void SetOffsetB (enum OffsetB mparam) ;
00668
00672 void SetOffAData (float data) ;
00673
00677 void SetOffBData (float data) ;
00678
00686 void SetDisplayPage (enum DisplayPage page) ;
00687
00696 void SetDisplayDigits (int num_of_digits) ;
00697
00708 void SetMonitorDisplay (enum MonitorDisplay display_mode) ;
00709
00711
00715
00716
00717 00718 00719 00720
00721 protected:
00722 00723 00724 00725 00726
00727 00728 00729 00730
00731 private:
00732 00733 00734 00735
00736 00737 00738 00739
00740 } ;
00741 } ;
00742 }
00743 #endif // #ifndef Agilent4279A_h