QNI628XDiffDigitizer.hh
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __QNI628XDIFFDIGITIZER_HH_
00016 #define __QNI628XDIFFDIGITIZER_HH_
00017
00018 #include "QCuore.hh"
00019 #include "QDigitizer.hh"
00020
00021
00022 #include <fstream>
00023 #ifdef __NI_HARDWARE__
00024 #include <NIDAQmx.h>
00025 #endif
00026
00027 class QNI628XDiffDigitizer : public QDigitizer {
00028 public:
00029
00030
00031 QNI628XDiffDigitizer() : QDigitizer(0,0,0,0,"NI628X-DIFF") {}
00032
00033
00034 QNI628XDiffDigitizer(QCrate* c,
00035 int slot,
00036 unsigned long base,
00037 int nch,
00038 std::string n);
00039
00040
00041 virtual ~QNI628XDiffDigitizer();
00042
00043
00044 virtual void RegisterChannel(int lg, int n, bool SaveFile);
00045
00046
00047 virtual void RegisterDigitalChannel(int lg, bool SaveFile);
00048
00049
00050 virtual void SetStatusReady();
00051
00052
00053 virtual void SetStatusRunning(bool);
00054
00055
00056 virtual int GetData();
00057
00058
00059 virtual void Dump() const;
00060
00061
00062 virtual bool SetClockSource(QDigitizer::QClockSource_t source);
00063
00064
00065 virtual bool WaitForStartSignal(const char* const signalName);
00066
00067
00068 virtual void GetStartSignal(char* signalName);
00069
00070 virtual bool SetMuLineStatus(bool status);
00071
00072 protected:
00073
00074
00075 inline void SetFilterStatus(bool status) {fFilterStatus = status;}
00076
00077
00078 inline void SetSamplingRate(unsigned long rate) {fSamplingRate = rate;}
00079
00080 inline void SetADCRange(int range) { fAdcRange = range; }
00081
00082
00083 void LoadSettings();
00084
00085
00086 void ClearTask();
00087
00088
00089 void HandleNIError(int errCode, int line) const;
00090
00091
00092 #ifdef __NI_HARDWARE__
00093 TaskHandle fTaskHandle;
00094 TaskHandle fDigTaskHandle;
00095 #endif
00096
00097 bool fIsReady;
00098 bool fIsRunning;
00099 bool fFilterStatus;
00100 unsigned long fSamplingRate;
00101 int fAdcRange;
00102 unsigned int fLastCounterVal;
00103
00104 QDigitizer::QClockSource_t fClockSource;
00105 bool fWaitForStartSignal;
00106
00107 int fBoardSlot;
00108 int fCrateId;
00109
00110 std::string fStartSignalName;
00111 std::string fDeviceName;
00112
00113 long *fData;
00114 unsigned int fBufSize;
00115 unsigned long *fDigData;
00116 unsigned int fDigBufSize;
00117
00118 std::map<int,int> fChannelPosition;
00120 std::map<int,std::string> fNIChannelName;
00122 };
00123
00124 #endif