NI公司有很多款性能比较好的数据采集卡,我实验室有数据采集卡6353和USB-6210,都是USB连接电脑,只是供电方式不同,通道数目不同,我都编过一些程序,程序编写是一样的,都是调用NI公司提供的DAQmx里面的函数,让数据采集卡按照我们的要求工作,这里我只介绍USB-6210吧。

刚开始学数据采集卡时,关于数据采集卡的C语言程序时不好找,大多数是通过NI公司的labview控制的,用C语言控制的比较少,所以在这里讲解一下,希望能对大家有用。

好,现在正式开始,最近几天在实验室采集压力传感器的数据,用的是NI公司的数据采集卡,压力传感器输出的是电压信号,经过数据采集卡的模数转换和采集以后传到电脑上,编程环境:VS2010和VS2015都可以。

首先,买数据采集卡的时候会带有一个光盘,这个光盘里面有很多产品信息和一些配套软件,首先安装NI-DAQmx驱动程序,具体的安装方法光盘里面的有个文档有专门讲解,挺简单的,就不介绍了,下面主要介绍一下如何编程控制数据采集卡。

先介绍C语言版的吧,安装完DAQmx驱动程序以后我们可以找到官方给的C语言例程:开始->所有程序->National Instruments->NI DAQmx->NI DAQmx范例/NI DAQmx 文档,范例可以找到例程,文档里面包含一些NI DAQmx的文档链接,文档里面对于编程最有用的是NI-DAQmx C Reference Help ,它提供了编程需要的API。这个网上也可以搜到。

首先新建一个项目,项目建成以后开始编程,

第一步:将NIDAQmx.h头文件和官方提供的库文件NIDAQmx.lib复制粘贴到所建项目下面

第二步:在项目里面加入NIDAQmx.h头文件和NIDAQmx.lib

第三步:在.cpp文件中将NIDAQmx.h头文件和NIDAQmx.lib加入,代码如下

    #include "NIDAQmx.h"#pragma comment(lib,"NIDAQmx.lib")

第四步:调用API中的函数编程序实现自己想实现的数据采集方式,

数据采集方式有很多种,我常用的是每次采集有限个数据连续不断的采集两种采集方式,这里介绍前一种数据采集方式,后一种采集方式的实现我会另外写一篇博客。

啥也不说了,上代码:

#include <stdio.h>
#include "NIDAQmx.h"
#pragma comment(lib,"NIDAQmx.lib")
#include<iostream>
using namespace std;#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
float64   data[6000], last=0;
float64* Smooth(float64 data[]);
#define N 12
#define M 20int main(void)
{int32       error=0;TaskHandle  taskHandle=0;int32       read;char        errBuff[2048]={'\0'};memset(data, 0, sizeof(float64) * 6000);/*********************************************/// DAQmx Configure Code//第一步:创建任务//第二步:创建电压输入通道//第三步:配置采样时钟//第四步:进行终端配置,这个将决定怎么连接电路。//第五步:开始任务//第六步:读取数据//第七步:对数据进行保存和处理,这里是保存了原始数据,然后进行滤波,最后保存滤波后的数据,//都保存到txt文档中了/*********************************************/DAQmxErrChk (DAQmxCreateTask("",&taskHandle));DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandle,"Dev2/ai0","",DAQmx_Val_Cfg_Default  ,-10.0,10.0,DAQmx_Val_Volts,NULL));DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,6000));DAQmxErrChk (DAQmxSetAITermCfg(taskHandle,"Dev2/ai0",DAQmx_Val_RSE));/*********************************************/// DAQmx Start Code/*********************************************/DAQmxErrChk (DAQmxStartTask(taskHandle));/*********************************************/// DAQmx Read Code/*********************************************/DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,6000,10.0,DAQmx_Val_GroupByChannel,data,6000,&read,NULL));FILE *fp1=fopen("data1.txt","w+");for(int l=0;l<6000;l++){fprintf(fp1,"%f",data[l]);fputc(',',fp1);fprintf(fp1,"%f",0.0001*l);fputc('\n',fp1);}fclose(fp1);for(int i=0;i<M;i++)  //滤波的次数{Smooth(data);}FILE *fp2=fopen("data2.txt","w+");for(int l=0;l<6000;l++){fprintf(fp2,"%f",data[l]);fputc(',',fp2);fprintf(fp2,"%f",0.0001*l);fputc('\n',fp2);}fclose(fp2);printf("Acquired %d points\n",(int)read);Error:if( DAQmxFailed(error) )DAQmxGetExtendedErrorInfo(errBuff,2048);if( taskHandle!=0 )  {/*********************************************/// DAQmx Stop Code/*********************************************/DAQmxStopTask(taskHandle);DAQmxClearTask(taskHandle);}if( DAQmxFailed(error) )printf("DAQmx Error: %s\n",errBuff);printf("End of program, press Enter key to quit\n");getchar();return 0;
}
float64* Smooth(float64 data[])
{
//添加自己的滤波算法,我用的是滑动平均滤波,具体实现我会另外写一篇博客
}

