Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

buffered counter output fails on x series

I am using x series multifunction DAQ (NI 6368). I would like to do counter output with buffered sample clock timing. However, it keeps throwing this error:

----

DAQmx Error: Generation cannot be started, because the selected buffer size is too small.

Increase the buffer size.
Conflicting Property
Property: DAQmx_Buf_Output_BufSize
Corresponding Value: 0
Minimum Supported Value: 2

Channel Name: Dev1/ctr0

Task Name: _unnamedTask<0>

Status Code: -200609

What could be wrong here?

----

I get this error either from my program, or even from the DAQmx C example code. For reference, here is the code in DAQmx example that throws the bufsize error:

"C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples\DAQmx ANSI C\Counter\Generate Pulse\Dig Pulse Train-Cont-Buff-Ext Clk\DigPulseTrain-Cont-Buff-ExtClk.c"

#include <stdio.h>
#include <NIDAQmx.h>

#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else

int32 CVICALLBACK DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData);

#define DUTY_MIN	0.50
#define DUTY_MAX	0.80

int main(void)
{
	int         error=0;
	TaskHandle  taskHandle=0;
	int32       i;
	float64     dataFreq[1000],dataDC[1000],dutyStep;
	char        errBuff[2048]={'\0'};

	// Generating data for duty cycle from 0.50 to 0.80 in 1000 steps
	dutyStep = (DUTY_MAX-DUTY_MIN)/1000;
	for(i=0;i<1000;++i) {
		dataFreq[i] = 1000.0;
		dataDC[i] = DUTY_MIN + dutyStep*i;
	}

	/*********************************************/
	// DAQmx Configure Code
	/*********************************************/
	DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
	DAQmxErrChk (DAQmxCreateCOPulseChanFreq(taskHandle,"Dev1/ctr0","",DAQmx_Val_Hz,DAQmx_Val_Low,0.0,1.00,0.50));
	DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"/Dev1/PFI0",200,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000));
	DAQmxErrChk (DAQmxWriteCtrFreq(taskHandle,1000,0,10.0,DAQmx_Val_GroupByChannel,dataFreq,dataDC,NULL,NULL));

	DAQmxErrChk (DAQmxRegisterDoneEvent(taskHandle,0,DoneCallback,NULL));

	/*********************************************/
	// DAQmx Start Code
	/*********************************************/
	DAQmxErrChk (DAQmxStartTask(taskHandle));

	printf("Generating pulse train. Press Enter to interrupt\n");
	getchar();

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;
}

int32 CVICALLBACK DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData)
{
	int32   error=0;
	char    errBuff[2048]={'\0'};

	// Check to see if an error stopped the task.
	DAQmxErrChk (status);

Error:
	if( DAQmxFailed(error) ) {
	  DAQmxGetExtendedErrorInfo(errBuff,2048);
	  DAQmxClearTask(taskHandle);
	  printf("DAQmx Error: %s\n",errBuff);
	}
	return 0;
}
0 Kudos
Message 1 of 2
(2,161 Views)

I Googled that error code and found this article:

 

Error -200609 When Using NI-DAQmx Output Tasks

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P7jnSAC

 

Down at the bottom it talks about the output buffer size which sounds like it applies to what you're seeing. 

0 Kudos
Message 2 of 2
(2,122 Views)