前言:
最近項目需要用到NI的數(shù)據(jù)采集設(shè)備,之前的項目在使用NI的采集設(shè)備時更多用的labview編寫相關(guān)程序,也能夠快速搭建相關(guān)的采集平臺,但是最近更多的使用的QT c++,前期的的其他工作均是有QT完成,所以這次采用QT C++平臺編寫相關(guān)程序,僅對QT調(diào)用NI設(shè)備API的配置做記錄。
NI-DAQmx安裝:
NI官網(wǎng)下載DAQmx。
![poYBAGSZV4yAKLT8AACT32dFSTg281.png](https://file.elecfans.com/web2/M00/AD/D0/poYBAGSZV4yAKLT8AACT32dFSTg281.png)
根據(jù)需要下載相應(yīng)的版本,我下載的是最新版本。
下載完成之后,安裝需要選擇 ANSI C Support。
![pYYBAGSZV5eALvaLAADOPogITKo327.png](https://file.elecfans.com/web2/M00/AE/49/pYYBAGSZV5eALvaLAADOPogITKo327.png)
新建QT工程:
工程可選擇32位編譯器或者64位編譯器均可,添加外部庫和頭文件。網(wǎng)上很多人說需要選擇32位編譯器是因為沒有找到相應(yīng)的64位庫導(dǎo)致。
![poYBAGSZV6CAbVknAAB0HaJfcFU811.png](https://file.elecfans.com/web2/M00/AD/D0/poYBAGSZV6CAbVknAAB0HaJfcFU811.png)
64位庫路徑:
C:Program Files (x86)National InstrumentsSharedExternalCompilerSupportClib64msvc
32位庫路徑:
C:Program Files (x86)National InstrumentsSharedExternalCompilerSupportClib32msvc
測試代碼:
測試代碼是應(yīng)用的NI提供的示例代碼。
#include
#include
#include
#include
#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
#define PI 3.1415926535
int32 CVICALLBACK DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int32 error=0;
TaskHandle taskHandle=0;
float64 data[1000];
char errBuff[2048]={'?'};
int i=0;
for(;i<1000;i++)
// data[i] = 0+9.95*sin((double)i*2.0*PI/50.0);
data[i]=10-10*(double)i/1000;
/*********************************************/
// DAQmx Configure Code
/*********************************************/
DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
DAQmxErrChk (DAQmxCreateAOVoltageChan(taskHandle,"Dev1/ao0","",-10.0,10.0,DAQmx_Val_Volts,NULL));
DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",1000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000));
DAQmxErrChk (DAQmxRegisterDoneEvent(taskHandle,0,DoneCallback,NULL));
/*********************************************/
// DAQmx Write Code
/*********************************************/
DAQmxErrChk (DAQmxWriteAnalogF64(taskHandle,1000,0,10,DAQmx_Val_GroupByChannel,data,NULL,NULL));
/*********************************************/
// DAQmx Start Code
/*********************************************/
DAQmxErrChk (DAQmxStartTask(taskHandle));
printf("Generating voltage continuously. Press Enter to interruptn");
getchar();
Error:
if( DAQmxFailed(error) )
DAQmxGetExtendedErrorInfo(errBuff,2048);
if( taskHandle!=0 ) {
/*********************************************/
// DAQmx Stop Code
/*********************************************/
DAQmxStopTask(taskHandle);
DAQmxClearTask(taskHandle);
}
if( DAQmxFailed(error) )
printf("DAQmx Error: %sn",errBuff);
printf("End of program, press Enter key to quitn");
getchar();
return a.exec();
}
int32 CVICALLBACK DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData)
{
int32 error=0;
char errBuff[2048]={'?'};
// Check to see if an error stopped the task.
DAQmxErrChk (status);
Error:
if( DAQmxFailed(error) ) {
DAQmxGetExtendedErrorInfo(errBuff,2048);
DAQmxClearTask(taskHandle);
printf("DAQmx Error: %sn",errBuff);
}
return 0;
}
測試結(jié)果:
![poYBAGSZV6yAKI-VAAAa5mCpipU403.png](https://file.elecfans.com/web2/M00/AD/D0/poYBAGSZV6yAKI-VAAAa5mCpipU403.png)
代碼運行正常。
![pYYBAGSZV8CAGZlpAA2HdoMgmOo848.png](https://file.elecfans.com/web2/M00/AE/49/pYYBAGSZV8CAGZlpAA2HdoMgmOo848.png)
輸出正常。
————————————————
審核編輯:湯梓紅
-
NI
+關(guān)注
關(guān)注
19文章
1123瀏覽量
100611 -
模擬電壓
+關(guān)注
關(guān)注
6文章
64瀏覽量
18358 -
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73854 -
Qt
+關(guān)注
關(guān)注
1文章
308瀏覽量
38065
發(fā)布評論請先 登錄
相關(guān)推薦
低成本NI-USB-6009數(shù)據(jù)采集卡,數(shù)據(jù)采集,提供Labview使用指導(dǎo)
關(guān)于NI myRIO模擬信號數(shù)據(jù)采集
基于QT/Embedded的可變情報板應(yīng)用程序開發(fā)
基于QT/Embedded的可變情報板應(yīng)用程序開發(fā)
低成本的U盤數(shù)據(jù)采集器設(shè)計
![低成本的U盤<b class='flag-5'>數(shù)據(jù)采集器</b>設(shè)計](https://file1.elecfans.com//web2/M00/A6/35/wKgZomUMPEiAeckLAAAVKyK5fFs968.jpg)
基于C++的數(shù)據(jù)采集器的設(shè)計與實現(xiàn)
![基于<b class='flag-5'>C++</b>的<b class='flag-5'>數(shù)據(jù)采集器</b>的設(shè)計與實現(xiàn)](https://file.elecfans.com/web2/M00/49/72/pYYBAGKhtFGAZ-U3AAASopAQS70969.jpg)
通用采集器電壓量信號采集電路(基于FPGA)
![通用<b class='flag-5'>采集器</b><b class='flag-5'>電壓</b>量<b class='flag-5'>信號</b><b class='flag-5'>采集</b>電路(基于FPGA)](https://file.elecfans.com/web2/M00/49/3F/poYBAGKhwJSAUOWEAAANAdVHx1U947.jpg)
評論