点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程
LabVIEW是一种基于图形编程语言的开发环境。它与传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等。但二者最大的区别在于:传统编程语言是用文本语言编程,而LabVIEW用图形语言(即各种图标、图形符号、连线等)编程。
编程简单方便,界面形象直观,具有强大的数据可视化分析和仪器控制能力。
Labview有丰富的文件操作函数库,可以方便地进行文件的读写。Labview可以读写文本文件、数据报表文件、二进制文件和测试文件。主程序中从VISAread的readbuffer端读上来的数据需要转换成表格数据进行保存,数据的保存分为两个阶段。第一阶段,通过表单形式(带时间头)显示在主程序界面,方便用户直观查看测试参数是否已满足要求。第二阶段,把表单数据保存到Excel文件中,可供用户打印查询。如果数据不需直观显示在主程序界面上,也可保存到TXT(可以用Excel打开)文件中。
1、数据显示模块的设计
工程中充分考虑动态实时性,显示的每一帧数据都对应不同的时刻,并且对于数据显示、存储功能可以进行时间大小、时间间隔设定,以满足不同测试时刻的数据要求。图1为显示子程序显示的动态数据表格。
图1
考虑到读串口的频繁性,我们提出两种可能:①上位机需要周期性的对串口进行读操作,这样一来串口上来的数据最好也能周期行性地显示、保存;②上位机对串口的读操作是非周期性的,而且间隔时间有时较长,这样串口数据上来时显示,没有数据上来就不显示。
对于第一种情况图2给出了具体的子程序代码。主程序中上来的一串串口数据经过StringSubset这一功能模块各个参数被依次分割开来。再经过MergeSignals和BuildTable最终实现为图1中的Table3。从图1中我们看到了数据被以3s的间隔周期性的保存在表单中。怎么来实现这种周期性呢?这就需要在While循环中用到Combobox控件,预设好各种需要的保存周期以供选择。值得注意的是图1中子程序显示的数据是模拟输入的固定值。
图2
对于第二种情况需要在源程序(图2)的基础上稍加改动,在原程序中去掉Combobox控件。为了实现数据上来才显示,没数据上来就不显示的功能,可以考虑增加一个Case框,设置一个局部变量(串口是否有数据读上来)来决定执行显示操作还是执行不显示操作。具体的程序读者可自行编写。
工程中因为要直观实时显示各个测试参数,把每个参数数据都接到了各自的WaveformChart(实时趋势图控件),这样各个参数的波形变化就能被趋势图实时显示了。用户就能直观地从PC上判断测试参数是否满足要求了。
2、把主程序显示的表单记录保存到文件
程序中串口数据可以直观的显示在前面板上并保存下来,但是为了对实验结果进行精确分析,数据存储也很重要。好的数据保存有利于数据的后期处理和分析。
在实时测试主程序的界面图中,继上个模块数据显示在主程序表单中后,测试设置按钮用一个Boolean类型按钮“保存数据”,它就是用来设置数据是否保存的设置按钮。当它为True时,表单中所显示的所有实时测试数据即可保存到指定的测试文件中;当它为False时,实时测试数据将不被保存。其实质是用户通过保存设置按钮的状态有选择地决定数据是否保存。在LabVIEW7.1/help/findexample自带的例子中就有这样的程序,所需要改动的就是把其中的Table换成所需要保存的Table,创建相应的属性节点,并分别选中Rowheaders[],Columuheaders[]有效。这样⑴中的表单文件就可以连同行表头和列表头一并保存到文件中。