如何从C#在LabVIEW中设置集群中变量的值?

如何从C#在LabVIEW中设置集群中变量的值?,c#,labview,C#,Labview,我正在开发一个小型C#程序,它使用LabVIEW提供的接口。我知道,使用lv.SetControlValue(name,value)可以在前面板上设置一个变量。但在我的例子中,前面板上有几个集群。所以我很困惑如何在这些集群中设置变量。例如,有一个名为clusterA的集群,其中有一个名为valueA的变量,我尝试了以下方法: lv.SetControlValue("clusterA.valueA", 1); 但它完全不起作用。有人对此有经验吗?LabVIEW不会通过ActiveX/.Net接

我正在开发一个小型C#程序,它使用LabVIEW提供的接口。我知道,使用
lv.SetControlValue(name,value)
可以在前面板上设置一个变量。但在我的例子中,前面板上有几个集群。所以我很困惑如何在这些集群中设置变量。例如,有一个名为
clusterA
的集群,其中有一个名为
valueA
的变量,我尝试了以下方法:

lv.SetControlValue("clusterA.valueA", 1); 

但它完全不起作用。有人对此有经验吗?

LabVIEW不会通过ActiveX/.Net接口(您使用的是哪一个?)直接公开集群中某个元素的SetControlValue
但是,可以按如下方式公开子簇元素引用:

lv.SetControlValue("clusterA.valueA", 1); 


如果群集控件位于选项卡控件上,则很难获得正确的群集控件。

非常感谢您的回复。我只是找到一个简单的方法来解决这个问题。例如,有一个名为
ClusterA
的集群,其中只有两个控制值:一个名为“IntA”(默认值IntA=10)的int值和一个名为
StringA
(默认值
StringA=“abc”
)的字符串值。在C#中,如果调用该方法:

var clusterA = (Array) vi.GetControlValue("ClusterA");
您将得到如下数组:
clusterA={10,“abc”}然后,如果您想将IntA更改为123,只需执行以下操作:

clusterA.SetValue(123, 0); 
// 123 is the value, 0 is the index of IntA in the array clusterA
// after this clusterA = {123, "abc"}
在此之后,您只需使用以下命令将阵列返回到LabVIEW:

vi.SetControlValue("ClusterA", clusterA);

现在在LabVIEW中看到面板,
IntA
已更改。

Hey Ton,非常感谢您的回复,我找到了另一种解决此问题的方法,如下所示。谢谢