【问题标题】:Creating custom file formats according to specifications根据规范创建自定义文件格式
【发布时间】:2018-01-12 17:54:22
【问题描述】:

我有一个程序可以生成需要以特定.fsc 格式存储的数据。此格式用于流式细胞术实验(“计数液体中的细胞”)。该文件基本上是一个 ASCII 标头和二进制实验数据。文件标准的详细描述可以找到here

我是新的“异国情调”文件创建,所以我需要知道的是我如何创建这样的文件?,根据规范。

我对标头的 ASCII 字符和数据的二进制值的组合感到困惑。我如何将这两者结合起来。为此,我将使用 LabVIEW,我可以在其中创建仅包含文本的文件和二进制文件,其中所有内容都具有二进制值,但不能同时包含两者。还是像创建一个 .txt 文件一样简单,我在其中写入 ASCII 标头和转换后的数据二进制值,然后简单地从 .txt更改文件扩展名> 到 .fsc?

【问题讨论】:

    标签: labview file-format


    【解决方案1】:

    原则上,每个文件都是二进制文件,我们是否可以将其作为文本文件读取取决于字节是否以 ASCII 格式格式化,其中特定规则适用于表示 ASCII 值的二进制数。从二进制到 ASCII 字符的转换在任何ASCII table 中都很容易看到。

    在 FSC 格式的情况下,它规定标题应保存在 ASCII 标准(即纯文本)中。实际数据可以以多种格式存储,具体取决于您在标题中指定的内容。

    来自FSC Standard 3.3 Data Segment section这是数据格式的摘录:

    DATA 段包含三种模式之一的原始数据(列表、相关或不相关) 在主 TEXT 段中由 $MODE 关键字值描述。数据写入 四种允许格式之一的 DATA 段(二进制、浮点、双精度浮点 点或 ASCII)由 $DATATYPE 关键字值描述(另见 $DATATYPE 关键字)。

    所以数据可以是任何东西,包括 ASCII。

    要读取数据,您需要将标头读取为 ASCII 格式,解释标头信息并从标头之后的第一个字节以指定格式读取文件的其余部分。

    一个可能的捷径是您的仪器(或任何流量循环仪)是否有 labview 驱动程序并查看它们是否有可用于读取 FCS 文件的库

    【讨论】:

      【解决方案2】:

      为 D.J.Klomp 的好回答补充几点:

      • LabVIEW默认不支持Unicode,因此它将字符串视为始终为8位字节的字符序列。这意味着您可以使用字符串数据类型来处理任何字节序列数据,无论它实际上是否是“文本”。
      • 从快速浏览规范中我可以看出,您应该能够通过仔细使用 LabVIEW 的 Format into String 函数来创建所有文本格式的数据。请注意,这会将其输出附加到您连接到 initial string 输入的任何字符串中,因此您可以将它们链接在一起以在多个操作中构建您的数据。
      • 如果您需要使用二进制格式的数据(从您问题中的引用看来您可能不需要,除非此数据的目标不支持其他允许的类型?)您可以准备它在 U8 整数数组中,然后使用 Byte Array to String 将其转换为字符串。
      • 规范提到了每个段的 CRC 值,但建议其使用是可选的 - 如果您发送此文件的程序或仪器抱怨缺少 CRC,您应该能够在 NI 上找到一个 VI 来计算它网站。我不记得我过去使用过哪一个,但通过快速搜索,answer here 中的那个听起来应该可以工作。

      【讨论】:

        猜你喜欢
        • 2019-06-19
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        相关资源
        最近更新 更多