⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daq.cpp

📁 NI DAQ card 6221(37pins)的windows驱动程序,实现对数据采集卡的io控制,在工程领域很有用.
💻 CPP
字号:
// DAQ.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "NIDAQmx.h"
#include "DAQ.h"
#pragma comment(lib, "NIDAQmx.lib")
#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

/////////////////digital line output//////////////////////////////////////////////////////////////////////////////

int DigitalLineOut(const char line[128], uInt8 data[8])
{
	int32		error=0;
	TaskHandle	taskHandle=0;

	DAQmxErrChk (error=DAQmxCreateTask("Digital line output",&taskHandle));
	DAQmxErrChk (error=DAQmxCreateDOChan(taskHandle, line, "", DAQmx_Val_ChanForAllLines));
	DAQmxErrChk (error=DAQmxStartTask(taskHandle));
	DAQmxErrChk (error=DAQmxWriteDigitalLines(taskHandle, 1, 1, 10.0, DAQmx_Val_GroupByChannel, data, NULL, NULL));
	DAQmxStopTask(taskHandle);
	DAQmxClearTask(taskHandle);
	return 0;

Error:
	if( taskHandle!=0 )
	{
		DAQmxStopTask(taskHandle);
		DAQmxClearTask(taskHandle);
	}
	return -1;
}

///////////////////////////digital line input//////////////////////////////////////////////////////////////////////

int DigitalLineIn(const char *line, uInt8 *data)
{
	int32		error=0;
	TaskHandle	taskHandle=0;
	memset(data,0,sizeof(data));
	int32		read,bytesPerSamp;

	DAQmxErrChk (error=DAQmxCreateTask("Digital line input",&taskHandle));
	DAQmxErrChk (error=DAQmxCreateDIChan(taskHandle, line, "", DAQmx_Val_ChanForAllLines));
	DAQmxErrChk (error=DAQmxStartTask(taskHandle));
	DAQmxErrChk (error=DAQmxReadDigitalLines(taskHandle,1,10.0,DAQmx_Val_GroupByChannel,data,8,&read,&bytesPerSamp,NULL));
	DAQmxStopTask(taskHandle);
	DAQmxClearTask(taskHandle);
	return 0;

Error:
	if( taskHandle!=0 )
	{
		DAQmxStopTask(taskHandle);
		DAQmxClearTask(taskHandle);
	}
	return -1;
}

//////////////////////analog input//////////////////////////////////////////////////////////////////////////////////

int AnalogIn(const char line[128],float64 *data)
{
	int32       error=0;
	TaskHandle  taskHandle=0;

	DAQmxErrChk (error=DAQmxCreateTask("Analog input",&taskHandle));
	DAQmxErrChk (error=DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0","",DAQmx_Val_RSE,-5.0,5.0,DAQmx_Val_Volts,NULL));
//	DAQmxErrChk (error=DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,1));
	DAQmxErrChk (error=DAQmxStartTask(taskHandle));
	DAQmxErrChk (error=DAQmxReadAnalogScalarF64(taskHandle, 10.0,data, NULL));
	DAQmxStopTask(taskHandle);
	DAQmxClearTask(taskHandle);
	return 0;

Error:
	if( taskHandle!=0 )
	{
		DAQmxStopTask(taskHandle);
		DAQmxClearTask(taskHandle);
	}
	return -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -