在处理双精度数时,经常会涉及到拆分双精度数的整数和小数部分。有一下几种解决方案:
 
一、解决这个问题我们首先想到的可能是通过几个取整函数,先求取整数部分,然后利用差值求取小数部分。取整函数包括最近取整、向上取整、向下取整,由于涉及到舍入的问题,所以拆分起来比较困难。
 
二、利用字符串的丰富函数拆分。双精度数转换为字符串后,通过查找小数点的位置,把字符串分解为两个部分,然后再转换为数值。
 
三、利用求商和余数函数拆分。这是我今天要介绍的一个小技巧,对于求商和余数函数,任何情况下,返回的商都是整数,而余数可以是小数,也可以是整数。利用除数为1,就可以拆分双精度数,如下图所示。
 
Picture
 
我们知道LABVIEW提供了多种常量,其中最多的为数值型常量。通常建立数值型常量有多种方法:
一、利用函数选板
二、直接拖动前面板数值控件到程序框图,这种方式最为简介明了。
三、在程序框图中,克隆已有的常量(CTRL+拖动称为克隆)
四、利用控件接线端子的快捷菜单,选择创建常量。
今天要谈的是第一种方法中的一个小技巧,通过函数选板建立数值型常量。
Picture
建立的数值常量为I32数据类型,如果我们需要修改它的数据类型,一般是通过常量的快捷菜单。
 
Picture
通常情况下,我们需要创建DBL型数字常量。通过函数选板创建I32数字常量后,常量具有焦点,直接通过键盘输入0.0,则常量自动变成双精度数据类型。
 
 
单选控件是WINDOWS常用控件之一,但是直至LABVIEW 7.1后,LABIVEW才提供了RADIO控件。早期实现单选控件比较复杂,需要多个布尔控件,通过编程,使各个布尔控件之间互锁。

WINDOWS编程中,使用的单选框通常是无边框的,LABVIEW中的单选控件则不然,使用颜色透明方法是无法消除边框的,如下图所示:
 
Picture
一般情况下,新式控件中很多是不能通过颜色工具去除边框的。这种情况下,可以尝试相同类型的古典控件,经典控件一般都可以通过颜色工具去除边框。如下图所示:
 
Picture
 
不管我们使用了LV多长时间, 总是有很多地方我们没有看到的,这几天我的几篇文章讨论的都是已链接控件的引用和未链接控件的引用以及属性节点和方法节点等等。直至今天我才发现LV给我们提供了更好的方法来创建未链接控件的属性节点和方法节点。
 
还是以多列列表框为例:
 
Picture
多列列表属性节点的快捷菜单中,断开链接控件,则已链接控件的属性节点转换为严格类型的未链接控件的属性节点,方法节点(调用节点),也是如此。

反之,对于未链接控件的属性节点,通过“链接至”,可以链接到前面板中的对应控件,变成已链接控件。

通过未链接控件的属性节点的快捷菜单,创建输入控件,则会自动创建一个通用控件的引用.
 
Picture
 
在上面这篇文章中我谈到了创建通用引用的两个简便方法。我们创建通用引用的目的是通过通用引用的属性节点和方法节点等修改引用所指向的对象。这与我们直接创建前面板中控件的引用的目的是一样的。
 
我们必须注意,LV中的数据都是以输入控件、显示控件和常量的方式存在的,通用控件的引用本身也是一种特殊的控件,这导致了许多初学者在使用通用引用时出现了问题。(实际上他是创建了通用控件引用的引用——转载者加注)

NI论坛上有几个帖子就出现了这样的问题,我简单了回答了一下,但是网友无法理解,发邮件希望我给解答一下,在这里我一并回答这个问题。

帖子地址为:
http://forums.ni.com/t5/NI-LabVIEW-CVI-数据采集等产品讨论区/两个难题-关于显示数据和调用节点/td-p/1398578

下面就来解答这个问题:
 
对于前面板中的控件,可以直接通过控件的快捷菜单创建它的引用、属性节点、调用节点、常量、局部变量等等,以多列列表框为例,直接利用控件的快捷菜单。
 
Picture
在程序框图中的控件的接线端子中,同样可以利用接线端子的快捷菜单,创建指向控件的引用、属性节点等,与控件的快捷菜单功能是相同的。
 
Picture
我们知道,对于前面板中的控件,直接创建它的属性节点和调用节点时,是不需要连接引用的,这是因为我们通过快捷菜单创建时候,LV自然知道创建的属性节点和调用节点是指向这个特殊控件的。
 
实际上,我们也可以通过控件的引用,间接创建这个控件的属性节点和调用节点,在应用控制函数选板中提供了很多与引用有关的操作,包括属性节点和调用节点。

Picture
箭头所示的属性节点和调用节点在使用时候必须连接控件的引用,也就是说这里的属性节点和调用节点是通用的,不指向任何特定控件的,只有连接一个引用的时 候,它才会指向一个特定的控件或者特定的控件类型,指向特定的控件如下图所示,指向特定的控件类型则是我们将要重点讨论的。
 
Picture
红色框中所示的就是利用控件的引用和通用属性节点和方法节点,实现的功能是和框图左侧部分相同的。

如上图所示,如果简单的要使用控件的属性节点和方法节点,那么利用通用属性和通用调用方法似乎是没有意义的。的确是这样,通用属性节点和调用方法更为重要的意义在于它和通用控件引用相结合。

请参考上面的帖子,为什么网友会出现那样的问题?
 
