06-06-2019 02:37 AM
Hello,
I'm using the PXI-e 4302 card and I would like to disable the digital filtering of the channel I use. Unfortunately using the API DAQmxSetAIDigFltrEnable / DAQmxGetAIDigFltrEnable give always the Digital filter as enabled.
Here is my source code derivated from the NI Daq example:
int main(void)
{
int32 error=0;
TaskHandle taskHandle=0;
int32 read;
float64 data[1000];
char errBuff[2048]={'\0'};
/*********************************************/
// DAQmx Configure Code
/*********************************************/
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,1000));
bool32 bdata = 0;
float64 filter=0;
DAQmxErrChk(DAQmxGetAIDigFltrEnable(taskHandle, "Dev2/ai0", &bdata)); // result => bdata = 1
bdata = 0;
DAQmxErrChk(DAQmxSetAIDigFltrEnable(taskHandle, "Dev2/ai0", bdata));
DAQmxErrChk(DAQmxGetAIDigFltrEnable(taskHandle, "Dev2/ai0", &bdata)); // result => bdata = 1
/*********************************************/
// DAQmx Start Code
/*********************************************/
DAQmxErrChk (DAQmxStartTask(taskHandle));
/*********************************************/
// DAQmx Read Code
/*********************************************/
DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,&read,NULL));
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;
}