我正在开发一个小型 C# 程序,它使用LabVIEW提供的接口。而且我知道,使用lv.SetControlValue(name, value)
可以在前面板上设置一个变量。但就我而言,前面板上有几个集群。所以它让我很困惑如何在这些集群中设置变量。例如,有一个名为 的集群clusterA
,其中有一个名为 的变量valueA
,我尝试过这样的事情:
lv.SetControlValue("clusterA.valueA", 1);
但它完全不起作用。有人对这件事有一些经验吗?
非常感谢您的回复。我只是找到一种简单的方法来解决这个问题。例如,有一个名为 的簇ClusterA
,其中只有两个控制值,分别是:一个名为“IntA”的 int 值(默认值 IntA = 10)和一个名为StringA
(默认值StringA = "abc"
)的字符串值。在 C# 中,如果您调用该方法:
var clusterA = (Array) vi.GetControlValue("ClusterA");
你会得到一个 Array 看起来像: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
已更改。
LabVIEW 不会通过 ActiveX/.Net 接口(您使用的是哪一个?)直接公开集群中元素的 SetControlValue,
但是您可以像这样公开子集群元素引用:
如果它位于选项卡控件上,则获取正确的集群控件可能很困难。