QXRD  0.11.16
qxrdnidaqplugin.h
Go to the documentation of this file.
1 #ifndef QXRDNIDAQPLUGIN_H
2 #define QXRDNIDAQPLUGIN_H
3 
4 #include <QObject>
5 #include <QDateTime>
6 #include <QMutex>
7 #include <QStringList>
8 #include <QVector>
9 
11 #include "NIDAQmx.h"
12 
13 class QxrdNIDAQPlugin : public QObject, public QxrdNIDAQPluginInterface
14 {
15  Q_OBJECT
16 #if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
17  Q_PLUGIN_METADATA(IID QxrdNIDAQPluginInterface_iid FILE "nidaq.json")
18 #endif
19  Q_INTERFACES(QxrdNIDAQPluginInterface)
20 
21 public:
23  virtual ~QxrdNIDAQPlugin();
24  virtual void setErrorOutput(QObject *errors);
25 
26  QString name() const;
27 
28 public slots:
29  void printMessage(QString msg);
30  void setAnalogWaveform(QString chan, double rate, double wfm[], int size);
31  void setAnalogOutput(int chan, double val);
32  double getAnalogInput(int chan);
33  void triggerAnalogWaveform();
34 
35  void pulseOutput();
36 
37  double count(int chan, double time);
38 
39  int configCounters(QStringList chans);
40  QVector<double> readCounters();
41 
42  QStringList deviceNames();
43  QString deviceType(QString device);
44  int deviceIsSimulated(QString device);
45  QStringList deviceAIChannels(QString device);
46  QStringList deviceAOChannels(QString device);
47  QStringList deviceDIPorts(QString device);
48  QStringList deviceDILines(QString port);
49  QStringList deviceDOPorts(QString device);
50  QStringList deviceDOLines(QString port);
51  QStringList deviceCIChannels(QString device);
52  QStringList deviceCOChannels(QString device);
53 
54  double getAnalogInput(QString channelName);
55  void setAnalogOutput(QString channelName, double value);
56  void setAnalogOutput(double value);
57 
58  virtual int prepareContinuousInput(double sampleRate,
59  double acquireDelay,
60  double exposureTime,
61  QStringList chans,
62  QVector<double> minVals,
63  QVector<double> maxVals);
64  virtual int countContinuousInput();
65  virtual int readContinuousInput();
66  virtual QVector<double> readContinuousInputChannel(int ch);
67  virtual void finishContinuousInput();
68 
69 private:
70  void initTaskHandles();
71  void closeTaskHandles();
72  void errorCheck(const char* file, int line, int err);
73 
74 private:
75  QObject *m_ErrorOutput;
76  QMutex m_Mutex;
77  TaskHandle m_AOTaskHandle;
78  TaskHandle m_AITaskHandle;
79  TaskHandle m_TrigAOTask;
80  TaskHandle m_PulseTask;
81  TaskHandle m_CountersTask;
83  QVector<double> m_Counts;
84 
85  double m_SampleRate;
88 
91 
94  TaskHandle m_ContinuousAITask;
95  QVector<TaskHandle> m_ContinuousCITasks;
96  QVector<int> m_ContinuousFlags;
97  QVector<int> m_ContinuousChans;
98 
99  QVector< QVector<double> > m_ContinuousInputData;
100 };
101 
102 #endif // QXRDNIDAQPLUGIN_H
int configCounters(QStringList chans)
TaskHandle m_TrigAOTask
void setAnalogOutput(int chan, double val)
double count(int chan, double time)
double getAnalogInput(int chan)
QString name() const
QStringList deviceDOPorts(QString device)
QVector< double > m_Counts
QVector< double > readCounters()
TaskHandle m_ContinuousAITask
virtual void finishContinuousInput()
TaskHandle m_PulseTask
#define QxrdNIDAQPluginInterface_iid
virtual int countContinuousInput()
QStringList deviceDIPorts(QString device)
virtual int readContinuousInput()
TaskHandle m_AITaskHandle
void errorCheck(const char *file, int line, int err)
virtual ~QxrdNIDAQPlugin()
QVector< QVector< double > > m_ContinuousInputData
QStringList deviceCOChannels(QString device)
QVector< TaskHandle > m_ContinuousCITasks
TaskHandle m_AOTaskHandle
virtual void setErrorOutput(QObject *errors)
QStringList deviceAOChannels(QString device)
TaskHandle m_CountersTask
QString deviceType(QString device)
virtual int prepareContinuousInput(double sampleRate, double acquireDelay, double exposureTime, QStringList chans, QVector< double > minVals, QVector< double > maxVals)
QStringList deviceDILines(QString port)
QStringList deviceAIChannels(QString device)
QVector< int > m_ContinuousChans
void setAnalogWaveform(QString chan, double rate, double wfm[], int size)
QStringList deviceDOLines(QString port)
int deviceIsSimulated(QString device)
QVector< int > m_ContinuousFlags
virtual QVector< double > readContinuousInputChannel(int ch)
QStringList deviceCIChannels(QString device)
void printMessage(QString msg)
QObject * m_ErrorOutput
QStringList deviceNames()