dongnick66900 发表于 2007-4-16 17:48:11

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

偶是初学CVI。请问:
如果在面板上放了多个LED灯。有没有办法对他们同时进行控制。而不是对每个灯单独控制。急急急

dongnick66900 发表于 2007-4-17 12:59:42

补充一下问题:面板上有多个复选按钮和LED按钮。如何对他们获取数值,赋值。不用一个一个的写,而是用循环或数组的办法。

cpubbs 发表于 2007-4-17 22:55:54

老兄可以看我们的USB20多功能采集卡的例子,上面有用到了对多个LED灯进行控制的,是DIO这部分的!好运!

dongnick66900 发表于 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

cpubbs 发表于 2007-4-18 22:31:38

这个灯应该是一个数字类型,我估计它们均有ID号,循环的时候加一个就可以,但必须清楚它们的范围,如果不连续就比较麻烦了,呵呵!

dongnick66900 发表于 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型的。就是找不到是哪个:L 努力寻找中:L

dongnick66900 发表于 2007-4-19 12:02:28

回复 #6 dongnick66900 的帖子

说错了。想说的是输入的IDPANEL_LED_08在是怎么变成int 型的

huhuyo 发表于 2007-4-19 21:48:11

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

int i;
int CtrlID;
CtrlID=PANEL_LED_01;
CtrlID=PANEL_LED_02;
...
...
CtrlID=PANEL_LED_08;
for(i=0;i<8;i++)
{
SetCtrlVal(panelHandle,CtrlID,1);
}

xiaoyuewanli 发表于 2007-4-22 17:10:57

回复 #1 dongnick66900 的帖子

你这种情况我做项目时很常见,我的解决方法是:创建的时候按顺序创建,它们的id就会递减,这样之需要用一个数组就可以了,非常方便

dongnick66900 发表于 2007-4-24 14:56:18

回复 #9 xiaoyuewanli 的帖子

这两天忙其他事情了没有来的急看,谢谢大哥们指点我都去试试。
这个ID是在做的文件生成的*.h的头文件里哪个ID号吗?要是连续的能不能给出点儿程序来做个参考啊,谢谢大哥了。
要是不行的话。是不是只能按你楼上的那种做法呢?

game216 发表于 2007-4-26 20:19:06

cpubbs_DI_8, cpubbs_DI_7, cpubbs_DI_6。。。
看.h文件,这些都是INT类型的,每个cpubbs_DI_N对应唯一一个int数值
如果#definecpubbs_DI_5         5
那么 SetCtrlVal (panelHandle, PANEL_LED_05, cpubbs_DI_5);可以改为
SetCtrlVal (panelHandle, PANEL_LED_05, 5);
忘了CVI的控件能不能分组了,VC中可以的

dongnick66900 发表于 2007-5-14 15:52:43

谢谢楼上的大哥,你说的这个方法和xiaoyuewanli 用的应该是一样的吧。而所说的 xiaoyuewanli 所说的方法好像不太灵活。我用的方法和 huhuyo 说的方法一样。

请教大哥一下,您找到CVI中对一部分控件分组的方法了吗?我一直在找,还没有找到。
页: [1]
查看完整版本: 如何对多个LED灯同时进行控制?