我昨天可能没描述明白我的问题.我的问题是这样的
1.有个 循环,每10ms循环一次,我在一次循环中要发2个模拟量出 去,采集4个模拟量进来
2.6个量要同时产生
3.我的程序如下:
DAQmxCreateTask ("", &gTaskHandle);//创建采样任务
DAQmxCreateAIVoltageChan (gTaskHandle, "Dev1/ai0", "", DAQmx_Val_Cfg_Default, -10.0, 10.0, DAQmx_Val_Volts, NULL);//设置采样通道
DAQmxCfgSampClkTiming(gTaskHandle,"",rate,DAQmx_Val_Rising,DAQmx_Val_ContSamps,sampsPerChan);//设置采样频率(我可能没设明白)
DAQmxGetTaskAttribute(gTaskHandle,DAQmx_Task_NumChans,&gNumChannels);
if( (gData=(float64*)malloc(sampsPerChan*gNumChannels*sizeof(float64)))==NULL ) {
MessagePopup("Error","Not enough memory");
}
rk(n,h_step,0);
i=0;
ii=0;
do
{
for(j=0;j<100;j++){
PlotOut[j]=y[j];
PlotOut[100]=caijiin;
}
DAQmxReadAnalogScalarF64 (gTaskHandle, 10, caijiin, 0);//我采集的一个通道的数想放到caijiin数组中寸下来,也是在10ms的循环里
// DAQmxReadAnalogF64(gTaskHandle,1,10.0,DAQmx_Val_GroupByScanNumber,gData,1*gNumChannels,&numRead,NULL);
plotvalue=y[11];
// plotvalueZ=caijiin;//
+
rk(n,h_step,1);
plotx=y[10];
// plottx=y[28];
// plottz=y[30];
++i;
NN=i;
}
}
while(y[10]<=y[28] && y[11]>0);
CycCount=i;
if (FileSelectPopup (proj_dir, "*.dat", "*.dat","Name of File to Save", VAL_OK_BUTTON, 0, 1, 1,0, file_name) > 0)
{
ArrayToFile(file_name,PlotOut, VAL_FLOAT,100*CycCount,100,VAL_DATA_MULTIPLEXED,
VAL_GROUPS_AS_COLUMNS,VAL_SEP_BY_TAB,30,VAL_ASCII,VAL_TRUNCATE);
}
break;
但总采集不出数据,您帮我看看.我第一次用这语言做采集计算.不明白.感谢回答. |