上周我给了某人一些LabVIEW 的建议,他认为这是一个很好的小技巧,所以本周我就讲这个吧。当你使用面板上的上色工具(也被称为调色板)时,你可以通过右键,然后在调色板中选择想要的 颜色。但是,如果你想要的颜色在面板中的一些地方(甚至其它VI)已经存在的话,那么将有个更快捷的方式来实现!当使用上色工具时,如果你按住Ctrl 键,你会看到你的上色刷变成了一个小的“吸管”工具。在LabVIEW研发部门,我们把它叫作“吸色工具”,因为现在你点任何控件,它都会自动将该对象的 颜色直接复制到调色板中。然后,当你释放Ctrl键后,你的上色刷将能使用刚才选择的颜色。试一下吧!这个比原始的方法可方便多了!


LabVIEW7i:
试过了,的确好用!

RM2:
在图标编辑时一样可以使用(画笔和吸色管利用按下Ctrl键来互换)。


 

这个技巧有点酷。
       如果在你的程序框图中有一个函数有
2个输入,你可以非常方便地调换两个输入的位置。如果你使用连线工具在其中一个输入口上盘旋时(对于自动连线模式也适用),那么你可以按下Ctrl键,你的连线工具会变成我称之为“switcheroo”工具,有点像一个剪刀曲线(象个花8)。当然,通过这个可见的工具,你可以简单地按左键,你会看到你的输入交换了位置。


LabVIEW7i:
的确有些酷!
因为无法获得剪刀曲线的图像,所以没办法展示在这里。
对于Mac电脑是“option"键。
注意:仅仅对2个输入端的函数有效,多于2个输入端的将不会出现“switcheroo”工具。


 

        本周会有一个关于图标和一个关于连线板的技巧。


图标(Icon)——当大家为一个VI 创建图标时,你是如何从一个空白的带框的图标开始的?之前我是这么做的……我会在图标编辑器上双击一下“选择矩形”,从而选择整个图标,按删除键来删除所有内容,然后双击空矩形来创建一个黑的边框。其实有一个更快捷的方式在图标编辑器中创建一个空图标——直接双击填充矩形(就在空矩形的旁边),如果假定你的VI缺省颜色是黑/白的话,那么这个简单的双击就会创建一个带黑色边框的空白图标。


LabVIEW7i:
      啥也别说了,之前我也是一步一步作的,现在好了可以很快、很方便的实现了!



连线板 (Connector Pane)——这是升级到LabVIEW 8.0以上的另一个理由。在LabVIEW 7.1以及前期版本中,当你创建一个新的VI,如果想显示其连线板,它会“自动”地包含你在前面板放置的控件数量的空白。这个隐性的操作行为违背了一般的 LabVIEW设计风格,因此,在LabVIEW 8.0之后的版本中,当创建一个VI后,默认的是一个最熟悉的4*2*2*4的连线板。


 

         这周的小技巧关于前面板控件引用(Reference)。

      
     如果你在面板上需要一个控件的引用(比如当你想要将一个控件引用输入子VI时),一般而言,你会通过Refnum控件选板去选择一个控件引用然后放置在前面版上,并右键,然后选择适合的类(Class)。
     此外,有些时候,如果你需要处理一个可能会有多于1种数据类型的控件类时(比如一个单选列表框和多选列表框),你必须用右键,然后选择“Include Data Type”。如果你处理的控件数据类型并不是该控件的“常用”类型时(比如一个数组类型的列表框),那么这个问题会更加迷离。


       其实有一种更为方便的方法在前面板上创建一个特定类、特定类型的控件引用。假如在前面板中你已经有了一个现成的控件(比如一个列表框),那么只需要在前面板放上一个控件引用,然后按下Ctrl键,并用鼠标讲控件拖入控件引用即可。你可以看到控件引用自动地就会自适应为被拖拽控件的一个合适的类和数据类型。


 

        其实,很多LabVIEW 高手应该都知道这个技巧,不过对于不知道这个技巧的LabVIEW开发者来说,如果知道或了解它将大大节省你的开发时间!
       比如,你想滚动Cast结构的条件桢时,通常你会按最上部的左/右键,或者你可以按下键来得到条件桢的所有列表并选择一个。
        好,公布这个技巧!
        其实你可以通过你的鼠标的滚轮来切换。只需要讲鼠标光标移动到Case结构的空白处,按下Ctrl键,然后用鼠标滚轮来切换所有的条件桢。

        几年前我就发现了这个小技巧,我当时觉得是最酷的一个技巧……我每天都会用它很多次。这个小技巧在其它多桢结构中也都能使用(比如事件结构),以及Stacked顺序结构中。


 

        本周会有两个关于前面板数组的小技巧。

      
      如果你在前面板有一个数组,如果你想很快地知道数组中有多少个元素,那么你可以右键点击该数组,然后选择
