变体数据类型简介

LabVIEW是一种图形化编程语言,所以也叫G语言,在程序框图上连线时,必须相同类型或者能强制相互转换的类型端口才能连接在一起,例如我们不能将一个数值型的控件连接到布尔型的控件上,也不能将一个数组类型的控件连接到簇类型的控件上。

但是,有时候我们需要设计的子程序具有更强大的灵活性,在一个连接端口上能接入不同的数据类型,在程序内部能自动识别其原始的实际数据类型,然后分别进行不同的处理,这时候变体数据(Variant data)类型就派上用场了。

变体数据类型类似于C语言中的void类型的指针,它可以兼容任何数据类型。LabVIEW提供了一组函数用于操作变体数据,其位于函数面板的“编程”-->“簇、类与变体”-->“变体”子面板中,主要包括了下面几个函数:

在上面函数中,使用“转换为变体”和“变体至数据转换”可以使LabVIEW常规数据与变体之间进行相互转换。

同时,变体除了能兼容任何数据类型外,它还可以通过变体属性的形式保存其它附加信息。变体属性是一些键值对,可以包含任何信息。如在保存采集数据的同时,可以在变体中保存一个“时间”属性,用以保存数据创建的时间。变体的属性值可以是任何LabVIEW支持的数据类型。

下面通过两个例子说明在LabVIEW中,如何对变体数据类型进行编程。

示例1:变体基本编程方法

这个例子产生一个幅值为1,点数为128点的正弦波形数据,该数据为double(双精度浮点型)类型的一维数组,然后将其转换为变体数据,为变体数据添加一个“数据长度:”属性,设其值为波形数据数组的长度,然后读取该属性的值在前面板上显示,最后调用“变体至数据转换”函数再转换为一维数组,放到波形图上进行显示。软件前面板如下图所示:

程序框图如下图所示:

需要注意的是,使用“获取变体属性”函数时,除需要属性名称参数外,还需要一个默认值参数,这个参数本身也是个变体类型的数据,可以连接任意类型的数据,这儿存储的是数组的长度值,为I32类型的变量,所以给了一个I32类型的常量值0。

使用“变体至数据转换”函数时,也需要一个类型参数,对应于实际的波形数据类型,这儿给的是一个double型的一维数组,这样才能将变体数据正确转换为一维波形数组进行显示。

示例2:变体的综合应用编程

这个例子的功能是,对于前面板上的任意一种类型控件,要求能够将该控件的名称及其值以字符串的形式输出并显示。如对于某个数值控件,其值为3.14159,则输出的字符串结果为:“a = 3.14159”。为说明该程序能适应任意类型的控件,本例前面板放置了三个不同类型的控件,其字符串结果放到了一个字符串数组里面进行输出,如下图所示:

程序框图如下图所示,其基本思路是将三个不同类型的控件分别转换为变体后组成一个一维数组,在For循环里面对每个变体分别进行解析得到结果字符串,在For循环外得到包含三个结果字符串的一维数组,即为最终的输出结果。

代码的关键地方是,在For循环内部如何自动判断每个变体对应的实际数据类型及其名称。

这儿用到了一个关键函数“GetTypeInfo”,其并未在函数选板中出现,但它是一个非常有用的隐藏函数,其位置为LabVIEW软件安装目录下的“vi.lib甥楴楬tyVariantDataType”目录中,在这儿可以找到这个函数。该函数最大的功能是可以告诉我们变体内部对应实际数据的名称和类型。其返回的类型是一个枚举类型的值,包含LabVIEW中支持的所有数据类型,如下图所示(仅显示了部分数据类型):

本例中用到的类型分别为“Double Float”、“String”和“Boolean”,根据其数据类型的不同,在选择结构分别转换为对应的数据,然后调用“格式化写入字符串函数”分别进行处理即可。

在上面程序框图中是处理前面板上“a”控件即“Double Float”类型的情况,对于处理其它两个控件对应的“String”和“Boolean”及默认情况的处理代码如下图所示:

通过这种处理方式,就可以在一个子程序里得到任意控件对应的名称及其值了。

总结

本文介绍了变体数据类型的编程及应用方法。从这儿可看到,变体数据类型在LabVIEW中不同于常规的数据类型,其功能非常强大,由于其具有自适应、自兼容性,在很多场合可以大大简化我们的编程代码量,这也是我们应该掌握的关于LabVIEW的高级编程技巧之一。

如果这篇文章对你有用的话,请关注+转发+收藏+点赞吧。

