cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

如何在在stipchart控件中显示多条曲线

[复制链接]
发表于 2008-10-16 14:09:55 | 显示全部楼层 |阅读模式
我是新手,头一次用labwindows不是很懂,请大家不吝赐教!
我用NI的USB6008做数据采集,用的是DAQ助手,有5个通道,2个电压,3个电流,不知道怎么把它们显示到一个stipchart控件中,或者分开显示到2个stipchart控件中?
我用了PlotStripChart (int Panel_Handle, int Control_ID, void *Y_Array, int Number_of_Points, int Starting_Index, int Skip_Count, int Y_Data_Type);这个函数,但是不明白int Number_of_Points是什么意思,应该怎么用?
发表于 2008-10-16 14:56:02 | 显示全部楼层
如果显示五条曲线,定义:
double data[5];
data[0]=曲线1的一个点;
data[1]=曲线2的一个点;
。。。
PlotStripChart(panelHandle,PANEL_STRIPCHART,data,5,0,0,VAL_DOUBLE);

Number_of_Points:表示要绘制几个点,五条曲线则要同时绘制5个点(因为stripchart默认每次绘制一个点)。
 楼主| 发表于 2008-10-16 15:30:48 | 显示全部楼层

回复 2# netcreature 的帖子

首先谢谢斑竹,我有些明白了。
还有一个问题,我在用daq助手时,可不可以用一个函数DAQmxReadAnalogF64来同时读入5个通道的数据,然后用一个PlotStripChart吧5条曲线显示出来,我的部分源程序,帮忙看一下对不?

int CVICALLBACK sample (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{
        switch (event)
        {
                case EVENT_COMMIT:
                       
                        //如果NI-DAQmx任务不存在,则执行以下代码
                        if (taskHandle <= 0)
                        {
                                //在工程中创建一个NI-DAQmx任务句柄
                                CreateDAQTaskInProject(&taskHandle);
                               
                                //打开定时器
                                SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 1);
                        }

                        break;
        }
        return 0;
}

int CVICALLBACK timer (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{
        int32 samplesread;
        float64 readarray[5000];
       
        switch (event)
        {
                case EVENT_TIMER_TICK:  
                       
                        //进行数据采集
                DAQmxReadAnalogF64 (taskHandle, DAQmx_Val_Auto, 10.0, DAQmx_Val_GroupByChannel, readarray, 5*1000, &samplesread, 0);       
                //将采集到的数据绘制在Strip Chart控件上
               
         if( samplesread>0 )        
               
               
                        PlotStripChart (panelHandle, PANEL_STRIPCHART, readarray, 5*samplesread, 0, 0, VAL_DOUBLE);
                       
                       
                       
                        break;
        }
        return 0;
 楼主| 发表于 2008-10-16 15:42:02 | 显示全部楼层

回复 2# netcreature 的帖子

我用的是NI的USB6008的DAQ助手
发表于 2008-10-17 08:43:52 | 显示全部楼层
第一、你这样的程序肯定绘制不出五条曲线,stripchart控件是逐点绘制,readarray[5000]这样定义则表示要绘制5000条曲线!5*samplesread?!如果要绘制五条曲线,Number_of_Points就是5!
第二、我没用过NI USB6008的DAQ助手,你最好将DAQmxReadAnalogF64()函数原型即参数说明发上来。
 楼主| 发表于 2008-10-18 22:59:26 | 显示全部楼层

回复 5# netcreature 的帖子

谢谢版主!

Reads multiple floating-point samples from a task that contains one or more analog input channels.
原型

int32 DAQmxReadAnalogF64 (TaskHandle Task_Handle, int32 Samples_Per_Channel, float64 Timeout, bool32 Fill_Mode, float64 Read_Array[], uInt32 Array_Size_In_Samples, int32 *Samples_Per_Channel_Read, bool32 *Reserved);
发表于 2009-5-19 16:20:11 | 显示全部楼层
发表于 2009-5-19 19:35:17 | 显示全部楼层
发表于 2009-5-19 21:53:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-20 07:25 , Processed in 1.189630 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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