Picture
从上面的图中,我们可以看出,网友已经成功地床架的多列列表框控件的引用。我们应该注意,这个控件引用在前面板上本身也是一个控件,所以网友通过这个控件 的快捷菜单创建的调用节点是直接指向前面板中的控件的,这不是我们希望的。这样实际创建的控件的引用的控件的调用方法,我们需要的是控件的引用的调用方 法。这有点类似于创建了C语言中指针的指针。因此在上面的快捷菜单中我们看不到列表框的属性和方法。
 
下面就是我们这个Nugget的内容。通过通用控件引用,创建属性节点和调用节点的方法.

1、对于通用控件,前面板中控件的快捷菜单和接线端子的快捷菜单是不同的。
 
Picture
我们这里创建的指向特定控件类型的属性和方法,但是并非指向特定控件的,只有在主VI中传递了一个列表框的引用,此时才会真正指向一个特定的控件。
 
2、第二种方法就是直接利用引用程序控制函数选板中的通用属性和通用调用节点。
 
Picture

顺便解答一下网友的另外两个问题:

快速表格控件在添加方式时,自动重置应设置为FALSE,只有把它放在WHILE连续运行时,才能看到添加效果。单次运行无所谓添加。

如果要操作EXCEL文件,应该使用报表生成工具包,它实际上是利用自动化服务器技术,封装了其中的细节,当然我们也可以直接利用ActiveX技术,但是要求必须熟悉EXECL自动化服务器。


 

 
上面这篇文章是我开始这个博客时写的文章,其中介绍了创建通用(不指向任何特定控件)引用的方法。文章中首先了介绍了利用控件选板建立通用引用的方法,然后介绍了利用拖动建立通用引用的两个简便方法。
 
这两个简便方法非常小巧,应该收录在Nugget中。

1、利用控件选板,在前面板放置一个控件引用句柄和一个实际控件,拖动实际控件到控件引用句柄中,就建立了和实际控件相同类型的通用引用,下图中以列表框为例。
 
Picture
建立的通用列表框控件引用如下图所示
 
Picture
2.在前面板中放置一个控件,通过快捷菜单创建这个控件的引用,在程序框图中,拖动这个引用到前面板,即可创建与这个控件同类型的通用引用。
 
Picture
Picture
 
几天前,看了一位网友写的LV程序。显然这位网友刚刚使用LV编程不久,存在很多问题。对于我们使用LV很长时间的编程者,很多用法是很自然的,手熟而已,但是对于初学者来说,这些用法可能是宝贵的技巧。今天我们谈谈数组索引的用法,首先从一维数组谈起。
 
1、一维数组的首个元素对应的索引值为0,也就是说索引从0开始,有些编程语言数组的索引是从1开始的,所以这点必须明确。
 
Picture
2、索引数组函数中使用的数组索引端子可以不连接,默认连接的为0。因此要取出数组首个元素,上图可以简化为
 
Picture
3、索引数组函数中使用的数组索引是无边界的,当索引超出实际数组长度时,返回对应数据类型的默认值。
 
4、使用索引数组函数可以同时索引多个数组元素。下图所示的例子在初学者编程中经常遇到,这是我最近遇到初学者的用法。
 
Picture
上述操作使用一个索引数组函数即可以实现,如下图所示。
 
Picture
如果索引数组函数的索引端子不连接,首个索引端子使用默认值0,一下索引依次自动递增,上述操作可以简化入下。
 
Picture
5、索引数组中的一段或者几段。当数组索引给定一个值后,其后不连接的索引端子依次递增。因此对于要取出连续的一段元素,可以简化编程,如下图所示。
 
Picture
以上是一维数组索引的几种用法,二维数组索引变化更多,需要多加体会。
 
 
LABVIEW中,控件是数据的容器,数据包含在控件中。一种控件可以代表多种数据类型,比如数值型控件可以代表I8、U8、I16、I32、SGL、 DBL等等。不同形式的控件可能代表相同的数据类型,比如布尔型控件,具有多种不同的外观,但是包含的数据类型是相同的,均表示布尔类型。

毫无疑问,LABVIEW本身是完全清楚控件当前代表的数据类型,比如我们在VI的端子中,通过快捷菜单,选择创建输入控件或者显示控件,会自动创建对应 数据类型的控件。在程序框图中连线时,不同颜色、不同线形的连线代表不同数据,LABVIEW非常清楚连线代表的数据类型。

LABVIEW通过控件的类型描述符来确定其代表的数据类型,因此我们也完全可以通过类型描述符来解析控件中包含何种数据类型。OPENG中提供了大量操 作类型描述符的函数。
如果我们需要了解控件中包含的数据类型,有如下几种常用方法。

1、使用OPENG函数
 
Picture
2、使用LABVIEW未公开函数

LABVIEW本身使用了大量的内部函数,这些函数未列入帮助文件,也未列入函数选板。其中GetTypeInfo.VI和上面的OPENG函数功能相同。

 
Picture
使用方法如下图所示
Picture
该函数返回控件包含的数据类型和控件的标签名。

三、利用控件类C TYPE私用属性节点

  
Picture
C TYPE属性节点返回一个字符串,表示控件的数据类型在C语言中是如何表示的,通过这个属性节点,就可以判断出控件所包含的数据类型。

 
 
首先谈一下如何在INI文件中添加注释:
以;号开头的行在INI文件中解释为注释。
在INI文件中加入下列项目设置程序框图背景色,RGB格式。
diagram.background=00FF00
00FF00表示设置程序框图背景色为绿色。
在INI文件中加入下列项目设置函数、结构元素的颜色。
diagram.primColor=FF0000
FF0000表示设置为红色。
具体效果如下图所示:
 
Picture
 
在LABVIEW.INI文件中添加下列项目可以设置前面板的背景色,RGB格式。
panel.background=FF0000
FF0000表示设置前面板背景色为红色。
 
Picture