LabVIEW创建自定义输入控件、显示控件和自定义类型3
连接自定义输入控件和显示控件并保存到一个自定义输入控件或显示控件文件
在VI中使用自定义输入控件或显示控件后,该VI中自定义控件的实例与所保存的控件间的连接将不复存在。自定义输入控件或显示控件的每个实例是一个单独、独立的副本。因此,改变自定义控件并不影响正在使用该自定义控件的VI。如需使自定义输入控件或显示控件的实例与自定义输入控件或显示控件文件相连接,可将该自定义输入控件或显示控件另存为一个自定义类型或严格自定义类型。一个自定义类型或严格自定义类型的所有实例与其原始文件相连。
将自定义输入控件或显示控件另存为一个自定义类型或严格自定义类型后,对该自定义类型或严格自定义类型所作的任何数据类型改动将对所有使用这些自定义类型或严格自定义类型的VI实例造成影响。与此同时,对严格自定义类型所作的外观改动也将影响前面板上该严格自定义类型的所有实例。
自定义类型和严格自定义类型
自定义类型和严格自定义类型可将所有自定义输入控件或显示控件的实例连接到已保存的自定义输入控件或显示控件文件。编辑已保存的自定义输入控件或显示控件文件可修改所有自定义输入控件或显示控件实例,以便在如干个VI中使用相同的自定义输入控件或显示控件。
自定义类型
自定义类型为自定义输入控件或显示控件的每个实例指定了正确的数据类型。如自定义类型的数据类型发生改变,则该自定义类型的所有实例将自动更新。换言之,在使用了该自定义类型的每个VI中,各实例的数据类型将改变。然而,由于自定义类型仅规定了数据类型,仅有数据类型那部分的值被更新。例如,数值控件中的数据范围便不是数据类型的一部分。因此,数值控件的自定义类型并不定义该自定义类型实例的数据范围。同时,由于下拉列表控件各选项的名称没有定义其数据类型,因此在自定义类型中对下拉列表控件中各选项的名称进行改动将不会改变自定义类型实例中各项的名称。如在一个枚举型控件的自定义类型中改变其选项名称,由于选项名称也是枚举型控件数据类型的一部分,因此其实例将发生更新。自定义类型实例可拥有其唯一的标签、描述、默认值、大小、颜色,或设定其风格为输入控件或显示控件,如滑动杆或旋钮。
如改变一个自定义类型的数据类型,LabVIEW将尽可能把该自定义类型实例的原有默认值转换为新的数据类型。如数据类型被改为一个不兼容的类型,如数值控件被替换为字符控件,则LabVIEW将无法保留实例的默认值。如自定义类型的数据类型被改为其先前所无法兼容的数据类型,LabVIEW将把该自定义类型的默认值设置为用户在.ctl文件中指定的值。如用户未指定默认值,LabVIEW将使用相应数据类型的默认值。例如,如自定义类型从数值改为字符串,则LabVIEW将把与先前数值型数据类型相关的所有默认值替换为空字符串。
严格自定义类型
严格自定义类型将把实例除标签、描述和默认值外每个方面强制设置为与严格自定义类型相同。对于自定义类型,严格自定义类型的数据类型将在任何使用该严格自定义类型的场合下保持不变。严格自定义类型也对其他值进行了定义,如对数值控件及下拉列表控件中控件名称的范围检查。严格自定义类型可使用的VI服务器属性仅限于对控件外观产生影响的属性,包括可见、禁用、键选中、闪烁、位置和边界。
注: 如将一个常量连接至严格自定义类型,常量不会跟着严格自定义类型的变化而变化。严格自定义类型要求其全部实例都保持一致的外观。在程序框图上,外观属性无法实现。常量仅仅出现在程序框图上,所以无法保持严格自定义类型的外观属性。
将实例与严格自定义类型移除连接,可阻止自定义类型实例进行自动更新。
创建和编辑自定义类型和严格自定义类型
可在前面板和程序框图上创建和编辑自定义类型或严格自定义类型。控件编辑器窗口和自定义控件的各种技巧也适用于创建和编辑自定义类型。
阻止自定义类型实例的自动更新
右键单击实例,取消快捷菜单中勾选的从自定义类型自动更新选项,可阻止当自定义类型的数据类型改变时,自定义类型的某个实例进行自动更新。取消勾选从自定义类型自动更新可阻止实例在自定义类型的数据类型发生改变时进行自动更新,但仍保留实例与自定义类型的连接。如需断开实例与自定义类型的连接,可右键单击实例,从快捷菜单中选择断开连接自定义类型。
注: 将实例与严格自定义类型移除连接,可阻止自定义类型实例进行自动更新。
如禁用自定义类型实例的自动更新并改变实例或自定义类型的数据类型,则该实例将显示为灰色且运行按钮显示为断开。如要手动更新实例,右键单击实例并选择从自定义类型查看和更新,显示从自定义类型查看和更新对话框。如要启用应用程序运行时不更新该实例,右键单击实例并从快捷菜单选择断开连接自定义类型,将永久性移除实例与自定义类型间的连接。
手动更新自定义类型实例
如自定义类型实例显示为灰色,用户必须使用从自定义类型查看和更新对话框手动更新实例。
如自定义类型的数据类型发生改变,LabVIEW将尝试更新自定义类型的全部实例。如更新实例时,LabVIEW不能将上一个默认值映射至已更新的控件或常量,LabVIEW将把这些实例置为未解决的状态。未解决的实例显示为灰色,且实例所在的VI的运行按钮显示为断开。如要解决数据映射问题,必须手动更新实例。或移除未解决的实例与自定义类型之间的连接,应用程序才能运行。
移除实例与自定义类型或严格自定义类型的连接
右键单击实例,从快捷菜单中选择断开连接自定义类型,可永久断开自定义类型或严格自定义类型与其实例间的连接。断开与自定义类型或严格自定义类型的连接将取消实例使用数据类型的限制,令实例成为一个输入控件或显示控件。
不可用的自定义类型和严格自定义类型
对于每个自定义类型或严格自定义类型实例,含有该实例的VI将与保存该自定义类型或自定义类型文件保持连接。如VI含有需要运行的自定义类型或严格自定义类型实例,则VI必须具备含有该自定义类型或严格自定义类型的文件。如VI已打开而LabVIEW无法找到该VI所需的自定义类型或严格自定义类型,LabVIEW将禁用该VI中的自定义类型或严格自定义类型实例,运行按钮也将显示为断开。如需VI运行,应找到并打开正确的自定义类型或严格自定义类型。也可右键单击被禁用的实例,从快捷菜单中选择断开连接自定义类型以永久断开实例与自定义类型或严格自定义类型的连接。
使用自定义类型和严格自定义类型
自定义类型和严格自定义类型可以像任何自定义输入控件或显示控件一样,放置于前面板或程序框图上。右键单击自定义类型或严格自定义类型实例,其快捷菜单包括各种自定义类型的选项。如需从前面板或程序框图打开自定义类型或严格自定义类型,可右键单击实例,从快捷菜单中选择打开自定义类型。
程序框图上自定义类型或严格自定义类型的左上角的符号表示当前的类型实例。将鼠标移至该符号,提示框将显示自定义类型或严格自定义类型的名称。修改自定义类型将对程序框图上的实例造成影响,即程序框图上的实例根据前面板上所作修改相应发生改变。
注: 如改变一个严格自定义类型,放置在程序框图上的常量显示为非严格类型,只有数据类型改变,常量才会相应改变。例如,如更新一个严格自定义类型下拉列表控件中的字符串值,LabVIEW不会更新放置在程序框图上该严格自定义类型常量,因为字符串值不是下拉列表控件的数据类型。
使用簇自定义类型和簇严格自定义类型
如将簇自定义类型或簇严格自定义类型放置于前面板,可用程序框图上的按名称捆绑函数及按名称解除捆绑函数访问簇的元素。与捆绑函数和解除捆绑函数按照簇顺序引用簇元素不同,“按名称捆绑”函数和“按名称解除捆绑”函数按照名称引用元素。因此,元素的重新排序、向簇自定义类型或簇严格自定义类型添加新元素均不会使VI断开。
对于簇自定义类型或簇严格自定义类型,与“按名称捆绑”函数和“按名称解除捆绑”函数连接后,如其中某个元素被删除,则该丢失元素的引用便无效,从而必须对程序框图进行修改。“按名称捆绑”函数和“按名称解除捆绑”函数中的无效名称显示为黑色。单击“按名称捆绑”函数和“按名称解除捆绑”函数将打开有效名称的列表,可视需选择其中的名称。
对簇自定义类型或簇严格自定义类型中的控件创建引用时,LabVIEW使用簇的顺序来决定引用指向簇中的哪个控件。如从簇自定义类型或簇严格自定义类型中删除一个控件,引用指向的控件可能会产生错误。从簇自定义类型或簇严格自定义类型中删除一个控件时,确保各个引用仍指向原簇控件。
楼主最近还看过