cpubbs 发表于 2008-4-15 00:13:03

编译没有问题呢兄弟?不过现在有个问题了,我读数之类的是不行了,因为没有卡,这方面涉及到卡的您只能慢慢调试才行!一些不相关的部分我们才能看得到!

justin566 发表于 2008-4-15 09:09:08

回复 16# 的帖子

编译确实是可以通过的,但是我处理数据时显示图像没有变化,好像是还没有调用到采集的数据,我是想让您看下我编的程序,在调用采集到的数据时,那地方的程序看看有没有问题?谢谢您了

cpubbs 发表于 2008-4-15 09:40:56

具体是哪个回调函数呢?我这边关于采集的我这边都没有办法使用现在!

justin566 发表于 2008-4-15 12:35:32

UINT ProcessDataThread(PVOID pPara)
{   
    CurrentIndex=0;
    nChannelCount = ADPara.ChannelCount ;
        VoltDataSize= (int)(ReadSizeWords/ nChannelCount);
        PerHeight=(long)(20000/ nChannelCount);
        Original =(long) (PerHeight / 2);
        PerPixelLsb = 4096.0 / PerHeight;

        PerLsbVolt=10000.0/4096;

    //SinePattern (1024, 1.0, 0.0, 1.0,DATA );   
    while(bDeviceRun)// 循环采集AD数据
    {
       WaitForSingleObject(ReadSysEvent,INFINITE);
      
          
       if(bNewSegmentData==TRUE)
                {
               
               if(WaveOrDight==0)
                  {
                      DeleteGraphPlot (ADHandle, AD_GRAPH, -1, VAL_IMMEDIATE_DRAW); // 从绘图窗口中删除上一次的图象
                     
            Original = PerHeight / 2;
                      for(TreatChannel=0;TreatChannel<nChannelCount;TreatChannel++)
                     {
                         for(Index=0; Index<ReadSizeWords; Index++)   // 将采集的AD数据转换成电压值(mV)
                             {
                           
                             Volt = Original-((((pADBuffer)&0x0FFF)-0x800) /PerPixelLsb);
                             }
                                       
                                       
                           PlotWaveform (ADHandle ,AD_GRAPH ,Volt ,VoltDataSize , VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0, VAL_THIN_LINE,
                           VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_BLACK);
                       
               RefreshGraph(ADHandle, AD_GRAPH);
               Original = Original + PerHeight;
               }
               
         }
         
               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);
                           }
               }
              
         bNewSegmentData = FALSE;      // 用户缓冲区标志位改变
                   SetCtrlVal(ADHandle,AD_QQQ,CurrentIndex); //界面显示读数缓冲位置
                   SetCtrlVal(ADHandle,AD_PPP,ReadIndex);       //界面显示处理缓冲位置       
         CurrentIndex=(CurrentIndex+1) % MAX_SEGMENT; //用户缓冲区移位
         }
    }          
        return 1;
}

这个应该是使数据在主面板上以数字和图形两种方式显示的程序

justin566 发表于 2008-4-15 12:38:56

int CVICALLBACK StartRans (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{   double wave1,wave2,wave3,datapoints;
          int j;
                int a;
                double phase;
               
               
        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;
}


这是我设置的相关分析的回调函数,不知道像这样调用前面采集的数据有没有问题(应该是肯定有问题),根本没有结果显示,希望版主您看下,应该怎么修改才可以,谢谢您

justin566 发表于 2008-4-16 11:19:31

请问下版主,我采集到的信号在以图形方式显示的时候,是分成上下两个波形,幅值一样,但是相位不同,请问版主是怎么回事?

cpubbs 发表于 2008-4-16 21:02:08

原帖由 justin566 于 2008-4-16 11:19 发表 http://www.cpubbs.com/bbs/images/common/back.gif
请问下版主,我采集到的信号在以图形方式显示的时候,是分成上下两个波形,幅值一样,但是相位不同,请问版主是怎么回事?

不太明白兄弟的意思呢?

justin566 发表于 2008-4-18 08:53:16

回复 22# 的帖子

本来应该是一个通道采集,只显示一条曲线对吧?
但是我采集的时候是上下两条曲线。幅值应该是一样的,但是相位不同,这是怎么回事啊?
页: 1 [2]
查看完整版本: 请问一下如何调用数据采集卡采集到的数据?