quadEM  7-0
drvTetrAMM.h
Go to the documentation of this file.
1 /*
2  * drvTetrAMM.h
3  *
4  * Asyn driver that inherits from the drvQuadEM class to control the CaenEls TetrAMM 4-channel picoammeter
5  *
6  * Author: Mark Rivers
7  *
8  * Created July 14, 2015
9  */
10 
11 #include "drvQuadEM.h"
12 
13 #define MAX_COMMAND_LEN 256
14 
16 class drvTetrAMM : public drvQuadEM {
17 public:
18  drvTetrAMM(const char *portName, const char *QEPortName, int ringBufferSize);
19 
20  /* These are the methods we implement from asynPortDriver */
21  void report(FILE *fp, int details);
22 
23  /* These are the methods that are new to this class */
24  void readThread(void);
25  virtual void exitHandler();
26 
27 protected:
28  /* These are the methods we implement from quadEM */
29  virtual asynStatus readStatus();
30  virtual asynStatus reset();
31  virtual asynStatus setAcquire(epicsInt32 value);
32  virtual asynStatus setAcquireMode(epicsInt32 value);
33  virtual asynStatus setAveragingTime(epicsFloat64 value);
34  virtual asynStatus setBiasState(epicsInt32 value);
35  virtual asynStatus setBiasVoltage(epicsFloat64 value);
36  virtual asynStatus setBiasInterlock(epicsInt32 value);
37  virtual asynStatus setNumChannels(epicsInt32 value);
38  virtual asynStatus setNumAcquire(epicsInt32 value);
39  virtual asynStatus setRange(epicsInt32 value);
40  virtual asynStatus setReadFormat(epicsInt32 value);
41  virtual asynStatus setTriggerMode(epicsInt32 value);
42  virtual asynStatus setTriggerPolarity(epicsInt32 value);
43  virtual asynStatus setValuesPerRead(epicsInt32 value);
44 
45 private:
46  /* Our data */
47  asynUser *pasynUserMeter_;
48  epicsEventId acquireStartEvent_;
49  int readingActive_;
50  int numResync_;
51  char *QEPortName_;
52  char firmwareVersion_[MAX_COMMAND_LEN];
53  char outString_[MAX_COMMAND_LEN];
54  char inString_[MAX_COMMAND_LEN];
55  asynStatus sendCommand();
56  asynStatus writeReadMeter();
57  asynStatus setAcquireParams();
58  asynStatus getFirmwareVersion();
59 };
60 
virtual asynStatus readStatus()
Reads all the settings back from the electrometer.
Definition: drvTetrAMM.cpp:762
void readThread(void)
Read thread to read the data from the electrometer when it is in continuous acquire mode...
Definition: drvTetrAMM.cpp:171
virtual asynStatus setAveragingTime(epicsFloat64 value)
Sets the averaging time.
Definition: drvTetrAMM.cpp:649
Base class to control the quad electrometer.
Definition: drvQuadEM.h:128
virtual asynStatus setBiasInterlock(epicsInt32 value)
Sets the bias interlock.
Definition: drvTetrAMM.cpp:692
virtual asynStatus setTriggerPolarity(epicsInt32 value)
Sets the trigger polarity.
Definition: drvTetrAMM.cpp:747
#define MAX_COMMAND_LEN
Definition: drvTetrAMM.h:13
virtual asynStatus reset()
Downloads all of the current EPICS settings to the electrometer.
Definition: drvTetrAMM.cpp:417
virtual asynStatus setAcquireMode(epicsInt32 value)
Sets the acquire mode.
Definition: drvTetrAMM.cpp:641
char * portName
The name of this asyn port.
Definition: asynPortDriver.h:201
virtual asynStatus setNumAcquire(epicsInt32 value)
Sets the number of triggers.
Definition: drvTetrAMM.cpp:712
drvTetrAMM(const char *portName, const char *QEPortName, int ringBufferSize)
Constructor for the drvTetrAMM class.
Definition: drvTetrAMM.cpp:57
virtual asynStatus setAcquire(epicsInt32 value)
Starts and stops the electrometer.
Definition: drvTetrAMM.cpp:450
virtual asynStatus setBiasVoltage(epicsFloat64 value)
Sets the bias voltage.
Definition: drvTetrAMM.cpp:676
virtual asynStatus setValuesPerRead(epicsInt32 value)
Sets the values per read.
Definition: drvTetrAMM.cpp:755
virtual asynStatus setTriggerMode(epicsInt32 value)
Sets the trigger mode.
Definition: drvTetrAMM.cpp:738
void report(FILE *fp, int details)
Report parameters.
Definition: drvTetrAMM.cpp:854
virtual asynStatus setReadFormat(epicsInt32 value)
Sets the read format.
Definition: drvTetrAMM.cpp:728
Class to control the CaenEls TetrAMM 4-Channel Picoammeter.
Definition: drvTetrAMM.h:16
virtual asynStatus setNumChannels(epicsInt32 value)
Sets the number of channels.
Definition: drvTetrAMM.cpp:704
virtual void exitHandler()
Exit handler.
Definition: drvTetrAMM.cpp:843
virtual asynStatus setRange(epicsInt32 value)
Sets the range.
Definition: drvTetrAMM.cpp:720
virtual asynStatus setBiasState(epicsInt32 value)
Sets the bias state.
Definition: drvTetrAMM.cpp:657