cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

如何对多个LED灯同时进行控制?

[复制链接]
发表于 2007-4-16 17:48:11 | 显示全部楼层 |阅读模式
偶是初学CVI。请问:
如果在面板上放了多个LED灯。有没有办法对他们同时进行控制。而不是对每个灯单独控制。急急急
 楼主| 发表于 2007-4-17 12:59:42 | 显示全部楼层
补充一下问题:面板上有多个复选按钮和LED按钮。如何对他们获取数值,赋值。不用一个一个的写,而是用循环或数组的办法。
发表于 2007-4-17 22:55:54 | 显示全部楼层
老兄可以看我们的USB20多功能采集卡的例子,上面有用到了对多个LED灯进行控制的,是DIO这部分的!好运!
 楼主| 发表于 2007-4-18 16:19:16 | 显示全部楼层
首先感谢大哥那么晚给小弟回帖帮助。
   可是我说的问题不是那样的是程序设计方面的问题。
  比如在你的程序里设置8个等的时候用到了8条语句(如下):
   SetCtrlVal (panelHandle, PANEL_LED_08, cpubbs_DI_8);
   SetCtrlVal (panelHandle, PANEL_LED_07, cpubbs_DI_7);
   SetCtrlVal (panelHandle, PANEL_LED_06, cpubbs_DI_6);
   SetCtrlVal (panelHandle, PANEL_LED_05, cpubbs_DI_5);
   SetCtrlVal (panelHandle, PANEL_LED_04, cpubbs_DI_4);
   SetCtrlVal (panelHandle, PANEL_LED_03, cpubbs_DI_3);
   SetCtrlVal (panelHandle, PANEL_LED_02, cpubbs_DI_2);
   SetCtrlVal (panelHandle, PANEL_LED_01, cpubbs_DI_1);
   那如果有16个,或者32个。我们是不是要写16条或者32条这样的语句呢?
   我所说的问题就是这样的语句是不是有办法用用循环控制,或者其他什么办法来控制。
   关键所在就是HandleID"PANEL_LED_01"为整形CVI中是是怎么弄成的,
   希望大哥在给帮助一下下。我的QQ61960227 邮箱lidongnick@163.com
发表于 2007-4-18 22:31:38 | 显示全部楼层
这个灯应该是一个数字类型,我估计它们均有ID号,循环的时候加一个就可以,但必须清楚它们的范围,如果不连续就比较麻烦了,呵呵!
 楼主| 发表于 2007-4-19 11:52:19 | 显示全部楼层
在CVI中,打开这些函数的USER INTERFACE LIBRARY的时候我们所输入的面板
“IDPANEL_LED_08”是char[]类型的。而SetCtrlVal (panelHandle, PANEL_LED_08, cpubbs_DI_8);中的“PANEL_LED_08”是int型的。所以在CVI中是将“PANEL_LED_08”由char []类型转换成int型的。就是找不到是哪个 努力寻找中
 楼主| 发表于 2007-4-19 12:02:28 | 显示全部楼层

回复 #6 dongnick66900 的帖子

说错了。想说的是输入的IDPANEL_LED_08在是怎么变成int 型的
发表于 2007-4-19 21:48:11 | 显示全部楼层

回复:如何对多个LED灯同时进行控制?

int i;
int CtrlID[8];
CtrlID[0]=PANEL_LED_01;
CtrlID[1]=PANEL_LED_02;
...
...
CtrlID[7]=PANEL_LED_08;
for(i=0;i<8;i++)
{
SetCtrlVal(panelHandle,CtrlID,1);
}
发表于 2007-4-22 17:10:57 | 显示全部楼层

回复 #1 dongnick66900 的帖子

你这种情况我做项目时很常见,我的解决方法是:创建的时候按顺序创建,它们的id就会递减,这样之需要用一个数组就可以了,非常方便
 楼主| 发表于 2007-4-24 14:56:18 | 显示全部楼层

回复 #9 xiaoyuewanli 的帖子

这两天忙其他事情了没有来的急看,谢谢大哥们指点我都去试试。
这个ID是在做的文件生成的*.h的头文件里哪个ID号吗?要是连续的能不能给出点儿程序来做个参考啊,谢谢大哥了。
要是不行的话。是不是只能按你楼上的那种做法呢?
发表于 2007-4-26 20:19:06 | 显示全部楼层
cpubbs_DI_8, cpubbs_DI_7, cpubbs_DI_6。。。
看.h文件,这些都是INT类型的,每个cpubbs_DI_N对应唯一一个int数值
如果#define  cpubbs_DI_5           5
那么 SetCtrlVal (panelHandle, PANEL_LED_05, cpubbs_DI_5);可以改为
SetCtrlVal (panelHandle, PANEL_LED_05, 5);
忘了CVI的控件能不能分组了,VC中可以的
 楼主| 发表于 2007-5-14 15:52:43 | 显示全部楼层
谢谢楼上的大哥,你说的这个方法和xiaoyuewanli 用的应该是一样的吧。而所说的 xiaoyuewanli 所说的方法好像不太灵活。我用的方法和 huhuyo 说的方法一样。

请教大哥一下,您找到CVI中对一部分控件分组的方法了吗?我一直在找,还没有找到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-7 15:45 , Processed in 0.536803 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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