请问一下如何调用数据采集卡采集到的数据?
想处理采集卡采集的数据,可现在怎么把数据调用出来还没有搞明白,希望各位大虾能帮帮我 就是我之前上传的那个程序,我现在已经可以实现数据采集的功能了,数据分析的思路也还算清晰,可是在调用采集到的数据方面还没有搞明白,这几天一之在看,也试了几种方法,可是都没有成功,希望版主能给指点一下~ "调用采集到的数据方面"兄弟指的是什么方面呢?有些不太清楚,不同的卡的使用方法不同,一般DLL是以一定的形式将采集到的数据返回的,比如以数组形式,您直接处理这个数组即可的!:handshake
回复 3# 的帖子
版主,就是我现在想对采集到的数据进行处理,那必须得调用采集到的数据吧?我的意思就是这样的。您能不能再说的具体点,或者如果您有时间的话,能帮我写几句示范一下么?
如果我想处理1、2通道的数据,该怎么把他们转换为数组呢?还请版主指教
int CVICALLBACK Channel_1Callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ int a;
switch (event)
{
case EVENT_COMMIT:
GetCtrlAttribute(panel,ChannelSel_Channel_1,ATTR_CTRL_INDEX ,&a);
ADPara.ChannelArray=a;
break;
}
return 0;
}
int CVICALLBACK Channel_2Callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ int a;
switch (event)
{
case EVENT_COMMIT:
GetCtrlAttribute(panel,ChannelSel_Channel_2,ATTR_CTRL_INDEX ,&a);
ADPara.ChannelArray=a;
break;
}
return 0;
}
不知道是不是该用这个地方的程序?
回复 3# 的帖子
我就是想把通道1、2的数据转化为可以处理的数组的,可是不知道该怎么转化.... http://www.cpubbs.com/bbs/viewthread.php?tid=18024&extra=page%3D1下载我们的卡的程序看看,兄弟,里面还有详细的文档,不同的卡是不同的,您的程序上面好像没有采集这一块的程序!它的DLL返回一定是一种形式,比如数组!您看我们的您就知道了!:handshake
回复 6# 的帖子
斑竹您好,这个程序我看了,可是还是没有搞明白,您看我要是这样行不行,就是用到4楼那个地方的程序GetCtrlAttribute(panel,ChannelSel_Channel_1,ATTR_CTRL_INDEX ,&a);
for(i=0;i<2048;i++)
wave1i=a; (这个地方中括号打不出来)
然后用这个数组进行数据处理,您看对不对啊?我这样运行程序会出错
[ 本帖最后由 justin566 于 2008-4-12 10:28 编辑 ] 我总感觉没有用到卡的采集的函数在里头似的!一定要先采集回来了才有数据,您这个好像是程序自己产生的?没有用到卡!:handshake
回复 8# 的帖子
不会吧,但是我已经做过试验了,我用的信号发生器进行模拟采集,也可以实现啊~采集上没有问题啊~能不能麻烦您再帮我看下程序,看看是不是能按照我上面说的方法进行,我现在真的是没有什么更好的办法了~ 版主,前面那段程序应该是通道选择部分的,我现在感觉应该不对。不知道是不是应该是这个呢?还请版主指教
if (WaveOrDight==1)
{
for(Index=0; Index<nChannelCount; Index++) // 将采集的AD数据转换成电压值(mV)
{
// 将数据换算成电压值,然后由定时器绘制在窗口中
Volt = ((((pADBuffer)&0x0FFF)-0x800)*PerLsbVolt);
}
for(Index=0; Index<nChannelCount; Index++)
{
SetCtrlVal(ADHandle,Chanels,Volt);
}
} 版主,前面那段程序应该是通道选择部分的,我现在感觉应该不对。
不知道是不是应该是这个呢?还请版主指教
if (WaveOrDight==1)
{
for(Index=0; Index<nChannelCount; Index++) // 将采集的AD数据转换成电压值(mV)
{
// 将数据换算成电压值,然后由定时器绘制在窗口中
Volt = ((((pADBuffer)&0x0FFF)-0x800)*PerLsbVolt);
}
for(Index=0; Index<nChannelCount; Index++)
{
SetCtrlVal(ADHandle,Chanels,Volt);
}
} 版主,请问我的程序是这样写的
int CVICALLBACK StartRans (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ double wave1,wave2,wave3;
int j;
int a;
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute(ranspanelHandle,RANSPANEL_STOPRANS,ATTR_DIMMED,0);
SetCtrlAttribute(ranspanelHandle,RANSPANEL_STARTRANS,ATTR_DIMMED,1);
for(Index=0; Index<nChannelCount; Index++) // 将采集的AD数据转换成电压值(mV)
{
// 将数据换算成电压值,然后由定时器绘制在窗口中
Volt = ((((pADBuffer)&0x0FFF)-0x800)*PerLsbVolt);
}
{j=0;
wave1=Volt;
j++;
if (j>=2048) j=0;}
Correlate(wave1,2048,wave1,2048,wave3);
DeleteGraphPlot(ranspanelHandle,RANSPANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);
PlotY(ranspanelHandle,RANSPANEL_GRAPH,wave3,4095,VAL_DOUBLE,VAL_THIN_LINE,
VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);
break;
}
return 0;
}
有什么问题啊 ?运行出不来结果,这是一段相关分析的程序 pADBuffer这个应该是在其他地方的采集出来的结果,它应该有个定时器在采集,然后放这个全局变量里面的!所以您现在写的程序基本上都没有涉及到采集卡,应该有其他地方采集好了! 斑竹您好,这是我编制的程序,能不能麻烦您给看下,看问题出在什么地方,不知道您能不能抽出点时间,谢谢您了
[ 本帖最后由 justin566 于 2008-4-14 16:04 编辑 ] 看看再说,呵呵!:handshake
页:
[1]
2