labview圆环里实物动画图形_LabVIEW编程技巧:功能强大的变体数据类型用法相关推荐

  1. labview圆环里实物动画图形_有趣的图形教案

    有趣的图形教案 作为一名优秀的教育工作者,通常会被要求编写教案,教案是保证教学取得成功.提高教学质量的基本条件.怎样写教案才更能起到其作用呢?以下是小编为大家整理的有趣的图形教案,希望对大家有所帮助. ...

  2. 5 获取当前访问的控制名称_LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息...

    问题引出 在网络通讯编程中,经常需要获取当前主机的名称.IP地址等信息,在LabVIEW中如何获取这些信息呢? 下面以本机为例进行说明,先看一下本机的信息.在Windows系统中打开控制台程序,输入& ...

  3. matlab中 小括号,Verilog编程技巧之(括号)、[中括号]、{大括号}用法(对比matlab)...

    简述 在初步接触到Verilog的括号时经常会将其和matlab矩阵的各种(括号).[中括号].{大括号}搞混. Verilog中括号的应用 Verilog语言中,除去这些括号在计算优先级中的作用(一 ...

  4. 详细讲解D3D8里面的2D图形编程(转)

    详细讲解D3D8里面的2D图形编程(转)[@more@] 利用D3D8的IDirect3DSurface8 & IDirect3DTexture8 模拟出一个简单的表面类. 利用这个类可以去完 ...

  5. labview中java联合编程_LabVIEW编程还可以这么简单?五大总结助你事半功倍!

    描述 虽然NI LabVIEW软件长期以来一直帮助工程师和科学家们快速开发功能测量和控制应用,但不是所有的新用户都会遵循LabVIEW编程的最佳方法.LabVIEW图形化编程比较独特,因为只需看一眼用 ...

  6. c++mfc编写实验_零基础学Windows窗口图形界面编程(不用MFC),菜鸟学完变身高手,敢与专业媲美...

    又一门新的计算机课上线啦! 什么课?看下面视频(以下视频是本课第一讲) 用什么语言 我们声明一下(这个在我们课上也跟同学强调):不要为用什么语言掐架!那是初学者的行为,为高手所不为. 第二,我们这门课 ...

  7. 【转】linux图形界面编程基本知识

    原文:https://blogs.gnome.org/raywang/2007/10/11/linux%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2%E7%BC%96%E7% ...

  8. 视频教程-精通Win32 API编程-Windows图形界面编程-C/C++

    精通Win32 API编程-Windows图形界面编程 黄强老师,国家软件设计师,软件开发工程师,项目经理.产品经理.培训讲师. 创业合伙人,多年C.C++开发经验,尤擅长移动互联网项目的开发! 黄强 ...

  9. Gox语言中使用Sciter库进行GUI图形界面编程-GX23.1

    Sciter是非常优秀的跨平台GUI图形界面编程库,只需附带一个动态链接库文件,就可以实现基于HTML/CSS/TiScript的图形界面,并且已经经过很多公司和商用产品的实际检验,稳定可靠.我们常见 ...

最新文章

  1. 在js中为图片的src赋值时,src的值不能在开头用 破浪号~
  2. nyoj 677 碟战(最大流最小割定理)
  3. Linux mysql设置密码
  4. CyclicBarrier及CountDownLatch的使用
  5. Linux 进程信号:信号的概念、生命周期、产生流程、阻塞
  6. 可迭代协议与for-of循环
  7. HDU 1789 Doing Homework again(馋)
  8. Python enumerate 函数 - Python零基础入门教程
  9. keil html转换工具,网页转换工具FCARM和makefsfile的使用简介
  10. 通过窗口名字(caption的内容)查找窗口,并将其隐藏或者置顶显示
  11. 当今年轻人创业,什么行业最有前途
  12. 灰度实战(四):Apollo配置中心(4)
  13. php模板和框架,php模板和框架的区别的区别是什么
  14. 蓝桥杯2016年第七届C/C++省赛B组第八题-四平方和
  15. Android小项目--2048小游戏
  16. 【抢头条】迄今最全的无刷电机工作及控制原理分享-绝对...!
  17. 科大奥锐密立根油滴实验数据_密立根油滴实验数据处理
  18. 超高精度时间频率同步及其应用
  19. css 层叠样式表详解
  20. Spring事务抛出Exception异常不回滚

热门文章

  1. php+编辑器+显示html,thinkphp——通过在线编辑器添加的内容在模板里正确显示(只显示内容,而不是html代码)...
  2. php订单金额分摊算法,PHP付钱找钱算法
  3. 智能化视频开发神器来了,AV Pipeline Kit 架构解析
  4. “我的开源项目被大厂‘盗用’了!”
  5. Firefox 新版本发布,Cookie 可真不好吃
  6. 详解飞书新功能,如何让开发者“爽”起来?
  7. “弃用 iOS 后,我的那些 Android 替代方案!”
  8. 中小企业数智化转型,这个百万级客户市场差点被遗忘
  9. 免费开源:人人必备的数据分析技能
  10. 30 岁成 AI 顶尖科学家,这位阿里副总裁厉害了