找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
楼主: justin566

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

[复制链接]
发表于 2008-4-15 00:13:03 | 显示全部楼层
编译没有问题呢兄弟?不过现在有个问题了,我读数之类的是不行了,因为没有卡,这方面涉及到卡的您只能慢慢调试才行!一些不相关的部分我们才能看得到!
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-15 09:09:08 | 显示全部楼层

回复 16# 的帖子

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

使用道具 举报

发表于 2008-4-15 09:40:56 | 显示全部楼层
具体是哪个回调函数呢?我这边关于采集的我这边都没有办法使用现在!
回复 顶

使用道具 举报

 楼主| 发表于 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[CurrentIndex]==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[Index] = Original-((((pADBuffer[CurrentIndex][Index*nChannelCount+TreatChannel])&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[Index] = ((((pADBuffer[CurrentIndex][Index])&0x0FFF)-0x800)*PerLsbVolt);
                           }
                           for(Index=0; Index<nChannelCount; Index++)
                           {
                               SetCtrlVal(ADHandle,Chanels[Index],Volt[Index]);
                           }
               }
              
           bNewSegmentData[CurrentIndex] = FALSE;      // 用户缓冲区标志位改变  
                   SetCtrlVal(ADHandle,AD_QQQ,CurrentIndex); //界面显示读数缓冲位置
                   SetCtrlVal(ADHandle,AD_PPP,ReadIndex);         //界面显示处理缓冲位置       
           CurrentIndex=(CurrentIndex+1) % MAX_SEGMENT; //用户缓冲区移位
         }  
    }            
        return 1;  
}

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

使用道具 举报

 楼主| 发表于 2008-4-15 12:38:56 | 显示全部楼层
int CVICALLBACK StartRans (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{   double wave1[2050],wave2[2050],wave3[4096],datapoints[2048];
            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[Index] = ((((pADBuffer[CurrentIndex][Index])&0x0FFF)-0x800)*PerLsbVolt);
                                  
                           }
                          
                           {j=0;
               wave1[j]=Volt[0];
               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;
}


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

使用道具 举报

 楼主| 发表于 2008-4-16 11:19:31 | 显示全部楼层
请问下版主,我采集到的信号在以图形方式显示的时候,是分成上下两个波形,幅值一样,但是相位不同,请问版主是怎么回事?
回复 顶

使用道具 举报

发表于 2008-4-16 21:02:08 | 显示全部楼层
原帖由 justin566 于 2008-4-16 11:19 发表
请问下版主,我采集到的信号在以图形方式显示的时候,是分成上下两个波形,幅值一样,但是相位不同,请问版主是怎么回事?


不太明白兄弟的意思呢?
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-18 08:53:16 | 显示全部楼层

回复 22# 的帖子

本来应该是一个通道采集,只显示一条曲线对吧?
但是我采集的时候是上下两条曲线。幅值应该是一样的,但是相位不同,这是怎么回事啊?
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-28 21:51 , Processed in 0.045022 second(s), 10 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表