用C语言给NI公司数据采集卡编程序进行电压数据采集
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公司数据采集卡编程序进行电压数据采集相关推荐
- 自制开源的串口数据采集卡,可作为LabVIEW数据采集卡和其他语言调用
MakerHub开源硬件系列文章之一:数据采集卡-数字输出 作者:everddm,微信公众号:MakerHub 这是一个开源的硬件+对应的开源软件+应用示例,可以商用,转载请注明出处 LOGO左边是L ...
- 数据采集卡 html报表,网页表格数据采集助手
网页表格数据采集助手是一款表格采集工具,可以为用户将网站上的表格以excel的格式储存到本地,当然也可以实用纯文本,这个能够根据个人需要进行设置. 小编精选:网站采集器 软件介绍 可以采集单页的规则的 ...
- 16bit 180MS/s 高速数据采集卡的性能介绍
16bit 180MS/s 高速数据采集卡 产品编号:HSDAQ9462 规 格:16bit 180MS/s 高速数据采集卡及专用高性能磁盘阵列服务器系统 产品类别:高速数据采集卡 Product c ...
- cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
先贴一段百科的简介,让大家大致了解一下我要拆的是什么东西 GPIB(General-Purpose Interface Bus)-通用接口总线,大多数台式仪器是通过GPIB线以及GPIB接口与电脑相连 ...
- 盘活NI DAQmx数据采集卡—使用DAQWare for DAQmx工具软件
DAQWare for DAQmx是一个用于NI DAQmx驱动的数据采集卡的数据采集软件,可以帮助用户在没有LabVIEW编程基础的情况下更好的使用NI数据采集卡. DAQWare for DAQm ...
- Labview软件、NI数据采集卡、汽车发动机数据采集学习总结(四)-------发动机上的传感器详解
系列文章目录 第一章:汽车发动机数据采集上位机环境的搭建 第二章:Labview中的DAQ助手中器件详解 第三章:利用labview和NI数据采集卡采集汽车发动机中温度传感器的电压信号并处理 第四章: ...
- 用NI的数据采集卡实现简单电子测试之1——USB-6009简介
本文从本人的163博客搬迁至此. 几年以来,一直担任学校"虚拟仪器"课程教师.以前上课都以介绍LabVIEW编程为主,硬件实验一直没有开展.这次借"西部高校实力提升工程& ...
- 用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台
本文从本人的163博客搬迁至此. 前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能.本例包括基本数字IO电路及在LabVIEW中控制USB-600 ...
- 用NI的数据采集卡实现简单电子测试之4——半导体温度传感器
本文从本人的163博客搬迁至此. 为了展示NImax(Measurement & Automation explorer)的强大配置功能,做了一个半导体温度传感器测试的示例. 一.半导体温度传 ...
最新文章
- 学好python能干嘛-学会Python后都能做什么?网友们的回答简直不要太厉害
- 构造函数中不应调用虚函数
- 实践作业3 (2017-12-4)
- 安装brew提示/usr/local/bin is not in your PATH.
- Hacking Team Flash 0day漏洞学习笔记
- 的引用_java中的强引用,软引用,弱引用,虚引用
- idea在创建类时在File Header中加入昵称和时间等
- 编码——隐匿在计算机软硬件背后的语言
- 【待填坑】LG_3239_[HNOI2015]亚瑟王
- 从JavaEye社区被迫改名说起(转载他人博客)
- reshape() 函数与 kron()函数的区别
- 懂得,是生命中最美的缘
- BetterScroll 2.0网络数据过慢,不能滚动问题
- 文字不换行、显示省略号
- 云集网上各种解决win10锁屏壁纸不能播放幻灯片的方法
- 阿里云服务器 云监控 API 调用示例
- 机房温度可视化:物联网下的数据中心环境运维新方式
- 2020年电商设计风格分析
- 成都物韵电子商务有限公司电商代运营公司如何打造爆款?
- Spring Security Oauth2:授权模式、简单模式 、密码模式 和 客户端模式
热门文章
- html em标签的作用,htmlem标签的作用是什么?em和i标签的区别
- 国际话题 | 探索知识产权通证化(上)
- lilo是什么意思_LILO LILO的意思解释|LILO是什么意思 -我酷百科
- HTTP,TCP,UDP常见端口对照表
- 开启一名非典型传桶工科生的博客之路
- tensorflow使用object detection API训练自己的数据(个人总结)
- 淘宝python培训班
- 近期读书计划(2018.9.11~)
- iPhone手机屏幕尺寸与倍图计算公式
- python 中无法导入日志包_python不能导入模块