这是一个简单的NI数据采集卡的程序,只采集了有限个数据,进行了滤波和数据存储,我还实现过连续的数据采集,并且实现了C++类的封装和调用,这个我会另外写一篇博客。

如果有问题,请在底下留言,谢谢大家观看。

用C语言给NI公司数据采集卡编程序进行电压数据采集相关推荐

  1. 自制开源的串口数据采集卡,可作为LabVIEW数据采集卡和其他语言调用

    MakerHub开源硬件系列文章之一:数据采集卡-数字输出 作者:everddm,微信公众号:MakerHub 这是一个开源的硬件+对应的开源软件+应用示例,可以商用,转载请注明出处 LOGO左边是L ...

  2. 数据采集卡 html报表,网页表格数据采集助手

    网页表格数据采集助手是一款表格采集工具,可以为用户将网站上的表格以excel的格式储存到本地,当然也可以实用纯文本,这个能够根据个人需要进行设置. 小编精选:网站采集器 软件介绍 可以采集单页的规则的 ...

  3. 16bit 180MS/s 高速数据采集卡的性能介绍

    16bit 180MS/s 高速数据采集卡 产品编号:HSDAQ9462 规 格:16bit 180MS/s 高速数据采集卡及专用高性能磁盘阵列服务器系统 产品类别:高速数据采集卡 Product c ...

  4. cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题

    先贴一段百科的简介,让大家大致了解一下我要拆的是什么东西 GPIB(General-Purpose Interface Bus)-通用接口总线,大多数台式仪器是通过GPIB线以及GPIB接口与电脑相连 ...

  5. 盘活NI DAQmx数据采集卡—使用DAQWare for DAQmx工具软件

    DAQWare for DAQmx是一个用于NI DAQmx驱动的数据采集卡的数据采集软件,可以帮助用户在没有LabVIEW编程基础的情况下更好的使用NI数据采集卡. DAQWare for DAQm ...

  6. Labview软件、NI数据采集卡、汽车发动机数据采集学习总结(四)-------发动机上的传感器详解

    系列文章目录 第一章:汽车发动机数据采集上位机环境的搭建 第二章:Labview中的DAQ助手中器件详解 第三章:利用labview和NI数据采集卡采集汽车发动机中温度传感器的电压信号并处理 第四章: ...

  7. 用NI的数据采集卡实现简单电子测试之1——USB-6009简介

    本文从本人的163博客搬迁至此. 几年以来,一直担任学校"虚拟仪器"课程教师.以前上课都以介绍LabVIEW编程为主,硬件实验一直没有开展.这次借"西部高校实力提升工程& ...

  8. 用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台

    本文从本人的163博客搬迁至此. 前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能.本例包括基本数字IO电路及在LabVIEW中控制USB-600 ...

  9. 用NI的数据采集卡实现简单电子测试之4——半导体温度传感器

    本文从本人的163博客搬迁至此. 为了展示NImax(Measurement & Automation explorer)的强大配置功能,做了一个半导体温度传感器测试的示例. 一.半导体温度传 ...

最新文章

  1. 学好python能干嘛-学会Python后都能做什么?网友们的回答简直不要太厉害
  2. 构造函数中不应调用虚函数
  3. 实践作业3 (2017-12-4)
  4. 安装brew提示/usr/local/bin is not in your PATH.
  5. Hacking Team Flash 0day漏洞学习笔记
  6. 的引用_java中的强引用,软引用,弱引用,虚引用
  7. idea在创建类时在File Header中加入昵称和时间等
  8. 编码——隐匿在计算机软硬件背后的语言
  9. 【待填坑】LG_3239_[HNOI2015]亚瑟王
  10. 从JavaEye社区被迫改名说起(转载他人博客)
  11. reshape() 函数与 kron()函数的区别
  12. 懂得,是生命中最美的缘
  13. BetterScroll 2.0网络数据过慢,不能滚动问题
  14. 文字不换行、显示省略号
  15. 云集网上各种解决win10锁屏壁纸不能播放幻灯片的方法
  16. 阿里云服务器 云监控 API 调用示例
  17. 机房温度可视化:物联网下的数据中心环境运维新方式
  18. 2020年电商设计风格分析
  19. 成都物韵电子商务有限公司电商代运营公司如何打造爆款?
  20. Spring Security Oauth2:授权模式、简单模式 、密码模式 和 客户端模式

热门文章

  1. html em标签的作用,htmlem标签的作用是什么?em和i标签的区别
  2. 国际话题 | 探索知识产权通证化(上)
  3. lilo是什么意思_LILO LILO的意思解释|LILO是什么意思 -我酷百科
  4. HTTP,TCP,UDP常见端口对照表
  5. 开启一名非典型传桶工科生的博客之路
  6. tensorflow使用object detection API训练自己的数据(个人总结)
  7. 淘宝python培训班
  8. 近期读书计划(2018.9.11~)
  9. iPhone手机屏幕尺寸与倍图计算公式
  10. python 中无法导入日志包_python不能导入模块