文档库 最新最全的文档下载
当前位置:文档库 › 第五章 labview字符串和文件

第五章 labview字符串和文件

第五章 labview字符串和文件
第五章 labview字符串和文件

第五章 字符串和文件I/O

5.1 字符串

字符串是ASCII 字符的集合。如同其他语言一样,LabVIEW 也提供了各种处理字符串的功能,如果想获得字符串的例子,可查看Examples\General\strings.llb 。下面扼要介绍一些内容。

● 创建字符串控制对象和显示对象

可以在Controls?String & Path 中看到右边所显示字符串控制对象和显示对象。

练习 5-1 组合字符串

目的:使用一些字符串功能函数将一个数值转换成字符串,并把该字符串和其他一些字符串连接起来组成一个新的输出字符串。

前面板

打开一个新的前面板,按照下图向其中添加对象。

其中的两个字符串控制对象和数值控制对象可以合并成一个输出字符串并显示在字符串显示器中。数值显示器显示出字符串的长度。

本练习中输出字符串是一个GPIB (IEEE 488)命令字符串,它可用来与串口仪器(RS-232 或者 RS-422)进行通信。

流程图

● Format Into String 函数(Functions?String )——在本练习中,它用于对数值和字符串进行格式化,使它们成为一个输出字符串。

● String Length 函数(Functions?String )——在本练习中,它用于返回一个字符串的字节数

执行该VI 。注意,Format Into String 功能函数将两个字符串控制对象和数值控制对象组合成一个输出字符串。

●把该VI保存为Build String.vi,在下一个练习中还将用到这个VI。

●字符串格式的设定:选中Format Into String函数,单击右键,在快速菜单中选择Edit

Format String,可分别对个输入的各部分格式做设定。

练习5-1结束。

练习5-2字符串子集和数值的提取

目的:创建一个字符串的子集,其中含有某个数值的字符串显示,再将它转换成数值。

打开Examples\General\strings.llb中的Parse String.vi。用默认输入值执行该VI。注意,DC的字符串子集被用于输入字符串。还要注意,字符串的数值部分被提取出来,并转换为数值。您可以尝试使用不同的控制数值(记住数组式的字符串是从0开始进行编号),或者您可以返回到流程图,查看怎样从输入字符串中提取出其中的元素。

String Subset函数(Functions?String)——在本练习中,它用于返回偏移地址开始

的子字符串以及字节数。第一个偏移地址是0。

很多情况下,必须把字符串转换成数值,例如需要将从仪器中得到的数据字符串转换成数值。

Scan From String函数(Functions?String)——在这个例子中,它用于扫描字

符串,并将有效的数值(0到9,正负,e,E和分号)转换成数值。如果连接了一个

格式字符串,它将根据字符串指定的格式进行转换,否则将进行默认格式的转换。

该函数从偏移地址的string处开始扫描。第一个字符的偏移地址是0。这个函数在已知头长度(本例中是VOLTS DC)时或者字符串只含有有效字符时很有用。

选择File?Close,关闭该VI。注意不要保存它。

练习 5-2结束。

5.2文件的输入/输出(I/O)

文件I/O功能函数是一组功能强大、伸缩性强的文件处理工具。它们不仅可以读写数据,还可以移动、重命名文件与目录。创建电子表格格式的、由可读的ASCII文本组成的文件,以及为了提高读写速度和压缩率采用二进制的格式写入数据。

可以采用下面三种文件格式存储或者获得数据:

●ASCII字节流——如果希望让其他的软件(譬如字处理程序或者电子表格程序)也可以

访问数据,就需要将数据存储为ASCII格式。为此,您需要把所有数据都转换为ASCII

字符串。

●数据记录文件——这种文件采用的是只有G语言可以访问的二进制格式。数据记录文件

类似于数据库文件,因为它可以把不同的数据类型存储到同一个文件记录中。

●二进制字节流——这种文件的格式是最紧凑、最快速地存储文件的格式。您必须把数据

转换成二进制字符串的格式,还必须清楚地知道在对文件读写数据时采用的是哪种数据格式。

因为ASCII字节流格式是最常用的数据文件格式,所以本节着重介绍这种格式。如果您想获得关于文件I/O的例子,请参考 Examples\File。

5.2.1文件 I/O 功能函数

大多数的文件I/O操作都包括三个基本的步骤:打开一个已有的文件或者新建一个文件;对文件进行读写;关闭文件。LabVIEW在Functions? File I/O中提供了很多有用的工具 VI。本节主要介绍9个高级工具VI,这些工具VI可以把错误检查和错误处理等功能与文件I/O功能函数结合起来。

以下5个功能从左到右对应于上面5个图标。

●Write To Spreadsheet File VI——用于将由单精度数值组成的一维或者二维数组

转换成文本字符串,再将它写入一个新建文件或者已有文件。该VI先打开或者新

建文件,之后再关闭文件。它可以用于创建能够被大多数电子表格软件读取的文本

文件。

●Read From Spreadsheet File VI——用于从某个文件的特定位置开始读取指定个

数的行或者列内容,再将数据转换成二维、单精度数组。该VI先打开文件,之后

再关闭文件。它可以用于读取用文本格式存储的电子表格文件。

●Write Characters To File VI——用于将一个字符串写入一个新建文件或者已有

文件。该VI打开这个文件、写入数据,再关闭文件。

●Read Characters From File VI——用于从某个文件的特定位置开始读取指定个数

的字符。该VI先打开文件,之后再关闭文件。

●Read Lines From File VI——用于从某个文件的特定位置开始读取指定个数的行

内容。该VI先打开文件,之后再关闭文件。

如果想查看其他的文件I/O 功能函数,请选择Function?File I/O? Binary File VIs或者Function?File I/O?Adva nced File Functions。

5.2.2将数据写入电子表格文件

将数据存储到文件的最常见应用之一是设置文本文件的格式以便在电子表格文件中打开它。大多数电子表格文件用Tab键分割各列,而用EOL(段尾)分隔各行,如下图所示。

用一个电子表格程序(如 Excel )打开该文件可以看到下面这个表格。

练习 5-3 将数据写入电子表格文件

目的:修改一个已有的 VI 以使用文件 I/O 功能函数,以便可以将数据以 ASCII 格式保存到一个新的文件。然后就可以用一个电子表格程序打开该文件。

前面板

打开前面练习中创建的Graph Waveform Arrays.vi 。当调用这个VI 时,该VI 将产生两个数据数组,并将它们绘制在一个图区中。您需要对该VI 进行修改,从而把两个数组写入一个文件,格式是每列含有一个数组。

Array

Waveform Graph

流程图

打开Graph Waveform Arrays.vi 的流程图,按照下图在流程图的右下角添加功能函数。

