QtSDK と NI-DAQmxBase (Linux) を使った単純なサンプル
Revision | 5ed12a22b36b73a0e3f758ef86d017a33046861b (tree) |
---|---|
Zeit | 2012-08-23 11:02:53 |
Autor | arakaki <alucky4416@user...> |
Commiter | arakaki |
CHG: Worked. Pulse output on/off, and Change Freq, Duty when while
PulseOutput.
@@ -62,25 +62,11 @@ void DAQThread::run() | ||
62 | 62 | DAQmxBaseGetDevSerialNum("Dev1", &serialnumber); |
63 | 63 | qDebug() << QString("%1 SerialNumber is 0x%2").arg("Dev1").arg(serialnumber, 8, 16, QChar('0')); |
64 | 64 | |
65 | +// DAQmxBaseResetDevice("Dev1"); | |
66 | + | |
65 | 67 | // signal - daqmxbase ready |
66 | 68 | emit daqmxbase_ready(); |
67 | 69 | |
68 | -#if 0 | |
69 | - /*********************************************/ | |
70 | - // DAQmx Configure Code | |
71 | - /*********************************************/ | |
72 | - DAQmxErrChk (DAQmxBaseCreateTask("", &taskHandle)); | |
73 | - // int32 DAQmxBaseCreateCOPulseChanFreq (TaskHandle taskHandle, const char counter[ ], const char nameToAssignToChannel[ ], int32 units, int32 idleState, float64 initialDelay, float64 freq, float64 dutyCycle); | |
74 | - DAQmxErrChk (DAQmxBaseCreateCOPulseChanFreq (taskHandle, ctrname, "", DAQmx_Val_Hz, DAQmx_Val_Low, (float64)0.0, pulse_freq, pulse_ducy)); | |
75 | - | |
76 | - // int32 DAQmxBaseCfgImplicitTiming (TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChanToAcquire); | |
77 | - DAQmxErrChk (DAQmxBaseCfgImplicitTiming (taskHandle, DAQmx_Val_ContSamps, (uInt64)0)); | |
78 | - /*********************************************/ | |
79 | - // DAQmx Start Code | |
80 | - /*********************************************/ | |
81 | - DAQmxBaseStartTask(taskHandle); | |
82 | -#endif | |
83 | - | |
84 | 70 | while(!stopped) { |
85 | 71 | if (EvtQue->isEmpty()) { |
86 | 72 | msleep(100); |
@@ -91,34 +77,36 @@ void DAQThread::run() | ||
91 | 77 | switch (state) { |
92 | 78 | case State_IDLE: |
93 | 79 | if (event == Ev_Start) { |
94 | -// qDebug() << "start pulse output."; // start Pulse output | |
95 | 80 | qDebug() << QString("start pulse output: freq = %1, ducy = %2").arg(pulse_freq).arg(pulse_duty); |
96 | 81 | // int32 DAQmxBaseCreateCOPulseChanFreq (TaskHandle taskHandle, const char counter[ ], const char nameToAssignToChannel[ ], int32 units, int32 idleState, float64 initialDelay, float64 freq, float64 dutyCycle); |
97 | 82 | DAQmxErrChk (DAQmxBaseCreateTask("", &taskHandle)); |
98 | 83 | DAQmxErrChk (DAQmxBaseCreateCOPulseChanFreq (taskHandle, ctrname, "", DAQmx_Val_Hz, DAQmx_Val_Low, (float64)0.0, pulse_freq, pulse_duty)); |
99 | 84 | // int32 DAQmxBaseCfgImplicitTiming (TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChanToAcquire); |
100 | 85 | DAQmxErrChk (DAQmxBaseCfgImplicitTiming (taskHandle, DAQmx_Val_ContSamps, (uInt64)0)); |
101 | - // msleep(100); | |
102 | 86 | DAQmxErrChk (DAQmxBaseStartTask (taskHandle)); |
103 | 87 | state = State_OUTPUT; |
104 | 88 | } |
105 | 89 | break; |
106 | 90 | case State_OUTPUT: |
107 | 91 | if (event == Ev_Stop) { |
108 | - qDebug() << "stop pulse output.";; // stop Pulse | |
92 | + qDebug() << "stop pulse output."; // stop Pulse | |
109 | 93 | DAQmxErrChk (DAQmxBaseStopTask (taskHandle)); |
94 | + msleep(200); | |
110 | 95 | DAQmxErrChk (DAQmxBaseClearTask (taskHandle)); |
96 | + taskHandle = 0; | |
111 | 97 | state = State_IDLE; |
112 | 98 | } else if (event == Ev_ChgPulse) { |
113 | - qDebug() << "change pulse freq, ducy.";; // change Pulse Freq, Ducy | |
99 | + qDebug() << QString("change pulse freq, duty : freq = %1, ducy = %2").arg(pulse_freq).arg(pulse_duty); | |
114 | 100 | DAQmxErrChk (DAQmxBaseStopTask (taskHandle)); |
101 | + msleep(200); | |
115 | 102 | DAQmxErrChk (DAQmxBaseClearTask (taskHandle)); |
116 | -// msleep(100); | |
103 | + taskHandle = 0; | |
104 | + // msleep(200); | |
117 | 105 | DAQmxErrChk (DAQmxBaseCreateTask("", &taskHandle)); |
118 | 106 | // int32 DAQmxBaseCreateCOPulseChanFreq (TaskHandle taskHandle, const char counter[ ], const char nameToAssignToChannel[ ], int32 units, int32 idleState, float64 initialDelay, float64 freq, float64 dutyCycle); |
119 | 107 | DAQmxErrChk (DAQmxBaseCreateCOPulseChanFreq (taskHandle, ctrname, "", DAQmx_Val_Hz, DAQmx_Val_Low, (float64)0.0, pulse_freq, pulse_duty)); |
120 | 108 | // int32 DAQmxBaseCfgImplicitTiming (TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChanToAcquire); |
121 | - DAQmxErrChk (DAQmxBaseCfgImplicitTiming (taskHandle, DAQmx_Val_FiniteSamps, (uInt64)0)); | |
109 | + DAQmxErrChk (DAQmxBaseCfgImplicitTiming (taskHandle, DAQmx_Val_ContSamps, (uInt64)0)); | |
122 | 110 | DAQmxErrChk (DAQmxBaseStartTask (taskHandle)); |
123 | 111 | } |
124 | 112 | break; |
@@ -139,6 +127,7 @@ Error: | ||
139 | 127 | // DAQmx Stop Code |
140 | 128 | /*********************************************/ |
141 | 129 | DAQmxBaseStopTask(taskHandle); |
130 | + msleep(200); | |
142 | 131 | DAQmxBaseClearTask(taskHandle); |
143 | 132 | emit daqmxbase_final(); |
144 | 133 | } |