Hello,
I am trying to re-write an applicatin from Traditional to DAQmx library functions. This is my first attempt to play with the DAQmx library.
I have 2 DAC and 8 ADC (differential) channels. I am also setting a trigger(Square wave: Hi to Low). Consequtive write and read operations always fail. Read operation gives a TimeOut. I have noticed that if I do NOT setup the trigger, I am able to write and read the proper values.
Is there any document that compares the Traditional DAQ functions to the NIDAQmx library functions?
Library and RTE: NIDAQmx Library with CVI 7.1
My Code:
DAQmxErrChk (DAQmxCreateTask ("", &DAC_taskHandle));
DAQmxErrChk (DAQmxCreateAOVoltageChan (DAC_taskHandle, "Dev1/ao0:1", "", 0, 10.0, DAQmx_Val_Volts, ""));
// ADC
DAQmxErrChk (DAQmxCreateTask("",&ADC_taskHandle));
DAQmxErrChk (DAQmxCreateAIVoltageChan (ADC_taskHandle, "Dev1/ai0:7", "", DAQmx_Val_Diff, 0, 10, DAQmx_Val_Volts, NULL));
// Trigger Source PFI0 and PFI1 are connected in a loop
DAQmxErrChk (DAQmxCreateTask ("", &Trig_taskHandle));
DAQmxErrChk (DAQmxCreateDIChan (Trig_taskHandle, "/Dev1/PFI1","",DAQmx_Val_ChanForAllLines));
// DAC
DAQmxErrChk (DAQmxCfgSampClkTiming (DAC_taskHandle, "", DAC_rate, DAQmx_Val_Falling, DAQmx_Val_ContSamps,samplesPerChan));
DAQmxErrChk (DAQmxCfgDigEdgeStartTrig (DAC_taskHandle, "/Dev1/PFI0", DAQmx_Val_Falling));
DAQmxErrChk (DAQmxCfgSampClkTiming (ADC_taskHandle, "", ADC_rate, DAQmx_Val_Falling, DAQmx_Val_ContSamps, 1000));
DAQmxErrChk (DAQmxCfgDigEdgeStartTrig (ADC_taskHandle, "/Dev1/PFI0", DAQmx_Val_Falling));
// To generate the square wave for the Trigger
for(i=1;i>=0;i--)
{
if(i==1)
singleBit_array[0]=1.0;
else
singleBit_array[0]=0.0;
DAQmxErrChk (DAQmxCreateTask ("", &taskHandle));
DAQmxErrChk (DAQmxCreateDOChan (taskHandle, "/Dev1/PFI0", "", DAQmx_Val_ChanForAllLines));
DAQmxErrChk (DAQmxStartTask (taskHandle));
DAQmxErrChk (DAQmxWriteDigitalLines(taskHandle,1,0,10.0,DAQmx_Val_GroupByChannel,singleBit_array,NULL,NULL));
DAQmxErrChk (DAQmxStopTask (taskHandle));
}
Copy1D (outputarrayy, INDENTNUMDACPTS, DAC_Data);
DAQmxErrChk (DAQmxStartTask (DAC_taskHandle));
DAQmxErrChk (DAQmxWriteAnalogF64 (DAC_taskHandle,1, 0, 10.0, DAQmx_Val_GroupByChannel, DAC_Data, &written, NULL));
DAQmxErrChk (DAQmxStopTask (DAC_taskHandle));
// ADC
DAQmxErrChk (DAQmxStartTask (ADC_taskHandle));
DAQmxErrChk (DAQmxReadAnalogF64 (ADC_taskHandle, 1, 10, DAQmx_Val_GroupByChannel, ADC_Data, 8, &read,NULL));
DAQmxErrChk (DAQmxStopTask (ADC_taskHandle));
Any suggestions would be helpful.
regards,
Dwivedi