Quantcast
Channel: Multifunction DAQ topics
Viewing all articles
Browse latest Browse all 6878

NI USB 6361 C programming

$
0
0

Hello. I have NI USB 6361 board and I want to write C program (I use Embarcadero C++ Builder) for acquiring analog data from this board (a0 channel). I connect signal generator to ao channel.

I read documentation and examples for my board. My program allows to acquire data, but I have one problem.

 

I can see waveform, but values of data are differs from data, that I acquired from board with Measurement Studio. I acquired data and export this to Excel, and find min and max values. Signal acquired with Measurement Studio have stable values for max and min. But my program give me different values and I dont know why. 

 

Can anybody expect my C code and help me? I attached my code below. Excuse me for my Enlgish and thanks for help.

 

 

	float64		max,min,value;
	int32		points,written,error;
	char        errBuff[2048]={'\0'};
	char		*channel;
	wchar_t		*ch;
	int 		i=0;
	TVarRec 	args[1] = {0};
	max = StrToFloat(EditAOMaxValue->Text);
	if (max>10.0) {
		max = 10.0;
		EditAOMaxValue->Text = "10,0";
	}
	min = StrToFloat(EditAOMinValue->Text);
	if (min<-10.0) {
		min = -10.0;
		EditAOMinValue->Text = "-10,0";
	}

	value = StrToFloat(EditAOValue->Text);
	if (value>10.0) value = 10.0;
	if (value<-10.0) value = -10.0;
	args[0] = value;
	EditAOValue->Text = Format("%1.1f",args,0);

	points = StrToInt(EditAOPoints->Text);
	for(;i<points;i++)
		data[i] = value;
		//5.0*(double)i/points;
	ch =  ("Dev1/"+ ComboBoxAOChan->Items->Strings[ComboBoxAOChan->ItemIndex]).t_str();
	channel = AnsiString(ch).c_str();

	// DAQmx Configure Code
	DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
	DAQmxErrChk (DAQmxCreateAOVoltageChan(taskHandle,channel,"",min,max,DAQmx_Val_Volts,NULL));
	DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",1000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,points));
	// DAQmx Write Code
	DAQmxErrChk (DAQmxWriteAnalogF64(taskHandle,points,0,10.0,DAQmx_Val_GroupByChannel,data,&written,NULL));
	// DAQmx Start Code
	DAQmxErrChk (DAQmxStartTask(taskHandle));
	// DAQmx Wait Code
	DAQmxErrChk (DAQmxWaitUntilTaskDone(taskHandle,10.0));
	args[0] = written;
	LblStatus->Caption = Sysutils::Format("Status: written %d points\n",args,0);
Error:
	if( taskHandle!=0 ) {
		// DAQmx Stop Code
		DAQmxStopTask(taskHandle);
		DAQmxClearTask(taskHandle);
	}
	if( DAQmxFailed(error) ) {
		DAQmxGetExtendedErrorInfo(errBuff,2048);
		args[0] = errBuff;
		ShowMessage(Sysutils::Format("DAQmx Error: %s\n",args,0));
	}

 

 

 

 


Viewing all articles
Browse latest Browse all 6878

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>