0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于NI 数据采集器的QT C++应用程序开发测试输出模拟电压信号

liangyuhc 来源:恋 作者:恋 2023-06-26 17:19 次阅读

前言:
最近项目需要用到NI的数据采集设备,之前的项目在使用NI的采集设备时更多用的labview编写相关程序,也能够快速搭建相关的采集平台,但是最近更多的使用的QT c++,前期的的其他工作均是有QT完成,所以这次采用QT C++平台编写相关程序,仅对QT调用NI设备API的配置做记录。

NI-DAQmx安装:
NI官网下载DAQmx。

poYBAGSZV4yAKLT8AACT32dFSTg281.png

根据需要下载相应的版本,我下载的是最新版本。

下载完成之后,安装需要选择 ANSI C Support。

pYYBAGSZV5eALvaLAADOPogITKo327.png

新建QT工程:
工程可选择32位编译器或者64位编译器均可,添加外部库和头文件。网上很多人说需要选择32位编译器是因为没有找到相应的64位库导致。

poYBAGSZV6CAbVknAAB0HaJfcFU811.png

64位库路径:

C:Program Files (x86)National InstrumentsSharedExternalCompilerSupportClib64msvc

32位库路径:

C:Program Files (x86)National InstrumentsSharedExternalCompilerSupportClib32msvc

测试代码:
测试代码是应用的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;
}
测试结果:

poYBAGSZV6yAKI-VAAAa5mCpipU403.png


代码运行正常。

pYYBAGSZV8CAGZlpAA2HdoMgmOo848.png

输出正常。
————————————————
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NI
    NI
    +关注

    关注

    19

    文章

    1123

    浏览量

    100314
  • 模拟电压
    +关注

    关注

    6

    文章

    64

    浏览量

    18299
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73636
  • Qt
    Qt
    +关注

    关注

    1

    文章

    302

    浏览量

    37904
收藏 人收藏

    评论

    相关推荐

    低成本NI-USB-6009数据采集卡,数据采集,提供Labview使用指导

    `NI USB-600914位, 48 kS/s低价位多功能数据采集卡(二手95新,898元,全网最低,现货100件) · 8路模拟输入通道(14位分辨率,48 kS/s) ·2路模拟输出
    发表于 08-15 10:58

    关于NI myRIO模拟信号数据采集

    我使用NI myRIO进行模拟信号数据采集程序很简单,如下:然后由外部函数信号发生发出1K
    发表于 11-08 17:19

    不是NI公司的数据采集器,怎么加入labview进行采集呢?

    不是NI公司的数据采集器,怎么加入labview进行采集呢?
    发表于 11-08 19:08

    基于QT/Embedded的可变情报板应用程序开发

    基于QT/Embedded的可变情报板应用程序开发 QT是奇趣科技推出的一种多平台的C++图形用户界面
    发表于 03-03 09:36 779次阅读

    基于QT/Embedded的可变情报板应用程序开发

    基于QT/Embedded的可变情报板应用程序开发  0引言   QT是奇趣科技推出的一种多平台的C++图形用户界面
    发表于 03-09 10:39 918次阅读

    低成本的U盘数据采集器设计

    本文以带有片上A/D转换C8051F340处理和USB接口芯片CH375为基础,设计了一款可对100 kHz以下的低频模拟信号进行10位深度采样的低成本
    发表于 05-11 11:07 1653次阅读
    低成本的U盘<b class='flag-5'>数据采集器</b>设计

    基于C++数据采集器的设计与实现

    数据采集器是普遍用在超市、商场、各大小企业之中的数据采集设备。本文主要介绍如何基于C++语言来设计数据采集器,并根据数据库的基本原理,成功设
    发表于 04-15 19:34 0次下载
    基于<b class='flag-5'>C++</b>的<b class='flag-5'>数据采集器</b>的设计与实现

    C#教程之数据采集器读写

    C#教程之数据采集器读写,很好的C#资料,快来学习吧。
    发表于 04-21 09:52 41次下载

    跨平台C++图形用户界面应用程序QT4中文教程手册

    跨平台C++图形用户界面应用程序QT4中文教程手册
    发表于 08-29 14:22 0次下载

    通用采集器电压信号采集电路(基于FPGA)

    机载通用采集器用于机载环境下各类常规信号采集。不同于专用采集器测试任务单一固定,通用采集器被测
    发表于 11-01 14:35 21次下载
    通用<b class='flag-5'>采集器</b><b class='flag-5'>电压</b>量<b class='flag-5'>信号</b><b class='flag-5'>采集</b>电路(基于FPGA)

    什么是数据采集器数据采集器的分类有哪些

    数据采集器是一种具有现场实时数据采集、处理功能的自动化设备。一般具备实时采集、自动存储、即时显示、即时反馈、自动处理、自动传输等功能,为现场数据的真实性、有效性、实时性、可用性提供了保
    发表于 03-11 17:41 5475次阅读

    多通道数据采集器怎么看数据

    多通道数据采集器是一种广泛应用于工业自动化、科研实验、医疗设备等领域的设备,它可以同时采集多个通道的模拟信号或数字信号,并将采集到的
    的头像 发表于 07-01 16:50 733次阅读

    多通道数据采集器采集什么

    通道数据采集器的功能、特点、应用领域以及发展趋势。 一、多通道数据采集器的功能 模拟信号采集:多通道数据采集器可以
    的头像 发表于 07-02 09:02 765次阅读

    多通道数据采集器的作用有哪些

    数据采集器的作用、特点、应用领域以及发展趋势。 一、多通道数据采集器的作用 实时数据采集 多通道数据采集器可以实时采集各种
    的头像 发表于 07-02 09:04 686次阅读

    多通道数据采集器的特点和功能有哪些

    通道数据采集器的特点 高精度:多通道数据采集器具有高精度的模拟-数字转换(ADC),可以精确地采集模拟
    的头像 发表于 07-02 09:05 859次阅读