NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

用cvi多路(N路)同时采集的时候,存储数组data[]该怎么定义,是N维?

已解决!
转到解答

如题,采集到的数据是怎么存的?

 

如果是多路同时输出,又该是怎么设置输出的数组,求教各位

0 项奖励
1 条消息(共 7 条)
3,853 次查看

循环读写吧

0 项奖励
2 条消息(共 7 条)
3,849 次查看

输入输出的定义是一样的。

多路的话,不是N维,而是2维数组,N行,M列(M为采样点数)

0 项奖励
3 条消息(共 7 条)
3,843 次查看

谢谢楼上解答,还不是特别明白,等下回去试下

 

如果说我要采集4路,每路读2个数,定义data时,是定义成data[2][4]?还是data[8],cvi再自己分配?

 

输出的时候,我想同时输出2路,又怎么实现?

0 项奖励
4 条消息(共 7 条)
3,837 次查看
解答
已被主题作者 天空的城 接受

你可以定义为data[8], 但推荐你用 float *data=NULL, 来定义,给一个例子你就明白了

 

uInt32      sampsPerChan;

int32       numRead;

uInt32      numChannels;

float64     *data=NULL;

 

DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,sampsPerChan,10.0,DAQmx_Val_GroupByChannel,data,sampsPerChan*numChannels,&numRead,NULL));
if( numRead>0 )
for(i=0;i<numChannels;i++)
PlotY(panel,PANEL_GRAPH,&(data[i*numRead]),numRead,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,plotColors[i%12]);

 

DAQmxReadAnalogF64(taskHandle,sampsPerChan,10.0,DAQmx_Val_GroupByChannel,data,sampsPerChan*numChannels,&numRead,NULL);
if( numRead>0 )

  for(i=0;i<numChannels;i++)

  PlotY(panel,PANEL_GRAPH,&(data[i*numRead]),numRead,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,plotColors[i%12]);

0 项奖励
5 条消息(共 7 条)
3,830 次查看

我用的 “float64  *data=NULL”老是出问题,还是用的data[8],明白了,谢谢啦

输出应该是同样的道理吧,我用data[2]写两个AO,测着觉得是可以的。

0 项奖励
6 条消息(共 7 条)
3,811 次查看

忘记说明

float *data = NULL;

data =(float *) malloc(N); //这句不能省,要不然没有内存空间。但这样的话效果和DATA[8]是一样的。

0 项奖励
7 条消息(共 7 条)
3,798 次查看