justin566 发表于 2008-4-8 12:23:53

请问一下如何调用数据采集卡采集到的数据?

想处理采集卡采集的数据,可现在怎么把数据调用出来还没有搞明白,希望各位大虾能帮帮我

justin566 发表于 2008-4-10 10:30:32

就是我之前上传的那个程序,我现在已经可以实现数据采集的功能了,数据分析的思路也还算清晰,可是在调用采集到的数据方面还没有搞明白,这几天一之在看,也试了几种方法,可是都没有成功,希望版主能给指点一下~

cpubbs 发表于 2008-4-10 16:24:56

"调用采集到的数据方面"

兄弟指的是什么方面呢?有些不太清楚,不同的卡的使用方法不同,一般DLL是以一定的形式将采集到的数据返回的,比如以数组形式,您直接处理这个数组即可的!:handshake

justin566 发表于 2008-4-11 08:48:12

回复 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;
}
不知道是不是该用这个地方的程序?

justin566 发表于 2008-4-11 08:49:14

回复 3# 的帖子

我就是想把通道1、2的数据转化为可以处理的数组的,可是不知道该怎么转化....

cpubbs 发表于 2008-4-11 14:15:11

http://www.cpubbs.com/bbs/viewthread.php?tid=18024&extra=page%3D1

下载我们的卡的程序看看,兄弟,里面还有详细的文档,不同的卡是不同的,您的程序上面好像没有采集这一块的程序!它的DLL返回一定是一种形式,比如数组!您看我们的您就知道了!:handshake

justin566 发表于 2008-4-12 10:17:05

回复 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 编辑 ]

cpubbs 发表于 2008-4-12 14:17:08

我总感觉没有用到卡的采集的函数在里头似的!一定要先采集回来了才有数据,您这个好像是程序自己产生的?没有用到卡!:handshake

justin566 发表于 2008-4-12 14:21:22

回复 8# 的帖子

不会吧,但是我已经做过试验了,我用的信号发生器进行模拟采集,也可以实现啊~采集上没有问题啊~能不能麻烦您再帮我看下程序,看看是不是能按照我上面说的方法进行,我现在真的是没有什么更好的办法了~

justin566 发表于 2008-4-13 11:07:54

版主,前面那段程序应该是通道选择部分的,我现在感觉应该不对。


不知道是不是应该是这个呢?还请版主指教
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);
                           }
               }

justin566 发表于 2008-4-13 11:22:01

版主,前面那段程序应该是通道选择部分的,我现在感觉应该不对。


不知道是不是应该是这个呢?还请版主指教
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);
                           }
               }

justin566 发表于 2008-4-14 09:27:25

版主,请问我的程序是这样写的
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;
}
有什么问题啊 ?运行出不来结果,这是一段相关分析的程序

cpubbs 发表于 2008-4-14 13:37:19

pADBuffer这个应该是在其他地方的采集出来的结果,它应该有个定时器在采集,然后放这个全局变量里面的!所以您现在写的程序基本上都没有涉及到采集卡,应该有其他地方采集好了!

justin566 发表于 2008-4-14 15:58:09

斑竹您好,这是我编制的程序,能不能麻烦您给看下,看问题出在什么地方,不知道您能不能抽出点时间,谢谢您了

[ 本帖最后由 justin566 于 2008-4-14 16:04 编辑 ]

cpubbs 发表于 2008-4-15 00:10:07

看看再说,呵呵!:handshake
页: [1] 2
查看完整版本: 请问一下如何调用数据采集卡采集到的数据?