• R/O
  • HTTP
  • SSH
  • HTTPS

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

QtSDK と NI-DAQmxBase (Linux) を使った単純なサンプル


File Info

Rev. e8305f1a9058c8ef458912ad24c94ede126f9536
大小 1,382 字节
时间 2012-12-08 18:31:13
作者 arakaki
Log Message

ADD: Select ContSamp/FiniteSamp mode.

Content

#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