【问题标题】:How does labview distinguish between array size info and the array data?labview 如何区分数组大小信息和数组数据?
【发布时间】:2014-01-17 06:53:09
【问题描述】:

这并不是一个关于如何做某事的问题,更多的是为了满足我的好奇心。

根据this,Labview 将数组作为一系列 int32 存储在内存中,描述每个维度的大小,后跟实际数据。因此,例如,大小为 3x5 的二​​维数组将存储为

0: 3
4: 5
8: data starts here

现在假设您有一个 int32 数组。 labview 如何区分实际数据和数组大小信息?例如,在上面的示例中,labview 如何知道它是一个 3x5 数组而不是长度为 3 的一维数组,然后忽略其余元素?抱歉,如果我遗漏了一些明显的东西。

【问题讨论】:

    标签: labview


    【解决方案1】:

    如果您查看 LabVIEW 知识库文章 How LabVIEW stores data in memory,您会发现每种数据类型都存储有类型信息。对于数组,它首先存储每个维度的 I32,然后是 flattenend 数据。 实际的数据类型存储在它的type-descriptor 中,它由一个包含不同类型描述符的列表组成。对于一个数组,最小值是两个:

    1. 数组
    2. 数组中的数据

    数组的类型描述符是

    <nn> xx40 <k> <k dims> <k elems> <element type descriptor>

    其中 nn 是数据包的总大小
    xx40 是数组数据类型
    k是维度的总数

    对于包含的 I32,类型描述符是:

    0004 xx03 xx

    0004 是类型描述符的长度 03是I32类型标识符

    但是它在 LabVIEW 7 和 8 之间已经发生了变化。依赖类型描述符是你不应该自己搞砸的事情。让 LabVIEW 来处理。

    【讨论】:

      【解决方案2】:

      当对数据的引用在 LabVIEW 内部传递时,数据类型也总是传递。数据作为 void 指针传递,类型也随之传递。所以任何时候LabVIEW看到你的数组,它也会看到类型是int32s的二维数组。 (我在 National Instruments 的 LabVIEW 团队工作)

      【讨论】:

        猜你喜欢
        • 2016-10-10
        • 1970-01-01
        • 2019-10-16
        • 2022-01-24
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2011-12-20
        相关资源
        最近更新 更多