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