Write To Spreadsheet File VI (Functions?File I/O )用于将二维数组转换成电子表格字符串,再将它写入一个文件。如果没有指定路径名称,将会弹出一个文件对话框,提示输入文件名。该VI 将把一维或者二维数组

写入文件。这个例子中,因为用的是二维数组,所以无需连接一维输入端子。

Boolean 常数 (Functions?Boolean )用于控制是否在写入数据之前转换成二维数组。在这个例子中需要对数据进行转换。因为电子表格文件的每列都含有一个数据数组,所以必须先转换成二维数组。 ● 返回前面板,执行该VI 。数据数组产生以后,会出现一个文件对话框提示输入新建文件的文件名。输入文件名,并单击 OK 。

● 可以尝试选择转换与不转换两种情况运行程序,查看结果差别。 ●

保存该VI 为Waveform Arrays to File.vi ,并关闭该VI 。

现在可以用电子表格软件或者文本编辑器打开或者编辑刚才创建的文件。可以看到两列表格,每列含有100个元素。

在这个例子中,直到所有数组都被采集以后,数据才可以被转换或者写入文件。如果需要更大的数据缓存和希望在数据产生后把它们写入到硬盘,就需要使用另外一个文件I/O VI 。

练习 5-3 结束。

练习 5-4 向文件添加数据

目的:创建一个 VI ,可以把温度数据以 ASCII 格式添加到某个文件中。该 VI 使用 For 循环产生温度数据,并将它们存储到一个文件中。在每个循环期间,您都要把数据转换成字符串,添加一个逗号作为分隔符,并将字符串添加到文件中。

前面板

打开一个新的前面板,并按照下图放置对象。

êy?Yμ?·?êy

???è Chart append to file?

前面板中包括一个数字式显示器和一个波形图。“数据点个数”控制对象指定了需要采集和写入文件的温度数据的数量。波形图表则用于显示温度曲线。将波形图表的Y 轴范围设

置为70.0到90.0,X 轴范围设置为0到20。

流程图

●打开流程图,添加For循环并增大它的面积。该VI将产生由“数据点个数”控制对象

指定的个数的温度数据。

●在循环中加一个移位寄存器,方法是用鼠标右键单击循环边界,在快捷菜单中选择移位

寄存器。这个移位寄存器中将含有文件的路径名。

●完成对象的连线。

●Empty Path 常数(Functions?File I\O?File Constants)——用于初始化移位

寄存器,以保证需要对文件写入数据时路径都是空的。会出现一个文件对话框提

示输入文件名。

●Digital Thermometer VI(Functions?Select a VI…)——返回一个模拟温

度测量值(仿真)。

●Format Into String函数(Functions?String)——将温度数据转换成字符

串,并且在数据后面增加一个逗号。

