存储
(还在编写中...)
文本文件和二进制数据文件
测试程序中采集到的数据常常需要被保存到磁盘上以供将来查阅。
要保存文件,首先得考虑是保存成文本文件还是二进制数据文件。这两种文件的主要区别在于文本文件可以直接打开供人阅读,但效率较低,占用较大的存储空间;二进制数据文件人眼无法直接看懂,但效率高。所以对于那些数据量不大但常常需要打开观看的文件,比如程序的配置信息,测试的结论等数据可以以文本文件方式保存。而数据量较大的文件,比如采集到的信号,就应该使用二进制文件保存。
不论采用哪种方式,都应该首先考虑保存为 LabVIEW 已经支持的文件格式,而不是自己再重新设计新的文件格式。这样可以保证文件存储的合理性,也能加快开发速度。LabVIEW 对各种文件的支持可以在函数选板 "编程 -> 文件 I/O" 中找到。
文本文件
LabVIEW 支持的最常用的两种文件格式是 INI 文件格式和 XML 文件格式。INI 文件的格式非常简单,通常用来保存配置信息。INI 文件每一行是一个条目,每个条目由一个名称和一个值组成。INI 文件最大的优势就是使用简单。一般一个程序可能会有几十至几百条配置信息需要保存,比如界面的位置、用户选择的默认值等。这些信息都可以使用 INI 文件来保存。工作在 Windows 系统下的应用程序可能倾向于把这些配置信息保存在注册表中。但是考虑到跨平台的需要,使用 INI 文件的移植性更好一些。
INI 不适合用来保存复杂的信息。比如保存一组具有多个层次关系的数据:某公司有多个工厂,每个部门有多条生产线,每条生产线有多个产品,每个产品又有序列号,生产日期等多种信息。保存这类层次结构较多的数据可以使用 XML 文件格式。XML 文件的缺点是使用起来较为复杂。
现在的 LabVIEW 已经原生内置了完善的 JSON 支持。JSON 同样能完美表达复杂的嵌套和层次结构,但它的体积更小、可读性更好,并且在 LabVIEW 中只需要一个“平化至 JSON (Flatten to JSON)”节点即可将复杂的簇或数组直接转换为字符串保存。此外,如果你的测试数据未来需要与 Web 系统、Python 或 C++ 编写的分析脚本交互,JSON 是目前的绝对行业标准。
二进制数据文件
二进制数据文件无法直接打开来阅读,所以不必关心它在磁盘上具体是以什么样的格式存在的。LabVIEW 提供了一种比较高效的专门用于信号数据存储的文件格式:TDMS。由于它的数据存储格式设计合理,采用 TDMS 格式可以在采集数据的同时就将其保存至硬盘。在需要时,还可以迅速读回所需的数据。对于使用者来说,并不需要了解 TDMS 格式的详情,只要熟悉其相关函数的用法即可。有关 TDMS 的函数使用起来也非常直观,它们位于 "编程 -> 文件 I/O->TDM 流" 函数选板,常用的函数如写入、读取等,仅从名字就可以猜到其功能。
有时候可能会出现这种情况:在查看 VI 前面板时,发现当前显示的数据非常有价值,需要临时保存下来。
早期 LabVIEW 提供了一个便捷功能:通过前面板菜单的“操作 -> 数据记录 -> 记录 (Log)”,可以将当前界面的状态直接“拍快照”存入底层二进制文件。 但是,在专业的软件开发中,强烈建议彻底摒弃这个功能。 因为这种记录方式与当前 VI 的前面板控件结构强绑定。如果在未来的版本更新中,你哪怕只是在界面上增加或删除了一个微小的按钮控件,以前记录 的所有历史数据文件都会因为“数据结构不匹配”而永久损坏、无法读取。
正确做法: 即使是临时保存,也应当在程序框图中使用事件结构捕捉保存指令,将关键数据提取出来,使用“写入二进制文件”节点或追加到 TDMS 文件中。数据存储必须独立于界面 UI 存在。
数据库
LabVIEW 有专门的连接数据库工具,帮助用户在 LabVIEW 中读写数据库中的数据。借助 LabVIEW 的数据库连接工具,用户不需要深入理解数据库的各种概念,就可以非常方便地把数据存入或从数据库中取出。
数据库用于管理相互之间有关联的、可以以表格方式表示的数据。数据库的一大优点是结构化查询速度极快。通常,如果测试程序每次只是记录流水账式的原始波形,直接存为 TDMS 即可。
但如果你的程序需要记录大量的“测试报告元数据”(如测试时间、操作员、良品率、错误代码),并且日后需要频繁进行“筛选某个月内特定操作员的所有不良品记录”这种复杂的检索操作,文本文件就会显得力不从心。
除了连接企业级的远程服务器数据库(如 SQL Server),目前 LabVIEW 开发者非常青睐使用 SQLite。它是一个把整个数据库引擎和数据存放在单一本地文件中的轻量级方案,无需配置复杂的服务器环境,却能享受完整的 SQL 语句查询便利,是中小型单机测试系统存储关联数据的绝佳选择。
生成报表
测试程序结束后,往往需要以书面报告的形式 将测试结果呈交给用户。LabVIEW 可以生成 4 种报表格式:标准、HTML、Word、Excel 格式。其中 Word 和 Excel 格式只有在安装 LabVIEW 报表生成工具后才能使用。为了打印出专业美观的报表,可以首先生成 Word 或 Excel 格式的文件;然后在 MS Office 软件中打开生成的报表,检查一下,对格式不理想的地方稍作修改;然后在 Office 中直接打印报表。
生成报表的工作没有太大难度,但相当繁琐。使用预先设计好格式的 MS Office 模板(打上书签或变量占位符),然后在程序中向模板插入数据,是业界公认的高效做法。
需要特别注意的是,LabVIEW 的报表生成工具包底层依赖于 Windows 的 ActiveX/COM 自动化调用机制。这意味着,当你把程序打包成 EXE 交付给最终用户时,用户的计算机上也必须安装有兼容版本的 Microsoft Office。如果客户机上只有精简版 Office、WPS,或者根本没装办公软件,程序将直接报错崩溃。
如果无法控制用户电脑的软件环境,建议放弃 Word/Excel ActiveX 方案。可以考虑生成跨平台的 HTML 报表,或者使用第三方无依赖工具包直接生成 PDF 报告,这样程序的稳健性会大幅提升。