Advanced->Show Last Element,这样数组索引会自动切换从而显示该数组的最后一个元素。在我知道这个技巧之前,我一直是用箭头键来增加1000、100、10以及1,从而找到数组的最后一个元素。



      此外,如果你在使用LabVIEW 8.0或以上版本,你会注意到数组中使用滑动条这个新特性。只需要右键点击数组,并且选择Visible Items->Vertical(and/or Horizontal)滑动条,你就可以很方便地滑动浏览数组的内容,直到你找到最后一个元素(或者其它你在寻找的元素)。


注意:

      在本站的csxcs_366博客的LabVIEW Nugget专栏中,LV Nugget(12)也介绍过这个技巧,并配合使用了图片进行讲解。

 

      你之前使用过Merge Error.vi吗?如果你曾经监测过你的应用程序的运行性能,那么你可能会惊奇地发现Merge Error.vi需要花费很长的时间去执行,主要是因为在每一个输入的错误中,该VI必须要同时检查警告与错误。如果你在需要合并两个错误的地方放置代码,你并不会在意警告的话,那么你可以通过利用Select内置函数来达到目的:

         Select 内置函数(在Comparison函数板)可以将一个错误簇当作一个条件输入,并且它通过错误簇的“status”值来判断真/假条件。因此,对这两个错误输入簇,你可以通过Select内置函数输出第一个错误簇(如果包含错误的话),或者输出第二个错误簇(不包含错误的话)。我在我所有的用户界面VI中都用了这个技巧。


 

        本周的小技巧是介绍关于使用Open VI Reference内置函数时的一些很酷的快捷方法。其中最常用的操作就是获得与本VI的存存储位置相同的另一个VI的Reference。当我刚开始学习使用LabVIEW进行编程的时候,我就是这么来做的。


        后来,有些人告诉了我一个技巧,我并不需要用Strip Path函数,我只需要通过Build Path函数来构建一个相对路径即可,如右图所示:


      好了,在之后的某天,我又学到了一个更好的方法:

       对的,如果你讲一个路径常量连入Open VI Reference函数时,路径常量如果只简单地包含了VI名,那么Open VI Reference就会在当前VI相同的路径/LLB中寻找这个VI!这个方法在LabVIEW 6.0以上都可使用!


 

      不知你注意到没有,在LabVIEW 8.0中的Comparision函数板中有一个“Empty Array?”函数。你可以连一个任何数据类型和任何维数的数组,它会返回一个布尔值显示连接的数组是否为空。
       这样就比我们之前做的事情要方便多了,之前我们会使用Array Size函数来检查数组的长度……如果数组是两维或者多维,那么这种办法就更麻烦了,你就需要将Array Size的输出乘起来作为参考值。

对应中文版见下图(LabVIEW8.5.1)



      Comparison 函数板上的另一个函数为“Empty String/Path?”。但是你知道吗?这个函数可以告诉你除了字符串和路径之外的其它东西也是否为空。大概至少有5个不同的数据类型可以通过这个函数来检查是否为空。除了字符串与路径之外,你也可以使用该函数来确定一个变体(variant)、图片、或者DSC Tag是否为空。之前我用过这个技巧,来判断一个变体是否为空。我在程序框图中检验了变体是否为空,如果为空,我会假定用户没有连接任何东西在子VI的输入口。

对应中文版见下图(LabVIEW8.5.1)


 

       如果你仅对一个字符串进行字符搜索(单个字符或者多个字符),建议你最好优先考虑使用在String->Additonal String Function 函数板中的Search/Split String函数。这个函数对于简单的字符搜索比Match Pattern函数有效率很多。
       如果你确实需要用到模式匹配的功能的(比如你需要搜索像\.[Tt][Xx][Tt]$.这样的匹配符),那么你就需要使 用Match Pattern函数;如果你只是搜索“txt
,那么只需要使用Search/Split String函数即可。



String->Additonal String Function 函数板中的Search/Split String函数
对应中文版见下图(LabVIEW8.5.1)


String->Match Pattern 函数
对应中文版见下图(LabVIEW8.5.1)


其它感兴趣的LabVIEW爱好者说道:

      Ben:
      经过我的测试,使用
Search/Split String函数比使用Match Pattern函数快8倍。



       虽然有些人已经编写LabVIW多年(例如我就用了7年),但是每次都会学到新的东西。上周我才刚发现,如果你按住Ctrl键,然后双击一个子VI,那么该VI的前面板和后面板都会同时打开。我以前都是先双击,再加Ctrl+E来达到同样的效果,现在可以更方便了。