QtSDK と NI-DAQmxBase (Linux) を使った単純なサンプル
Rev. | e8305f1a9058c8ef458912ad24c94ede126f9536 |
---|---|
大小 | 1,382 字节 |
时间 | 2012-12-08 18:31:13 |
作者 | arakaki |
Log Message | ADD: Select ContSamp/FiniteSamp mode.
|
#ifndef DAQTHREAD_H
#define DAQTHREAD_H
#include <QThread>
#include <QQueue>
#include <QString>
#include "NIDAQmxBase.h"
class DAQThread : public QThread
{
Q_OBJECT
public:
explicit DAQThread(QObject *parent = 0);
~DAQThread();
void stop();
void startPulseOutput(QString &devname, float freq, float duty, int continue_mode, unsigned long long int pulsecount);
void stopPulseOutput();
void changePulseOutput(float freq, float duty);
public slots:
signals:
void daqmxbase_ready();
void daqmxbase_final();
void daqmxbase_error(QString errmsg);
void pulse_output_started();
void pulse_output_stopped();
protected:
void run();
private:
volatile bool stopped;
TaskHandle taskHandle; // Daqmxbase task handle
QByteArray ctrname; // = "Dev1/ctr0";
float64 pulse_freq;
float64 pulse_duty;
int32 cont_mode; // 1 = DAQmx_Val_ContSamps or 0 = DAQmx_Val_FiniteSamps
uInt64 pulse_count; // pulse count when DAQmx_Val_FiniteSamps
// State Machine, state Id
enum { State_IDLE = 0,
State_OUTPUT // Pulse Output
} state;
// State Machine, event Id
enum { Ev_Nop = 0,
Ev_Start, // start pulse output
Ev_Stop, // stop pulse
Ev_ChgPulse // chg pulse freq, duty
};
QQueue<int> *EvtQue; // EventQue
};
#endif // DAQTHREAD_H