1

有没有办法在 LabView中创建一个固定大小的数组?

我知道我可以对数组大小进行一些检查,然后在数组大小大于特定值时丢弃值。但是,我认为这是一个常见的问题,所以 LabView 中有一些内置函数来拥有一个固定大小的数组?

4

5 回答 5

5

据我所知,这是不可能的,除非他们在其最新版本之一中进行了更改,但我对此表示怀疑:这可能需要对核心数组代码进行认真的重写。

您可以获得的最接近的方法是编写自己的(可能是多态的)数组类,在其中封装一个实际数组,并以一定的大小初始化一次。对于其余部分,您的类仅公开通过索引获取/设置的方法。没有调整大小等。

或者,如果您在前面板上讨论控件数组等,您可以在 UI 级别通过隐藏索引控件并确保它不能以图形方式调整大小来执行此操作。或者,创建自定义控件并从中剥离大量数组功能也可能是可行的。

于 2013-05-23T08:37:42.627 回答
2

如果数组大小在设计时是固定的,那么您可能会考虑使用集群。甚至还有一个原语可以将数组转换为固定大小的簇,只要长度小于 257。(Array To Cluster 函数。)

如果您需要索引数组,还有一个原语可以采用另一种方式。

于 2015-11-30T21:56:13.110 回答
1

您可以做的一种实现是具有固定大小的队列。您可以使用预览队列和刷新队列来实现您想要的功能。但是,特定的自定义类可能是一个更好的主意。

于 2013-05-23T17:44:47.917 回答
0

在常规桌面 LabVIEW 中,固定大小的数组将是您必须根据您已经在这里得到的答案进行编码的东西。但是,在带有 cRIO 的 LabVIEW FPGA 中,所有数组都必须是固定大小的。

于 2013-05-31T01:36:13.600 回答
0

在调用WINAPI DLL调用库函数节点时,有时结构元素可能被正式定义为 BYTE[130]。那么,您如何绝对、肯定地确保您的集群有 130 字节的空间呢?

无论如何你都不能用数组来做,因为LabVIEW数组是指向一个结构的指针(第一个元素是长度),这意味着你插入的任何数组只会为指针分配足够的空间,4字节。

我想出的解决方法是插入一个包含 16 个 U64 和一个 U16 的集群,将它通过一个unflatten to string传递,你会发现它正好有 130 个字节长。

当集群从调用返回时,只需将扁平化的字符串结果类型转换为 U8 数组

于 2021-12-01T21:23:11.693 回答