●Write Characters To File VI((Functions?File I/O)——用于向文件写入

字符串。

●Boolean常数(Functions?Boolean)用于将Write Characters To File VI的append to

file?输入为TRUE, 这样在循环执行时新的温度数据就会加入到选中的文件中。用操作工具单击这个常数可以将它设置为TRUE。

●返回前面板,把“数据点个数”设置为20,执行该VI。这时会出现一个文件对话框,

提示输入文件名。输入文件名以后,VI就会在每个温度数据产生时,将它写入到该文件中。

●把该VI保存为LabVIEW\Activity目录下的Write Temperature to File.vi。

●使用任意一个字处理软件,例如Write for Windows,Teach Text for Macintosh,或

者 UNIX平台下的某个文本编辑器,打开该数据文件查看其内容。您可以看到文件的内容是20个用逗号分隔开的数值(准确到小数点后三位)。

练习 5-4结束。

练习 5-5从文件读取数据

目的:创建一个VI,可以从上一个练习中创建的例子中读取数据,并把这些数据显示在一个波形图形中。必须按照数据保存的格式来读取它,因为原来是用字符串数据类型,把数据

保存为 ASCII 格式,那么就必须用一个文件 I/O 函数把数据作为字符串读出。 前面板

打开一个新的前面板,并按照下图放置对象。

′ó???t?á×?·?′?

???è Graph

前面板中包括一个字符串显示对象和一个波形图。“从文件读字符串“显示对象将从上个练

习创建的文件中读出用逗号分隔开的温度数据。波形图则用于显示温度曲线。

流程图

Read Characters From File VI (Functions?File I/O )——用于从文件中读取数据,以及输入字符串中的信息。如果没有指定路径名称,将出现一个

文件对话框提示您输入文件名。在这个例子中,无需判断需要读取的字符的

个数,因为文件的字符数比默认的512要少。要从文件中读取数据,必须知道数据的存储方式。如果知道了文件的长度,就可以使用Read Characters From File VI 读取指定个数的字符。

Extract Numbers VI (Examples\General\strings.llb)——用于提取由逗号、分行符号、非数值字符等分隔开的数据组成的ASCII 字符串,并将它们转换成数值数组。 ● 返回前面板,执行该VI 。将出现一个文件对话框,在其中选择刚才保存的数据文件,您可以看到图形中显示的数据与Write Temperature to File VI 例子中显示的一样。 ● 保存该VI 为Temperature from File.vi ,并关闭它。

练习 5-5 结束。

5.3 数据记录文件(datalog file )

上面提供的例子说明了处理ASCII 字符格式存储的数据的文件的简单方法。在需要创建供其他软件(如电子表格软件)访问的文件时这种方法很有用。另外一种是称为数据记录文

件(datalog file)的数据格式。它与数据库文件有类似之处,文件是由记录组成的,一个文件的所有记录有相同的结构和长度。访问该文件是可以以记录为单位,并且可直接访问文件中的任意一个记录。记录本身的数据结构可由用户自己定义,一个记录内可容纳不同的数据类型,它就像一个簇一样。

如果要用VI获得数据,您可能不想把数据写入到ASCII文件中,因为把数据和字符串之间相互转换非常花费时间。例如,把一个二维的字符转换成一个具有电子表格格式的字符串(具有标题和时间标记)也是一个非常复杂的操作。如果不需要把文件存储成可供别的软件访问的格式,您可以把数据输出到一个数据记录文件。使用这种格式时,把数据写入到文件的操作变得非常简单,这也使得读写操作的速度更快。它还可以简化数据采集的工作,因为您可以把初始的数据块作为一个日志或者记录读取,而无需了解其中含有多少数据。G语言会记录数据的数量,用于对每个数据记录文件的记录。

Write Datalog File示例(位于Examples\File\datalog.llb)创建了一个新的数据记录文件,并把指定数目的数据写入该文件。每个记录都是一个由一个字符串和一个单精度数据数组构成的簇。

要读取一个数据记录文件,您采用的格式必须与对该文件写入数据时所用格式相同。Read Datalog File示例将从 Write Datalog File示例创建的数据记录文件中一次读取一个记录。读出的每个记录都是一个由一个字符串和一个单精度数据数组构成的簇。

作业:把以上5个例子上机作一遍。

LabVIEW编程基础(中)

LabVIEW的基本控件与基本函数 LabVIEW基本控件:数值、布尔、字符串与路径、数组与簇、图形、枚举1、数值:数值输入控件与数值显示控件(数值输入控件有增量/减量按钮;输入为白色背 景,输出为灰色背景) 默认数据类型为:双精度,橙色。 2、布尔:值默认为False,图标为绿色。 布尔控件的机械动作属性 单击时转换:按下按钮时改变状态,再次单击后恢复原状态。与VI是否读取控件无关。(可赋值恢复)类似开关按钮 释放时转换:按下按钮时保持当前状态,直到释放按钮,再次单击后恢复原状态。与VI是否读取控件无关。(可赋值恢复)类似开关按钮 保持转换直到释放:按下按钮时改变状态,直到释放按钮,,再次单击后恢复原状态。与VI 是否读取控件无关。(可赋值恢复)。类似开关按钮 单击时触发:按下按钮时改变状态,LabVIEW再次读取控件值后返回原状态。 释放时触发::按下按钮时保持当前状态,释放时改变状态,LabVIEW再次读取控件值后返回原状态。 保持触发直到释放:按下按钮时改变状态,直到释放按钮,LabVIEW再次读取控件值后返回原状态。

3、字符串与路径:(字符串输入控件与字符串显示控件),粉色。 4种显示方式(正常显示、’\’代码显示、密码显示、十六进制显示) 4、数组:依据加入的控件类型同样分为输入控件与显示控件 LabVIEW的数组以索引号0表示数组的首个数据。 增加数组维度的方法:(1)索引框的快捷菜单中->增加维度 (2)直接向下拖动索引框 (3)属性对话框->外观选项卡->维 数组中的元素为同类型的控件,可以是各种类型的控件,但不能是数组的数组。数组的多态性: 5、簇:依据加入的控件类型同样分为输入控件与显示控件 簇本身的属性:重新排序簇中控件、自动调整大小(无、调整为匹配大小、水平排列、垂直排列) 使用簇结构时,尽可能的使用:严格自定义类型。 错误簇:状态(布尔)、代码(数值输入)、源(字符串输入)

labview教程——如何判断字符串包含的是数字

labview教程——如何判断字符串包含的是数字 字符串编程是Labview 编程的难点之一,有的时候,用一整天的时间做一个 字符串处理的VI 是常有的事,尤其是对各类专用设备特殊的通讯协议和祯结构. 从最简单的无符号10 进制整数谈起1.无符号DEC 整数 比如字符串”1234”,显然它包括的全部是数字,而不是字符(如A,B,C 等),问题是如何在程序中判定.无符号10 进制整数只包含0,1..9,因此可以借助C 语言的方法,用ASCII 值来判定.0 的ASCII 是0X30,1..9 分别是0X31..0X39,通过把字符串转换成U8 数组,U8 数组里保存的是字符的ASCII 值.LABVIEW 中提供了判 断10 进制字符的节点,IS DEC DIGIT?,用它可以简化程序,同时它是个多态的VI,LABVIEW 专门有一个例子程序说明它的使用方法,需要说明的是对于一个字符串,它只判断第一个字符.看看它接受的输入类型.因此,更简单地判断10 进制 无符号整数的方法如下图所示:同理,LABIVEW 同时提供了判断16 进制,8 禁止 的节点,因此可以方便地利用上面的方法判断是否是16 进制和8 进制的数字字 符串.LABVIEW 没有提供判断二进制字符串的方法,不过只需要把上面的0X39 改成0X31 就可以判断是否是二进制字符串.2.无符号浮点数的判定无符号的浮 点数,比如1.234 与无符号整数比较,只需要判定是否包含小数点就可以了,另外 有的整数用逗号表示千位分割符号,也可以采用类似的方法判定https://www.wendangku.net/doc/fc5159827.html,BVIEW 特 殊类型表示方法LABVIEW 有几种数值表示方法这样判断起来就非常复杂,需要包括+ - E K M 等的判断.下面提供一种通用的判断方法,虽然通用,相应效率也比较低,如果知道确切格式,用上面的方法比较合适可以直接判断+,-,科学记数法,不支持SI,逗号等 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

labview事件结构学习

labview事件结构学习 编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程 序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW 中相应这些事件最常用的结构就是事件结构。事件结构内容丰富,基 本上大的程序结构都需要用到事件结构,下面将详细介绍事件结构。事件结构 在程序不能够单独响应各种事件,必须与循环结构一同使用,如下图事件添加 方式很简单,鼠标右键事件框弹出菜单如上图,有添加、删除、复制、编辑事 件等选项,按照操作即可。如下图,为事件结构添加Stop 事件,布尔控件触发 事件的方式有多种,鼠标按下、经过、离开、进入等,这里我们选择值改变。 确定后,stop 事件就被添加进去了,如下图,当我们运行程序后,点击前面板 的stop 按钮,触发事件使while 循环停止而后程序也停止。同一事件分支只能 添加一种事件吗?当然不是!有的时候有很多不同操作却会执行相同代码,怎 么编程才不会让代码冗余呢?看个例子,如下图2 个按钮stop1,stop2 点击后 都可以让程序停止,我们怎么为其添加事件呢?我们先添加一个事件stop1 的,方法上面已经描述了。由于stop2 的执行代码和stop1 一样,我们在事件stop1 上右键->弹出菜单->编辑本事件分支(Edit Event Handled by This Case)会弹出已添加事件stop1 的编辑框,这是左侧有2 个按钮如下截图我们点击Add Event 左侧事件列表会出现如下变化选中这个后,右侧列表选中stop2 的Value Change 事件后,点击确定在看该事件分支如下,2 个事件就添加在同一个分支当中了,运行程序后,点击stop1 或stop2 均可让程序停止。超时超时是事件结构特有的,看名字就知道是怎么回事,即超过一定时间没有触发事件则执行超时 事件。如果超时时间设置所以如果程序事件功能不多,又需要定时执行一段代码,可以考虑用此方式来完成;如果程序操作频繁,则不建议用此事件来定时

labview结构的使用

结构的使用 本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1 labview 8.0 结构的使用 条件结构 条件结构是执行条件语句的一种方法。这类似于文本编辑语言中常见的If…Then…Else语句。它位于程序框图中,函数→编程→结构→条件结构。如图所示: 条件结构包含有两个或者更多的子框图,每一个子框图包含一段程序代码,由此对应一个程序分支。多个子框图就像一摞卡片重叠在一起,任何时候只有一个是可见的,执行哪一个取决于于选择端子外部接口相连的某个整数,布尔数,字符串或者枚举指,用户也可以直接输入所有可能出现的值。 1.选择端口的输入值 条件结构选择端口的输入值是由与它相连的输入控件对象决定的,数据类型可以是布尔量,整形,字符串型或者枚举型。条件结构顶部中间是各分支的选择标识,它自动调整为输入的数据类型,可以在工具模板上使用标签工具直接键入单个数值或某个数据范围。数值之间用逗号来分开,例如:“..0,2,4..10”表示选择条件为:≤0,2,4,5,6,7,8,9,10。 对于字符型和枚举型数值在条件标识上会自动加上双引号,当键入的选择器标识值与连接选择端口的数值类型不同时,选择器标识变为红色标识有错误。如图:

设置默认分支的方法是,选择一个分支结构,在快捷菜单中执行“本分支设置为默认分支”,它的作用是当选择端口的值与选择器标识值没有一个匹配时,就执行默认分支。如图: 2.条件结构的数据通道 条件结构的数据通道就是数据的输入和输出端口。将结构内外的端子相连后,边框上就会出现一个小矩形框,这就是数据通道,用于传输数据。向条件结构的一个分支提供数据时,这个数据对于所有的分支都是有效的,也就是其他分支都可以使用这个输入数据。条件结构的输出通道有些不同,当在一个分支中创建输出通道后,所有分支的同一位置都会出现一个白色小方框,它要求每一个分支都必须为这个通道予以连接,通道变为实心后程序才可以运行。也可以在通道的快捷菜单中选定“未连线时使用默认”为没有连接的分支定义一个默认输出值,这时输出通道变为灰色。如图: 条件结构应用举例 例一:

labview实验报告

LabVIEW课程设计 报告书 班级 学号 姓名 一、基础题

1、用labview的基本运算函数编写以下算式的程序代码: 首先在前面板创建一个数值输出控件,然后在程序框图中按照上图连接线路,点击运行,程序结果。 2、利用摄氏温度与华氏温度的关系C = 5(F ?32) / 9编写一个程序,求华氏温度 (F)为32, 64, 4, 98.6 , 104, 212时的摄氏温度。

在程序前面板创建一个数值输入控件和一个数值显示控件,在程序框图中添加一个公式节点,添加一个输出和一个输入分别输入和显示控件项链,在公式节点框图中输入温度转换公式,然后在面前扮输入相应的温度点击运行,得到相应的结果。 3、创建一个2行3列的二维数组控制件,为数组成员赋值如下: 00 .600.500.400.300.200.1 在前面板创建一个数组显示控件,然后将1、2、3创建成数组第一行,4、5、6创建成数组第二行,再将两行创建成一个两行三列的二位数组,点击运行显示输 出结果。 4、用数组创建函数创建一个二维数组显示件,成员为:

1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 编程将上述创建的数组转置为: 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 1 5 6 1 2 6 1 2 3 先在面前板上创建一个上图这样的数组。再创建两个显示数组(一个为显示数组,另一个为转换后数组),在程序框图上面按照下图连线,在原数组和转换后数组之间接一个“二维数组转制”, 点击运行后显示为:

5、创建一个簇控制件,成员分别为字符型控制件姓名,数值型控制件学号,布 尔型控制件注册。从这个簇控制件中提取出簇成员注册,显示在前面板上。 在面板上添加一个簇,在族里分别添加一字符显示控件,数值显示控件,布尔型 显示控件,程序框图连接如图: 先解除捆绑然后再捆绑,输入姓名、学号点击运行在输出簇里显示。 6、创建一个字符串显示件,程序运行后显示当前系统日期、时间和自己的班级、姓名。

Labview执行结构:详细说明

执行结构:详细说明 While循环 与文本编程语言中的Do循环或Repeat-Until循环类似,必须满足特定条件之后,While循环才会执行其内的程序代码,如图1所示。 图1. LabVIEW中的While循环;具备While循环功能的流程图; 还有While循环功能的伪码范例 While 循环位于Structures面板上。从面板上选择While Loop之后,针对所要重复的代码区块,可用鼠标拖拽出矩 形并将之圈住。放开鼠标之后,即会有While循环圈住用户所选的区块。 只要将对象拖拽至While循环中,即可将其新增至While循环中。 只要条件接线端接收特定的布尔值之后,While循环随即执行代码 也可通过While 循环的条件接线端来处理基本错误。若将错误簇连接至条件接线端,则只有Status参数的真或假值传送至接线端。同样,Stop if True和Continue if True快捷菜单项目,将分别变更为Stop if Error和Continue while Error。 计数接线端属于输出端点,其中包含已完成的循环次数。 While循环的循环计数均从零开始。 注意: While循环将至少执行一次。 无限循环 无限循环为常见的程序错误,即无法停止的循环。若条件接线端 i为True时停止,而用户又在While循环外部放置布 尔控件接线端。一旦循环开始,控件值即成为FALSE,就会形成无限循环。

图2.While循环之外的布尔控件 因为在循环开始之前,仅读取该值一次,所以改变控件的值并无法停止无限循环。若要通过控件停止While循环,则必须在循环中配置控件接线端。若要停止无限循环,则按下工具栏上的Abort Execution按钮,即可终止该VI。 在图3中的While 循环将不断执行,直到随机数函数的输出大于或等于10.00,且Enable控件为TRUE时才会停止。当且仅当“与”函数的两个输入都为真时,函数的返回值才为真。否则,与函数将回传FALSE。 在图3中,只要随机函数不产生10.00以上的值,就会成为无限循环。 图3.无限循环 结构隧道 隧道负责为结构传送数据。 While循环边框上的实心区块即为隧道。此区块的颜色与隧道所连接的数据类型的颜色相同。在循环终止之后,随即有数据送回循环。当隧道传送数据进入循环时,只有数据抵达隧道之后,才会执行循环。 图4即以计数接线端连至隧道。直到While 循环执行完毕,隧道中的数值才会传送至Iterations显示控件。计数接线端在Iterations显示控件中只会显示最后的数值。 图4. While循环的隧道

labview控制程序流程——labview事件结构

labview控制程序流程——labview事件结构 1 事件结构及它的图形化表示法事件被用来通知用户有异步活动发生。图 形化语言的事件响应包括:用户界面事件、外部I/O 事件和程序其它部分的事件。对事件的处理程序也被称为:事件驱动程序。事件驱动程序可以分为若干 个分支,每个分支处理不同的事件响应。所以对事件的响应结果也可以控制程 序的流程。事件驱动机制来自于可视化的操系统,可视化操作系统对用户事件 提供了简洁、有效的响应方式,最常见的事件来自于鼠标和键盘。虚拟仪器借 助于操作系统的事件处理机制实现了图形化语言的事件响应能力。在没有引入 事件结构之前,LabVIEW 是借助于轮询的方式来查询用户操作,由于轮询的方 式会占用一定的CPU 资源,甚至可能遗漏事件,所以这种处理方式并非理想。事件结构的出现避免了对CPU 资源的占用,同时也避免了事件的遗漏。事件 结构在函数选板》编程》结构子选板中可以找到,并可以将其直接拖拽到程序 框图中,图形化表示的事件结构,参见下图。图 1 图形化的事件结构与Case 结构和循环结构类似,事件结构也包含了一个主框架,这个框架内将用来放置 事件处理的事件驱动程序代码。如果事件处理任务众多,会有众多事件分支存在,在结构上类似Case 的多帧结构(选择器标签)。当在程序框图上拖放一个 事件结构时,我们只能看到上图所示的一帧已经预先注册的超时事件(Timeout),超时事件分支。它具有定时延迟的基本功能(不包括While 循环),参见下图。图 2 具有定时延迟的基本功能当然也可以采用另一种表示方法,参 见下图。图 3 利用事件结构内部节点获得中止时间通过这个例子也好理解内部 节点中时间的含义(是事件响应的停止时间)。超时事件超时事件是一种特殊 的事件,当然也可以看成是默认的事件分支。如果存在其它事件源时,超时事 件完全可以被忽略或取消。看下面一个例子。图 4 仅有的两个事件之一超时事

中大型LABVIEW软件三层设计架构

通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。以下将参考由Rick Bitter等人所着”LabVIEW Advanced Programming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。 需要软件结构的主要原因,是当软件人员发展软件到某一阶段时,若没有计划或无意的创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞一般,这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、减低程序的效率,以及增加debugging时的困难。为了改善上述的情形,所以要提倡三层式结构的概念。 三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经验中得来的,在多人发展的软件计划中显得简单明了,当大家都能遵照这个结构来写程序时,这种结构就可以充分显现出它的优点。那这三个阶层到底如何区别呢?以通俗的比喻来说,假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接下来,将各球员组合练习某一套防守或进攻的战术,如二三区域联防、人盯人防守,每个人该在什么位置才能正确接应等,则像是T est Level中一项项的test了;而最后比赛时,场上的战略运用,包括何时要用什么战术组合、如何更换球员、何时喊暂停、终场前是不是要故意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将T est Level中各test 做最有效能的整合与排列组合等的工作。 简单来说,Driver Level包含了程序与所有仪器、组件、马达或其它应用软件的沟通、控制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷射以设定的能量及频率发射光束???等。可注意到我们在这边所说的driver,并不像一般在别处所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,很容易地让使用者操作。 当一个软件计划严格的遵照上述的三层结构来撰写时,最大的优点是可使程序代码的再使用(code reuse)达到最大化,在不同的T est VI中,可重复使用相同的Driver VI;而在不同程序的Main Level中,又可重复使用相同的T est VI,这将使得程序维护或修改的时间与精力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。另一个很重要的好处是,当我们在撰写某一个level中的程序时,并不需要关心在另一个level中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这使得由团队来共同完成一个大型计划的工作变得容易许多。 以下将依Driver Level、Test Level、Main Level的顺序,来介绍在各level写程序时的原

LabVIEW文件操作

实验四文件操作 一、实验目的 (1)掌握电子表格文件的读取和写入操作;(2)掌握二进制文件的写入和读取操作;(3)掌握数据记录文件的写入和读取操作。 二、实验工具 (1)PC(2)LabVIEW 7.1 三、实验内容 (略) 四、实验步骤 实验内容:(2)用低层函数将数据保存成文本文件,创建一个VI,命名为“实验4-2.vi”,实现:利用For 循环产生5个0-1的随机数,然后将这5个随机数保留小数点后2位保存进d盘的test2.txt文档。 步骤记录:(1)切换至程序框图,放置for循环,循环次数为5; (2)放入replace file,write file,close file, simple error handler随机数,设置格式,连线。 实验内容:(4)用低层函数读取文本文件,创建一个VI,命名为“实验4-4.vi”,实现:读取d:\test1.txt 文件中的数据,将读取的数据显示在String Indicator控件中。 步骤记录:(1)在程序框图放入replace file,write file,close file,simple error handler字符串指示器,连线。(2)输入路径,选择open。 实验内容:(6)用低层函数将数据保存成电子表格文件,创建一个VI,命名为“实验4-6.vi”,实现:利用For循环产生5个0-1的随机数,将循环的序号和产生的随机数存储到某一电子表格文件中,该文件的名称和存储地址通过对话框指定。 步骤记录:(1)在程序框图放入replace file,write file,close file,format into sring,,连线。 (2) 输入路径,选择open,用制表符做列标志,用行尾符做行标记。 实验内容:(9)用低层函数写二进制文件,创建一个VI,命名为“实验4-9.vi”,实现:使用节点All Functions —>Analysis—>Signal Processing—>Signal Generation—>Sine Wave.vi产生128点正弦波数据组成的一维数组,保存进二进制文件d:\test2.dat。 步骤记录:(1)在程序框图放入replace file,write file,close file,simple error handler,sine wave,连线;(2)输入路径,选择open or create。 实验内容:(11)用低层函数读二进制文件,创建一个VI,命名为“实验4-11.vi”,实现:读取d:\test2.dat 文件的数据并显示。 步骤记录:(1)在程序框图放入read from ,创建数组指示器,连线; (2)设置路径。 实验内容:(12)用高级函数实现数据记录文件的输入,创建一个VI,命名为“实验4-12.vi”,实现:利用子程序“测量温度子程序.vi”模拟温度测量系统产生测量值,使用All Functions—>Time&Dialog—>T Get

LabVIEW事件结构的妙用

LabVIEW事件结构的妙用 首先,我们回顾一下上期节目:LabVIEW网络讲坛乊悬案迷思中关于事件结构的几个重要知识点。 事件结构的基本组成部分: 事件结构五大基本组成部分 事件结构由——事件选择器、超时接线端、事件数据节点、事件过滤节点和动态事件接线端5个基本部分组成。 事件结构编程的3条黄金原则: 在使用LabVIEW事件结构迚行编程的时候,我们应该注意:1.不要将事件结构放置在while循环乊外,而应该放置在while循环的内部;2.不要在事件结构的内部使用循环处理事件,可选择采用生产者消费者结构,在生产者循环中放置事件结构,在消费者循环中处理事件;3.记得为事件结构添加一个单独处理停止按钮的分支。 遵守以上三条原则将使我们的程序更加健壮,避免在使用事件结构的时候出现前面板死锁等问题。 过滤事件与通知事件:

在LabVIEW中,以问号结束的事件被称为过滤事件,其余的事件被称为通知事件。对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定义的任务;而对于过滤事件,程序感知事件发生后,首先处理在事件结构中定义的任务,然后根据事件过滤节点的值(Discard?)来决定是否响应该事件或是否改变事件数据。 因此我们建议,在希望参与处理用户操作时使用过滤事件,因为过滤事件可以放弃事件或修改事件数据。如果仅需要知道并响应用户执行的某一特定操作,则应使用通知事件。 在本期节目中,我们着重介绍动态注册事件的用法。 静态和动态两种事件注册模式: 静态注册指定了事件结构的每个分支具体处理哪些事件。一旦VI开始运行,LabVIEW将自动注册这些事件,并且在VI运行的整个过程中无法改变事件结构所处理的事件。 而动态事件注册与VI服务器相结合,允许在程序运行时使用控件、VI或应用程序的引用来动态地指定和改变产生事件的对象。动态注册在控制LabVIEW产生何种事件和何时产生事件等方面更为灵活。 Demo 1和Demo 2帮助大家更好地理解动态注册事件编程方法。 Demo 1:动态注册事件_阿拉丁神灯.vi Demo概述: 在这个VI中,用严格自定义的方式将一个布尔类型的控件做出神灯的样子,并为这个布尔控件动态注册了”鼠标按下”的事件。这个事件执行的任务是显示神灯神仙,并弹出一个对话框。由于该事件采用的是动态注册的方式,所以可以通过一个按钮取消对该事件的注册。并通过另一个按钮再次注册该事件。这就是动态事件的使用效果,它可以在程序运行的过程中,动态地控制何时注册事件和注册什么样的事件。 程序实现:

labview事件结构浅析

https://www.wendangku.net/doc/fc5159827.html,/forum.php?mod=viewthread&tid=207837 使用LabVIEW图形化语言开发的应用程序界面是图形化用户操作界面,也称为:GUI (graphical user interface),它的作用是与操作者实现人机对话形式的互动操作。这种对界面操作的互动响应在LabVIEW 6.1发布之前,只能是通过“轮询(polling)”的方式来实现。轮询的方式的缺点是:需占用一定的CPU资源(在没有事件发生时)和灵活性不好。在LabVIEW6.1引入事件结构(Event Structure)后,采用事件结构来设计、实现的GUI操作则变得更加灵活、方便,并且不占用CPU的资源,这与先前采用轮询的方式来查询事件的方式相比要合理的多。下面结合应用项目中的设计实例来介绍GUI设计中的事件驱动。 有关事件结构的一些基本概念、原理及使用方法在LabVIEW Help及许多中文书中都作了详细的讲解,这里我就不作更多地介绍了。 事件结构通常包括以下部分: 1、Event cases——包含有若干个注册的事件源及同等数目的Event case层,在每个Event case层中包含对该事件响应的处理程序。 2、While循环——用来检测连续不断产生的事件 事件结构中的While循环,是用来确保检测到连续不断发生的事件。如果没有这个While循环,无论有多少事件发生只能对第一个发生的事件进行处理,处理完后程序将退出事件结构。 菜单选项事件结构实例 2011-11-11 09:50 上传下载附件(8.79 KB) NI USB-9219是一款4通道通用C系列模块,专为多功能测试而设计。USB-9219能够测量传感器中的多种信号,如压力计、RTD、热电偶、测压元件和其他需要供电的传感器。由于通道接受单独选择,4条通道可以分别进行不同类型的测量。测量范围随测量类型而异,包括±60 V最大电压范围和±25 mA最大电流范围。 第1步、创建一个项目:综合参数测量仪 按照我的设计习惯,首先在桌面上创建一个新的文件夹,命名为《综合参数测量仪》。然后,打开、运行LabVIEW开发环境,并选择开发环境中的:新建》项目。 此后,在“项目浏览器”就可以看到一个新建的项目:"未命名项目1"。单击项目浏览器:文件》保存,并将该项目命名为:“综合参数测量仪”后,存放到桌面上的《综合参数测量仪》文件夹中。 此时,项目创建完毕。 第2步、创建一个主vi:综合参数测量仪.vi 2011-11-11 09:41 上传下载附件(14.71 KB) 打开刚刚新建的“综合参数测量仪”项目,然后用鼠标右击该项目中的”我的电脑“选择:新建》VI,即创建了一个新的vi。 用鼠标点击新vi的:文件》保存(命名为:综合参数测量仪.vi)。 主vi即宣告创建完毕。如例图所示。

LabVIEW数据记录和存储(四)—XML文件

LabVIEW数据记录和存储(四)—XML文件 XML(eXtensible Markup Language)是一种目前广泛使用的数据传输和存储的格式,其本质上是一种文本文件,可以使用任何一个文本编辑工具打开和 修改。类似于HTML,XML 被设计为具有自我描述性,也是使用标签定义文 档的结构和含义。本文仅仅是介绍LabVIEW 中对XML 文件的操作方式和支持 函数,关于XML 语言本身可以参见相关书籍和文档,如W3school 网站。在测 试测量领域中,XML 文件通常被用来传递应用程序的配置文件和参数,这与 ini 文件的作用类似,也有不少的程序员将二者进行对比。这里举个简单的说明 实例,说明对于ini 和XML 如何处理保存图17 所示的仪器配置列表。该文件 主要存储各种仪器的参数信息,如name(名称)、address(地址)、description(描述)。但是文件对各种仪器进行分类,根据仪器功能分为AC Source、DC Source 等。图17 仪器配置列表实例对ini 文件来说,表述图17 所示的结构简直就是一场灾难,因为它仅仅是一种两层的结构体系,无法准确 地表述这种多种的树形结构。无论怎样设计section 和key,始终无法满足条理 清晰、结构简单和检索方便的要求。XML 由于其本身的多层次设计特点却完 全能够胜任此类描述,如下所示。- - - Instr1GPIB::1 本仪器用于UUT1 供电。- Instr2GPIB::2 本仪器用于UUT2 供电。- - Instr3GPIB::3 本仪器用于UUT3 供电。- Instr4GPIB::4 本仪器用于UUT4 供电。- - Instr5GPIB::5 测量1-10#点电压。- - Instr6GPIB::6 监控11-12#电压。在浏览器中(IE、Firefox 等)打开该XML 文件,可以看到其树形的结构,非常吻合图17 所示的要求。当需要扩展仪器或 类型时,只要增加相应的元素节点即可。因此,相对ini 文件,XML 文件在描 述比较复杂的文档结构时具有非常明显的优势。LabVIEW 提供了两类处理 XML 文件的VIs,如图18 所示,依次为LabVIEW Schema 和XML Parser。前

LABVIEW 中的事件结构杂谈

LABVIEW中的事件结构杂谈 刚开始接触事件结构时觉得它很好用,所以很喜欢用,但也引起了一些问题,就是前面板很容易就被挂起来了,就是所前面板没有响应了,很郁闷。之后就不敢用了,很多可以用事件结构的地方都只用CASE结构麻烦的代替了~~ 今天被师兄那么一指点,觉得完全是委屈了事件结构啊,之前事件结构引起的问题可以很容易的解决。 方法就是设置“超时”(之前一直觉得这个东西没用的): 一般情况下,事件结构是会和while循环套用的,通过不断的循环来执行不同事件源激发的事件,但如果不设置超时,也没有事件源发生,那么while循环将一直等待事件的发生而不进行循环,这样就会使得事件结构外的其他程序也不能执行,可能造成的结果就是前面板本该有反应的地方(比如变量值的变化)没有了反应。 而如果设置了超时,比如设置为100(ms),意思就是每隔100ms如果没有事件发生就超时,进行一次循环,那么事件结构外的其他程序也就得到了执行。 总结一下: 如果事件结构在while循环中,而事件结构之外又有其他的程序需要执行(可能不依赖于事件的发生),那么就应该设置超时。 在事件处理过程内,如何响应前面板命令控件的命令? 我发现,在一个事件内的处理过程完成之前,系统不能响应前面板的其他命令。系统是在事件完成之后的等待时期才响应其他前面板命令事件。 编辑事件结构对话框的下边有一个: 锁定前面板在事件分支执行完毕前。你可这个默认选中的选项取消了,就可以实现你的“在一个事件过程处理中途响应前面板的其他命令"功能。 LabVIEW事件结构 使用LabVIEW图形化语言开发的应用程序界面是图形化用户操作界面,也称为:GUI (graphical user interface),它的作用是与操作者实现人机对话形式的互动操作。这种对界面操作的互动响应在LabVIEW 6.1发布之前,只能通过“轮询(polling)”的方式来实现。轮询的方式的缺点是:需占用一定的CPU资源(在没有事件发生时)和灵活性不好。在LabVIEW6.1引入事件结构(Event Structure)后,采用事件结构来设计、实现的GUI操作则变得更加灵活、方便,并且不占用CPU的资源,这与先前采用轮询的方式来查询事件的方式相比要合理的多。下面结合应用项目中的设计实例来介绍GUI设计中的事件驱动。 有关事件结构的一些基本概念、原理及使用方法在LabVIEW Help及许多书中都作了详

labview字符串加密

实验报告 课程名称:虚拟仪器技术 实验名称:字符串加密专业:电子信息工程班级: 实验地点: 实验日期:2016年9月

实验目的和要求: 1. 学习并掌握熟悉Labview中字符串的基本控件、控制对象和显示对象,表格和树形控件,字符串的简单的实例; 2. 学习并掌握在Labview中数组控件、数组的基本操作、数组间的运算等; 实验器材: 1、PC机WINDOWS操作环境 2、LABVIEW软件 设计思路: 1.每个字母都要移动,所以采用for循环,循环次数由字符串长度决定。 2.在for循环里截取字符串,每个字母后移5位,所以每个字母强制转换后加5. 3.先把字符的ASCALL码取出来,加上5,在转换成字符即可。 4.计算后的ASCII码值转换为字符之后需要进行拼接,得到最终加密好的的字符串。 实验要求: 对字符串进行加密,规则是每个字母后移5位,例如A变为F,b变为g,x变为c,y变d… 如: 实验设计: 前面板设计:

验证一: 验证二:后程序面板设计:

实验中遇到的问题及解决方法: 实验中强制类型转换与数值大小并无关系,关键是数据类型,这里使用的无符号单字节整型(ASCII码),本设计的加密是每个字母后移五位,形成密文,值得注意的是强制类型转换,必须将数据类型选择为无符号单字节整型。 实验总结: 这次实验的主要内容是字符串、数组、矩阵等,综合看来本次实验的内容更为晦涩难懂一些。主要存在的问题是对控件的不熟悉,对控件进行操作耗时间,但在老师和同学的帮助下都一一解决了。LabVIEW中的“帮助”可以帮助我们了解许多LabVIEW中用到的函数,所以要善于运用它。

labview课程设计模拟计算器事件结构

河北工程大学 《虚拟仪器设计》课程设计报告 课题:计算器模拟 姓名:张振兴 学号: 090030301 班级:测控三班 完成日期:2012 年 6月19日

目录 一、设计思路 (2) 二、实现过程 (2) 1、面板键入感应 (2) 2、运算变量的初始化 (2) 3、无操作时的默认输出 (3) 4、数字的键入1-9的输入 (3) 5、数字0的输入 (4) 6、小数点的键入 (5) 7、结果去零操作 (5) 8、“+/-”键的设计 (7) 9、“+、-、*、/”四则运算 (7) 10、等号键 (8) 11、开方运算 (9) 12、取倒数倒数运算 (9) 13、退格键CE的设计 (10) 14、清零键C (11) 15、停止键OFF (12) 三、整体程序 (12) 四、前面板的设计排版 (12) 五、while循环中寄存器能 (13) 六、此计算器可以实现的功能 (13)

一、设计思路 完成标准型计算器的一般功能。 输入第一个数,进行存储并显示输入运算的类型并存储输入第二个数,存储并显示按“=”或则按其它运算符号“+、-、*、/”进行连续的运算,最后显示运算结果。 二、具体的实现过程 1、面板键入感应 在前面板上建立22个布尔量,其中包括0--9十个数字键,1个小数点键,4个“+、-、*、/”运算键,1个等号键,1个开方键,1个符号转换键,1个倒数键,1个清零键,1个退格键,1个退出键。如下图所示: 2、运算变量的初始化 在运行程序之前,首先对需要用到的变量进行初始化,如图所示

3、无操作时的默认输出 当键盘上的键没有任何一个按下时,系统仅执行顺序结构第一帧,系统处于初始化状态输出。 4、数字1--9的输入 以数字“1”为例,当按下数字“1”后,布尔量为值改变,进入时间结构结构,将1输出到显示中,布尔量再次改变时。(图1.4.1)若再次输入1,为避免出现01这样的字符串,先判断之前显示的数据是否为0,若为0,则直接输出1,(图1.4.2)若不为0,则将这两次输入的数据通过

labview字符串与文件IO(很好的)

字符串与文件I/O 本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1 labview 8.0 字符串与文件I/O 字符串 字符串是ASCII码字符的集合,当用户与GPIB和串行设备的通信,读写文本文件以及传递文本信息时,字符串都是非常有用的。字符串中的字符有些是可显示的,有些则是不可显示的。 LabVIEW在功能模板上的字符串子模板中提供了一整套的字符串处理函数,能够完成各种字符串处理功能。常用的字符串对象包括字符串输入控件和字符串显示控件,它们位于控件→新式→字符串与路径→字符串输入控件,字符串显示控件。如图: 字符串的显示方式: 在前面板上放置一个字符串输入控件,右击鼠标,弹出如图所示的菜单:

从上图中可以看出字符串有4种显示方式 下图是“www https://www.wendangku.net/doc/fc5159827.html,”分别用这4种方式显示,如图: 字符串函数 打开程序框图中的字符串函数,如图:

字符串函数模板除了包含一般的字符处理函数以外,还包含各种字符常量,以及字符串与数字量,路径的相互转换函数。 其中最后一行包含了各种常量,可以方便的使用。 字符串应用举例: 例一:组合字符串 该例的目的是将一些字符串和数值转化成一个新的输出字符串。 1. 新建一个VI,在前面板上放置字符串输入控件“命令字”和“单位”,符串显 示控件“输出命令字符”,数值输入控件“数值”和数值显示控件“字符串长度”。 2. 切换到程序框图,在字符串函数模板中选择“格式化写入字符串”,如图连 线:

labview经典顺序结构

一. 程序执行顺序 LabVIEW 是数据流驱动的编程语言。程序在执行时按照数据在连线上的流动方向执行。同时,LabVIEW 是自动多线程的编程语言。如果在程序中有两个并行放置、它们之间没有任何连线的模块,则LabVIEW会把它们放置到不同的线程中,并行执行。 图1、2:顺序执行和并行执行的例子 顺序执行(图1):数据会从控制控件流向显示型控件,因此数据流经的顺序为“error in”控件,“SubVI A”,“SubVI B”,“error out”控件,这也是这个VI的执行顺序。 并行执行(图2):“SubVI A”,“SubVI B”没有数据线相互连接,它们会自动被并行执行。所以这个VI的执行顺序是“SubVI A”,“SubVI B”同时执行,当它们都执行完成以后,再执行“Merge Errors.vi”。 二. 顺序结构 如果需要让几个没有互相连线的VI,按照一定的顺序执行,可以使用顺序结构来完成(Sequence Structure)。 图3:Menu Palette 当程序运行到顺序结构时,会按照一个框架接着一个框架的顺序依次执行。每个框架中的代码全部执行结

束,才会再开始执行下一个框架。把代码放置在不同的框架中就可以保证它们的执行顺序。 LabVIEW 有两种顺序结构,分别是层叠式顺序结构(Stacked Sequence Structure)、平铺式顺序结构(Flat Sequence Structure)。这两种顺序结构功能完全相同。平铺式顺序结构把所有的框架按照从左到右的顺序展开在VI 的框图上;而层叠式顺序结构的每个框架是重叠的,只有一个框架可以直接在VI 的框图上显示出来。在层叠式顺序的不同的框架之间如需要传递数据,需要使用顺序结构局部变量(Sequence Local)方可。 图4:层叠式顺序结构 三. 顺序结构的使用 好的编程风格应尽可能少使用层叠式顺序结构。层叠式顺序结构的优点是及部分代码重迭在一起,可以减少代码占用的屏幕空间。但它的缺点也是显而易见的:因为每次只能看到程序的部分代码,尤其是当使用sequence local传递数据时,要搞清楚数据是从哪里传来的或传到哪里去就比较麻烦。 图5:转换顺序结构 使用平铺式顺序结构可以大大提高程序的可读性,但一个编写得好的VI 是可以不使用任何顺序结构的。由于LabVIEW 是数据流驱动的编程语言,那么完全可以使用VI间连线来保证程序的运行顺序。对于原本没有可连线的LabVIEW 自带函数,比如延时函数,也可以为其包装一个VI,并使用error in, error out,这样就可以为使用它的VI提供连线,以保证运行顺序。

LABVIEW字符格式说明

使用格式说明符格式化字符串、将数字转化为字符串,或在字符串中插入不显示的字符。 对于输出字符串的函数,例如格式化写入字符串和数组至电子表格字符串转换,格式说明符使用下列语法元素。双括号( [] )中的是可选元素。%[$][-][+][#][^][0][Width][.Precision || _SignificantDigits][{Unit}][]Conversion Code 其中Width是一个大于零的数,.Precision和_SignificantDigits是大于等于零的数。 对于扫描字符串的函数,例如,扫描字符串和电子表格字符串至数组转换,格式说明符使用下列语法元素。 %[Width]Conversion Code 格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数可在格式字符串输入中使用多个格式说明符,每个格式说明符用于每个可扩展函数的输入或输出。 格式说明符语法元素 下表列出了格式说明符的语法元素。详细信息见格式说明符范例。 语法元素说明 % 格式说明符的开始。 $(可选)使用格式函数时,该修饰符规定了显示变量的顺序。包括代表变量顺序的位数,其后紧接该修饰符。 -(可选)使用格式化函数时,该修饰符在参数的宽度之内将参数靠左调整,而不是靠右调整。 +(可选)使用格式化函数时,即使是正数,该修饰符也包括符号。 ^(可选)使用格式函数和e或g转换代码时,该元素将数格式化为科学计数法,其中指数为3的倍数。 #(可选)使用格式化函数时,该修饰符移除尾部的无效零。如数值无小数部分,该修饰符会将有效数字精度之外的数值强制为零。 0(可选)使用格式化函数时,使用该修饰符,不带-修饰符,函数将用零而不是空格填充数值参数左边的多余空间,以达到最小宽度。 Width(可选)使用扫描函数时,如扫描字符串,Width元素规定了使用的字段的确切宽度。LabVIEW处理参数时只扫描指定数量的字符。使用格式化函数时,Width元素指定的输出字段的最小宽度。该宽度不是最大宽度。LabVIEW使用适量的字符格式化参数,而不是截断参数。LabVIEW将根据调整的类型对参数的左侧和右侧填充空格。如Width未提供或为0,则输出的长度与经转换的输入参数的长度相等。 .Precision或 _Significant Digits (可选)使用格式化函数时,.或_控制显示的位数。如使用.,LabVIEW将其后的数字作为精度说明符,指定小数点右边的位数。如使用_,LabVIEW将其后的数字编号作为在显示格式中使用的指定有效位数。 .Precision-与浮点表示法使用时,该元素指定小数点右边的位数。如没有.,LabVIEW使用6位精度。如.为0,LabVIEW 将不插入精度。与字符串参数配合使用时,.Precision指定扫描字段的最大宽度。LabVIEW截取的字符串比该长度更长。 _Significant Digits-显示舍入为指定位数的数据。LabVIEW仅为显示之目的,对数据进行舍入,并不影响原始数据。.Precision仅仅影响小数点右边的位数,_Significant Digits包括所有非空白位数。例如, ? 3.457有4个有效位数 ?0.0012有2个有效位数 ?123000有3个有效位数 注:一个百分号代码中不可同时使用精度和有效位数。 对于单精度浮点数,建议将_Significant Digits设为1-6之间的值。对于双精度和扩展精度浮点数,建议将_Significant Digits设为1-13之间的值。 {Unit}(可选)使用该函数转换物理量时(带单位的值),将覆盖VI的原单位。必须使用兼容单位。该语法元素只能与格式化写入字符串函数配合使用。 包含一个有具体时间的格式字符串。关于合法格式字符串,见时间格式字符串的格式码。只有%W、%D、%H、%M、%S 和%u用于相对时间。

相关文档
相关文档 最新文档