今天,我们来讨论一下你可能不知道的Flat Sequence结构的知识点。你先看一下下面两个程序框图:


        他们看上去好像在做同样一件事,是吗?其实不是!一个关于
Flat Sequence结构的事实是,只要单独的桢没有任何外在的数据流依赖,那么它就会执行。因此,在第一个例子中,整个Flat Sequence结构都必须等到While循环结束才开始执行。但是在第二个例子中,Flat Sequence结构的第一桢与While循环并没有依赖关系,而第二帧需要等While循环结束后才能执行。有些时候如果你发现程序并没有按照你所期望 的方式运行时,看看会不会是这个问题所在。


        你可能会问,为什么会出现这种情况呢?其实,在开发Flat Sequence Structure的时候,LabVIEW研发人员决定允许如下图的这种连线方式。


      因此,为了支持这种连线方式,Flat Sequence结构的第一桢就显然必须在第三帧有它的输入时才能运行(而正是第一桢给予了第三桢的这个输入)

 

      有人仔细观察过LabVIEW8.0中的字符串函数选板吗?

       在第四行有个奇怪的新常量,是什么?对的,它就是新的空格常量。现在你就不需要被程序框图中出现很多空的字符串而迷惑了。即使以前你用“\”的显示方式,你也必须承认,现在的这个空格常量看上去可比“\s”要酷很多。

 

        本周的技巧比较简单。如果你在一个字符串控件中输入文本内容,你可以按Shift+回车键来切换字符串控件是否显示滚动条。如果这是你第一次在输入字符串常量时按Shift+Enter键,那么该常量会自动调整尺寸来显示所有包含的内容。试一下吧!



LabVIEW7i:
我用LabVIEW8.5.1试了一下,没有发现这个特性。

后来在讨论中,Darren谈到,这个技巧是针对“字符串常数”的,而不是字符串控件。

实际上,在字符串常量中输入文本时,用鼠标右键单击该常数在快捷采单中选择:调整为文本大小,
那么该常量会自动调整尺寸来显示所有包含的内容。


 

      这个技巧在LabVIEW论坛中一直被讨论过很多次,但是我仍然希望将它写成一个正规的Darrens Nuggets。
      如果在你的UI界面上,有一些东西需要花很长时间去更新(比如最常见的就是对于Tree控件的更新),你可以在你的代码前后用 “Defer Panel Update”操作。通过在前面板设定这个属性,你可以告诉LabVIEW你并不需要“画”任何需要画的东西。这个做法可以在当你做一些大规模界面更新 (比如一下添加很多Tree的内容)时,很实在地加快你的代码运行速度。然后,一旦你的更新结束,你可以再将这个属性重新使能。此外,你也可以使用Set Busy.vi以及Unset Busy.vi来实现在更新时鼠标为一个漏斗图标,这样用户根本无法在面板中改变任何事情。下图是一个最典型的Defer Panel Update属性以及Set/Unset Busy VI的一个程序框图:


LabVIEW7i:
这绝对是一个好方法。
但应该属于VI设计,而不属于LabVIEW Nugget.


 

请查看一下在LabVIEW 8.0以上版本附带的一个VI。
[LabVIEW]\vi.lib\utility\MD5Checksum.llb\MD5Checksum file.vi
这个LLB 在Developer Zone中可以下载,但是我还是决定在LabVIEW 8.0中附带这个VI。这个VI是一个很好的, 100%的基于LabVIEW编写完成的MD5算法,用于生成校验码。我之前利用这个VI做了很多事情,比如对一个安装包生成的文件与用于创建安装包的文件进行校验对比。另一次我使用这个VI是我需要在一个项目中有一个可以对文本文件进行分析和解析的作用。再有一次,我需要读取文件,我在磁盘中比较了现有版本与旧版本文件的校验码。

如果想了解更多关于MD5算法,可以查看 http://en.wikipedia.org/wiki/Md5


 

LabVIEW 7.0之前版本,你可以高亮在面板中的多个对象,然后按Ctrl+A来执行你最近的一次排列对象操作。在LabVIEW 8.0及以上版本中,按Ctrl+A现在实现的是“选中所有”的操作。这样使得Ctrl+A快捷键与其它软件功能更为一致。以前的Ctrl+A功能则变为 了Ctrl+Shift+A。


LabVIEW7i:
实际上好多实用技巧都来自快捷键的使用方法。


 

又是一个LabVIEW 8.0以上版本适用的小技巧。你可以使用Ctrl+Tab键在你的系统中切换所有打开的LabVIEW窗口。这个组合键比传统的Alt+Tab要快一点,而且只是切换所有LabVIEW的窗口。


LabVIEW7i:
的确这是一个好技巧,Ctrl+E只是用来切换指定的某个VI,而Ctrl+Tab是轮流切换所有已经打开的VI。当我们打开多个VI时,这个方法很实用。


 

      这个很酷的小技巧是我之前的技巧讨论过程中得到的,很多人叫我把它也作为一个技巧发布,所以就有了这个帖子。如果你在另一个应用软件中设计VI 图标(比如Microsoft Paint),你可以直接将Windows浏览器的图片文件拖拽到你的VI窗口右上角的图标区。它会自动地更新为该VI的图标。我试了很多不同的图片类型,这个技巧适合BMP、JPG、GIF以及PNG文件,但是好像不支持 TIF文件。


LabVIEW7i:
但是只能拖拽到前面版的图标区中,并且自动匹配图片的大小。


 

LabVIEW 8.0以上版本中,你可以在你的VI运行时,将它的前面板设置为透明。这个可以在你使用“floating”作为前面板窗口属性时轻松实现,但是有时候你 可能依然希望能够看到桌面上的所有东西。那么为了在这样的设定中也能实现,你可以设置VI Properties > Window Apperance > Customize > Window Runs Transparent。这样你可以用一个0%到100%的值来设定窗口的透明度。


LabVIEW7i:
试倒是试过了,可是有什么用还搞不清楚???

下面是设定为80%时的截图


 

本周的LabVIEW小技巧是我上周才发现的,在LabVIEW 8.0以上版本可用的。“Format Into String函数现在允许你来自主地指定输入值在格式化字符串中的显示顺序。例如,如果你将4 个字符串输入到Format Into String函数中,而你的字符串输出格式为“%s %s %s %s”,那么输出字符串会按照输入的顺序进行显示。但是如下图中所示,你可以看到,现在有办法在格式指定中指定输入值显示的顺序。按照如下图的例子,通过 使用“%n$s”这样的通配符,其中“n”是连线输入的位置,那么你就可以动态地改变输出字符串中对于输入值的顺序了。试一下吧!