labview深入探索xcontrol

labview深入探索xcontrol
labview深入探索xcontrol

labview深入探索----xcontrol

control是LABVIEW8.x新增的功能,LV中的CONTROL我们是再熟悉不过了,这个"X"到底代表什么那,到NI网站上也没找到它的英文定义,可能相当与ACTIVEX中的"X"?虽然无法弄清楚它的定义,但是它的作用是清楚的,我个人理解它更象VC中MFC的控件自画,也具备了一些ACTIVEX的能力,与ACTIVEX的最大区别是ACTIVEX是独立于平台的,可用于各种编程环境,从这点来说,可以把它看做LV内部的activex,MFC中的控件自画是这样的,当我们要做一个特殊形状的控件时,可以设置它的一个属性是自画,own draw,也就是说,这个控件是用户自己画出来的,比如一个按钮,当鼠标进入它的控制区域,会自动显示凸起状态,还可以自动改变颜色,IE菜单就是这样,当鼠标移入的时候,背景色自动变成兰色,离开后,又自动恢复,实际上,它是在响应两个事件,MOUSE_ENTER 和MOUSE_LEAVE事件.

在xcontrol出现以前,我们也可以对一个控件通过属性节点和事件结构实现这种动态变化,但是有着本质的区别,xcontrol通过事件结构判断事件,利用属性节点改变其显示方式是完全在内部实现的,因此它是可以重用的,从使用方法上它和LV一般的控件没有任何区别,我们完全可以把它看成LV又给我们提供了新的控件,我的文章里多次提到AE的概念,有了XCONTROL,我们不但可以保存数据,而且有了显示的能力,所以说,对于基于组件编程的LV,能力有了很大的提高.

虽然xcontrol是一个新增的特性,但是它的制作方法实际上我们或多或少地都涉及到了,这就使得制作XCONTROL变得相对容易了.

可以看出,我们通过事件结构编程实现了当鼠标移入BOOLEAN控件区域

时,BOOLEAN控件的CAPTION和COLOR自动发生了改变,但是所有的控制代码都是在主循环里完成了,是通过控件外部改变的,因此,我们无法重用这个控件,假如我们需要100个这样的控件,我们需要在事件结构中分别对100个控件做类似的编程,这显然是非常麻烦的.

最好的办法是让这段代码在控件内部完成,这样对于使用者来说,这和一般的控件没有区别,这样有效地实现了封装,所有的一切从用户的角度看,就象调用一个ACTIVEX.

XCONTROL可以轻松实现这个功能

我们知道LV的控件是面向对象的层次继承结构,每个控件都继承了它的父类的属性和方法,但是对于一个具体的控件,它的属性和方法都是固定的我们无法删除或者增加这个控件的属性和方法.对于XCONTROL,我们可以简单地理解成继承

了一个基本控件,并在此基础上,用户增加的自己的属性和方法,是一个重新定义的,增加的大量功能的新的控件.

下面看看制作XCONTROL的具体过程.

这样一个基本的XCONTROL的结构就建立起来了,存储并重新命名

lv自动生成两个自定义控件,分别是data.ctl和state.ctl,两个VI,分别是Facade.vi和Init.vi

这四个部分是任何XCONTROL都必须包括的基本构件。LV帮助文件中称为required abilities,必须的能力(直译),

data.ctl代表该XCONTROL表示的数据类型,一般的控件也都代表一种数据类型,比如DOUBLE,BOOLEAN,ARRAY等等

data.ctl是自定义控件,可以根据需要修改成您需要的数据类型,比如对于一个学生的个人信息,我们应该生成一个簇,包括姓名,性别,年龄,班级等。state.ctrl代表XCONTROL的显示状态,它和DATA.CTL一样,都是严格类型定义。它包含的信息是我们想控制XCONTROL的属性。

根据我们上面的例子,我们定义四种属性,1:鼠标进入标题2:鼠标离开标题3:鼠标进入颜色4:鼠标离开颜色。

xcontrol中最复杂的就是facade.vi,facade英文意思是一个物体的正面,这里翻译成外观比较合适。

当xcontrol被加载到前面板或者一个包含XCONTROL的VI调入内存的时候,该VI自动被调用,以便在显示之前做一些必要的初始化工作。

我们还是用上面的例子制作一个简单的XCONTOL来说明一下,首先我们修改DATA.CTL,用一个BOOLEAN 类型替代它。

然后修改STATE.CTL,加入必要的属性。

INIT是你在前面板生成控件时自动调用了,同时它内部存储了版本信息,当检查到当前版本发生变化,自动更新。

INIT一般不需要更改。

重点看一下FACADE.VI,它自动生成几个事件。

1:TIMEOUT事件。

在事件结构中,如果没有任何事件发生,TIMEOUT如果位连接,默认值是-1,表示永远不发生超时事件,如果连接一个固定的数值,比如100,单位是毫秒,如果没有事件发生,则每100MS触发一次超时事件,需要注意的是上面的超时事件连接的是0,表示无事件时立即超时,同时循环条件端子选择的是STOP IF TRUE,因此,一旦超时发生,将立即退出循环。

这和一般的事件结构使用方法完全不同,一旦循环退出,整个事件检测就结束了,不会再响应其他事件了。而在XCONTROL中,这显然是不能这样做的,因为

XCONTROL肯定要不断响应事件,按常规想法,它应该连接的是-1,循环永远不退出。即使永远不退出,持续检测事件,这样也是有问题的,如果有大量的XCONTROL,这将导致数量庞大的事件结构循环,这样会极大地影响程序性能。仔细分析后,我得出结论,上面的事件结构实际上是个回调函数。

CVI的回调函数是这样定义的:

int CVICALLBACK PlotData (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2);

VC也是类似的。

它的目的是,如果面板或者面板上某个控件发生的事件,比如鼠标按下,值改变等等,将自动调用这个函数,注意是操作系统自动调用这个函数,不是用户调用的。

FACADE.VI正是这个功能,一旦XCONTROL发生任何事件,LABVIEW将自动调用这个回调函数,回调函数响应事件后,因为没有其它事件发生,会立即触发超时,导致循环结束,回调函数退出。具体过程是这样的:

XCONTROL 发生事件----》labview调用FACADE.vi--->响应事件---》超时退出

下次发生事件时重复上面的过程。

LABVIEW除了超时事件外,还自动生成了其它几个事件,可以把它们称做系统事件,对于任何的XCONTROL,这几个事件都是必须存在的。

2:Data Change事件

Data Change 事件是指前面自定义数据类型DATA的值改变了所发生的事件。事件是如何发生的那,当你用数据流,或者局部变量以及VALUE属性节点改变了XCONTROL的值,则触发该事件。

这一点和一般的事件结构也是不同的,对于一般地控件,用局部变量或者Value 属性节点是不会产生事件的,如果改变了同时需要触发事件,我们不得不用VALUE(SIGNAL)事件来人为触发。

当我们在前面板生成这个控件时,DATA CHANGE事件自动触发,尽管我们此时并未改变它的值。

3:DISPLAY STATE CHANGE----显示状态改变事件。

当你在前面板拖入(生成)这个XCONTROL的实例时,或者复制控件,以及用自定义的属节点改变控件时触发这个事件。我们可以利用这个事件来改变XCONTROL的外观特性。

4:方向改变事件

当一个XCONTROL从控制器改变成指示器或者从指示器改变成控制器时产生该事件。

利用这个结构,我们可以把指示器和控制器显示成完全不同的形状。

对于常规的控件,我们可以用鼠标右键的CAHNGE TO CONTROL和CHANGE TO INDICATOR来改变,XCONTROL也是如此。

5:Exec State Change-----执行状态改变

左侧传入的RUN MODE?为真表示运行状态,为假表示编辑状态,这个事件的基本做用是,指示器在编辑状态下是可以更改它的值的,而在运行状态下是不允许用户直接修改的,只能通过数据流或者局部变量来修改,这样,我们必须知道当前是运行还是编辑状态。

另外经过实际测试,当一个XCONTROL被拖入前面板(生成控件实例)的时候,将按照下面的次序产生事件:

调用INIT.VI---->DATA CHANGE EVENT--->STATE CHANDE EVENT

需要注意的是左侧共有四个严格类型的数据传入循环:

DATA IN---它是上面定义的DATA.CTL

DISPLAY STATE IN----它是上面定义的STATE.CTL

Container state-----包容器状态

Action--------------动作

我们看看Container State 和Action的定义

Container State 是一个严格类型定义的簇,有三个元素组成:

.Indicator ? ,boolean 用来表示当前的XCONTROL是控制器还是指示器

.Run Mode? boolean 用来表示当前的XCONTROL是处于运行状态还是编辑状态.

.RefNum refnum xcontrol自身的控件参考.

Action 也是一个严格类型的簇,有三个元素组成:

.Data Changed boolean 如果该项给定TRUE,则触发DATA CHANGE事件.State Changed boolean 如果该项给定为TRUE,则触发Display

State CHANGE事件.

.Action Name 用户可以自己定义的字符串信息,比如我们可以指明是哪个要求触发DATA CHANGE事件的 .

接下来,我们来制作这个XCONTROL的属性和方法

我们在状态中已经定义了四个属性:1.进入标题,2.离开标题3.进入颜色4.离开颜色

这四个属性是子定义的属性,完成后,LV自动在属性节点中增加四个项目.属性节点一般都定义成可读可写的,根据需要,也可以定义成单向的.

当我们打开一个VI,包含XCONTROL时,XCONTROL是不允许编辑的,在调试XCONTROL的过程我们需要频繁切换XCONTROL的设计窗口和使用窗口,用上面的UNLOCK LIBARAY FOR EDITING,可以暂时启动XCONTROL的编辑,这是使用XCONTROL的窗口处于错误中断状态.

编辑完毕后,用APPLAY CHANGES TO INSTANCE,这样所有用到这个XCONTROL的VI,就自动更新了.只所以先介绍它,是因为它是一个非常好的方法,是下面调式中必须用到的.

输入名称后,属性就自动生成了,最好设定一个虚拟目录,把所有的属性都集中到一起,这样易于管理.

我们以鼠标进入颜色为例来说明一下属性的设计过程.

非常简单,需要注意的是,LV自动生成的面板中,给出的是BOOLEAN控件,名称是Value,我们要用自己的控件来替代它,名称不能变,必须是Value,第一个字母必须是大写,

属性节点设计完成后,还需要在FACADE中响应BOOLEAN控件的MOUSE ENTER和MOUSE LEAVE事件,这样存储在STATE中的属性设定值才能传入到BOOLEAN中,以更新它的显示。

如果属性非常复杂,我们可以专门制作一个属性节点对话框,用鼠标右键快捷菜单来调用它。这属于菜单方面的内容,就不多介绍了。

这样,完整的XCONTROL就制作完成了,看看它的调用方法和实际效果。

基于LabVIEW的虚拟仪器外文翻译

基于LabVIEW的虚拟仪器 模拟风力太阳能系统混合动力站(节选) 介绍 在最简单的层面上,数据采集可以手动完成如使用纸笔记录读数或任何其他工具。对于某些应用这种形式的数据采集是足够的。然而,数据记录中的应用这需要大量的数据读数,非常频繁的录音是有必要的,它包括了仪器或微控制器获取和记录数据准确(1995里格比和多尔比,)。急诊化验室虚拟仪器工程平台(LabVIEW)是一个功能强大的灵活的仪器仪表和分析应用软件工具,(美国国家仪器仪表,2002)在今天这新兴技术并被广泛采用的学术界,工业LabVIEW已成为一个重要的工具,已代替了政府实验室数据的标准采集,仪器控制和分析软件。 现有的1.5千瓦的额定风力太阳能混合动力站显示(图1)。设计与施工的可再生能源发电系统报告(磐诚,等铝,2000)。在大学校园的平台上,有良好的教育机会本科生和研究生以现有的风力太阳能知识,学生们在协同研究基于风力太阳能发电站的传统的电网火力发电厂。特别是在一些组件可再生能源如蓄电池和直流电源逆变器,可导致供电质量和电网出现一些问题,当太阳风稳定性出现问题时,根据汽轮机和发电机(帕特尔,1999)的电力系统与化石燃料这些相互作用都是由于大量的不同动力学参与的风力涡轮机和蒸汽涡轮机。图1显示了photovol TAIC(PV)与太阳能电池板120个W评级,mastmounted1千瓦的风力涡轮机,和风速计,包括风方向和速度传感器的风能太阳能发电站并行运作,并收取12 V电池组包括六个深循环铅酸电池。太阳面板安装在机架上的轨道,白天太阳光从320个0度的初始位置度。该系统还包括基于固态器件的一个1.5kVA额定直流到交流电源逆变器,保护设备如交流和直流电路断路器,熔断器,避雷器,一套线性和非线性负载,连接电缆,和接线盒。在国家的电压和电流系统学生们介绍了稳定的研究,说明了电能质量由于小的线性和非线性负荷的影响(磐诚和蒂默曼,1999)。太阳风混合发电

基于虚拟仪器LABVIEW万用表的课程设计

沈阳工程学院 课程设计任务书 课程设计题目:基于Labview的万用表的设计 系别自控系班级测控本091 学生姓名学号 指导教师职称教授 课程设计进行地点:实训F430 任务下达时间: 2012年 2月27日 起止日期:2012年2月27日起——至2012年3月2日止 教研室主任年月日批准

摘要 虚拟仪器技术的实质是利用最新的计算机技术来实现和扩展传统仪器的功能,在许多方面具有传统仪器所没有的优越性,在实验教学和工程领域具有极大的应用潜力。实验表明,设计的虚拟函数信号发生器输出信号性能优于普通传统的信号源。 虚拟仪器是1986年美国国家仪器公司(NI)提供的一种新型一起概念。它是计算机技术介入仪器领域所形成的一种新型的、富有生命力的仪器种类。在虚拟仪器中计算机处于核心地位,计算机软件技术和测试系统更紧密地结合成一个有机整体,仪器的结构概念和设计观点都发生了根本变化。 虚拟仪器技术的实质是利用最新的计算机技术来实现和扩展传统仪器的功能。其基本构成包括计算机、虚拟仪器软件、硬件接口模块等。在这里,硬件仅是为了解决信号的输入输出,软件才是整个系统的关键。当基本硬件确定后,就可以通过不同的软件实现不同的功能。虚拟仪器应用软件集成了仪器的所有采集、控制、数据分析、结果输出和用户界面等功能。使传统仪器的某些硬件甚至整个仪器都被计算机软件所代替。因此从某种意义上说,计算机既是仪器,软件即是仪器。 虚拟仪器的软件是其最核心、最关键的部分,其主要功能是对硬件执行通信和控制,对信号进行分析和处理,以及对结果进行恰当的表达和输出等。虚拟仪器的软件开发平台目前主要有两类:第一类是基于传统语言的Turbo C,Microsoft公司的Visual Basic ,Borland公司的Delphi,Sybase公司的PowerBuilder。这类语言具有适应面广、开发灵活的特点,但开发人员需有较多的编程经验和较强的调试能力;第二类用专业图形化编程软件进行开发。如HP公司的VEE,NI公司的LabVIEW和Lab Windows/CVI等。NI公司的LabVIEW软件开发平台是一种专业图形化编程软件,采用图形化编程方式,结构流程清晰,但缺点是对硬件的要求较高,比较依赖NI的专用产品,对信号控制方式不够灵活。而Lab Windows/CVI以ANSI C为核心。将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地接合起来。它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。 关键词函数信号发生器, 数据采集卡,LabVIEW,DAQ卡,示波器

深入浅出LabVIEW数据库应用

目录 第1章引言—献给想用数据库而不懂数据库的工程师 (1) 第2章边干边学数据库基础 (2) 2.1 数据库简史 (2) 2.2 建立数据源 (2) 2.2.1 在Access中建立一个数据库 (2) 2.2.2 建立与数据库的连接 (3) 2.2.3 数据库连接的可移植性问题(高级话题) (7) 2.3 数据库基本操作 (8) 2.3.1 创建一个表格 (8) 2.3.2 删除一个表格 (10) 2.3.3 添加一条记录 (10) 2.3.4 查询一条记录 (11) 2.4 数据库高级操作 (12) 2.4.1 在LabVIEW中执行SQL语言案例研究 (12) 2.4.2 用SQL实现数据查询操作 (13) 2.4.3 用SQL实现删除一条记录 (13) 2.4.4 压缩数据库,释放多余空间 (14) 2.4.5 用SQL实现修改数据操作 (15) 2.5 本章总结 (16) 第3章一个完整的数据库工程范例 (17) 3.1 工程项目要求 (17) 3.2 生成可执行文件(*.exe) (18) 3.3 生成安装文件(Installer) (19) 第4章后记 (22)

第1章引言—献给想用数据库而不懂数据库的工程师 曾经在一个产品检测项目中,客户要求:当产品检测不合格时,记下该产品对应的序列号,测试时间和各项测试指标,并能对这些数据进行管理和查询。由于自己没有系统的学习过数据库,所以第一时间想到的解决方案是用文件的方式(也只能把数据存成文件了)。在使用文件进行数据储存与管理时,遇到了一个巨大的问题:如何查询数据?基本的文件IO函数中,并没有提供现成的查询函数,所以必须自己编程实现。实现的过程是先将数据读入内存,然后再根据关键字进行线性查找,线性查找的时间复杂度为O(N),所以当数据量逐渐增大时,这将是一个非常可怕的过程。这个不可逾越的障碍迫使我不得不再次考虑使用数据库。 想到这儿,我立即到天河书城买了两本网上评价为数据库经典的书《数据库系统概念》和《轻松掌握SQL》,回到办公室后立即开始学习起来。陌生的术语,难懂的理论;看了后一章便忘了前一章——非常痛苦但还是硬着头皮坚持到了下班。 这种痛苦再加上越来越近的项目交付日期,使我非常焦躁,心里终于有个声音爆发了出来“我不就是想要实现数据的保存,修改,删除和查询吗?我需要把那众多的数据库类型、复杂的关系模型、抽象的关系代数…都搞懂吗???”实践后的答案是,不需要,一点都不需要。 我放弃了刚买的新书,打开了LabVIEW 数据库工具包的用户手册和范例程序,寻找着我期望的数据保存,修改,删除和查询功能。到下班的时候,Everything goes well,基本掌握了用LabVIEW 数据库工具包进行数据保存,修改,删除和查询的方法。 回想起这段历程,突然有种想与大家一起分享的冲动——不懂数据库的工程师也可以玩转数据库,因为从应用的角度来看,我们的实际需求仅仅是数据的保存、修改、删除和查询,根本不需要去研究复杂的关系模型、抽象的关系代数、艰深的数据库设计…那基本与我们的初始目标南辕北辙。借助LabVIEW 数据库链接工具包(Database Connectivity toolkit)可以站在应用的层次,很方便的操作数据库,实现数据的保存、修改、删除和查询等功能。 “学以致用,边学边用,急用先学,立竿见影”,在后续的章节中,我们先概览一下必需的与数据库相关的基本概念,然后在LabVIEW平台上一边学习,一边实践如何储存、管理和查询数据。

基于labview的虚拟仪器 毕业设计(论文)开题报告.doc

毕业设计(论文)开题报告 课题:基于Labview虚拟 示波器的设计 院系:电气信息学院 专业:测控技术与仪器 学生姓名:彭成和学号:200801200106指导教师:李亚 2012年1月16日

开题报告填写要求 1.开题报告(含“文献综述”)作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效。 2.开题报告内容必须用黑墨水笔工整书写或按此电子文档标准格式(可从电气系网页或各教研室FTB上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见。 3.“文献综述”应按论文的格式成文,并直接书写(或打印)在本开题报告第一栏目内,学生写文献综述的参考文献应不少于10篇(不包括辞典、手册),其中至少应包括1篇外文资料。 4.统一用A4纸,并装订单独成册,随《毕业设计论文》等资料装入文件袋中。

毕业设计(论文)开题报告1.文献综述:结合毕业设计(论文)课题情况,根据所查阅的文献资料,撰写2500字以上的文献综述,文后应列出所查阅的文献资料。 文献综述 一、引言 随着计算机技术、大规模集成电路技术和通讯技术的飞速发展,仪器技术领域发生了巨大的变化,美商国家仪器公司(National Instruments)于八十年代中期首先提出基于计算机技术的虚拟仪器的概念,把虚拟测试技术带入新的发展时期,随后研制和推出了基于多种总线系统的虚拟仪器。虚拟仪器就是在通用计算 机上加上软件和(或)硬件,使得使用者在操作这台计算机时,就象是在操作一台他自己设计的专用的传统电子仪器。在虚拟仪器系统中,硬件仅仅是为了解决信号的输入输出,软件才是整个仪器系统的关键,任何一个使用者都可以通过修改软件的方法,很方便地改变、增减仪器系统的功能与规模,所以有“软件就是仪器”之说。虚拟仪器技术的出现,彻底打破了传统仪器由厂家定义,用户无法改变的模式,虚拟仪器技术给用户一个充分发挥自己的才能、想象力的空间。用户(而不是厂家)可以随心所欲地根据自己的需求,设计自己的仪器系统,满足多种多样的应用需求。虚拟仪器系统概念是对传统仪器概念的重大突破,是计算机系统与仪器系统技术相结合的产物。它利用计算机系统的强大功能,结合相应的硬件,大大突破传统仪器在数据处理、显示、传送、处理等方面的限制,使用户可以方便地对其进行维护、扩展、升级等。 虚拟仪器技术已成为测试、工业I/O和控制和产品设计的主流技术,随着虚拟仪器技术的功能和性能已被不断地提高,如今在许多应用中它已成为传统仪器的主要替代方式。随着PC、半导体和软件功能的进一步更新,未来虚拟仪器技术的发展将为测试系统的设计提供一个极佳的模式,并且使工程师们在测量和控制方面得到强大功能和灵活性。 基于此本次毕业设计就是通过虚拟仪器来完成的,以下是对该软件的一些介绍。

LabVIEW编程经验若干则

最近在编写程序时遇到一个错误,检查了很久,终于发现了原因,为了下次不再犯同样的错误,将这个现象记录下来,大家可以引以为戒。 大家都知道,数据类型有整型和浮点型。在串口或者是USB通信中,经常需要将数据强制转换成十六进制数据。笔者在最初写程序时没有注意数据类型,将十进制数据设置成双精度实数,强制转换后一直得不到想要的结果,后来将其改为无符号16位整型,结果是正确的。经过对比发现,双精度实数和无符号16位整型,即使十进制数值相等,强制转换成十六进制后结果相差很大,如图所示。 在labview中,事件结构是一个比较具有特色的一个结构,使用事件结构能够非常容易地实现其他程序运行结构不能实现的功能。一些labview的参考书告诉学习的人一般

事件结构外面要套一个while循环,可是有的时候会发生这样一种情况:在事件结构外面套上while循环后发现点击控制while循环的“退出”按钮没有用。 使用事件结构时,不要忽略事件结构左上角的连线端子。这个是“超时接线端”,是指事件结构等待事件发生的时间,以毫秒为单位,默认值为–1。如果while循环里的事件结构没有设置超时接线端,那么系统就默认为-1,事件结构一直等待事件的发生。这个时候程序就停止在等待事件发生,另外的操作都没有用。所以如果想要通过控制while循环的结束来停止程序,可行的做法是:设置超时时间,如10ms,然后增加一个“超时”的事件分支。 labview中,在字符串控件上单击鼠标右键,会发现有几种显示方式:正常显示、/代码显示、密码显示和十六进制显示。 正常显示和密码显示容易理解,在这里不作解释。笔者就用labview通过串口和USB与下位机通信时得到的一点心得与大家分享。

用labview设计一个计算器(虚拟仪器)

科目: 姓名:学号: 院系:类别:(学术、专业)

实验一Labview 计算器 一、实验目的 通过利用labview设计一个简易计算器熟练的掌握labview基本功能和基本操作方法。 二、实验要求 利用设计的计算器可以进行简单的四则运算、可以进行平方、开根号和倒数运算、计算器可以进行清零和关闭计算器操作、在输入数据时不慎将某个数字输错可以运用BackSpace清除该值等一些基本简单的运算。 三、实验原理和框图 1、前面板设计 前面板是LabVIEW的图形用户界面,在LabVIEW环境中可以对这些对象的外观和属性进行设计,LabVIEW提供了非常丰富的界面对象,可以方便地设计出生动、直观、操作方便的用户界面。本系统中前面板显示程序的输入和输出对象,即,控件和显示器。本程序中控件主要是按钮,显示器主要是文本显示。 在前面板设计过程中先在前面板整齐排列放置22个确定按钮,将这22按钮的标签隐藏,然后修改这22个确定按钮的名字分别为:0~9十个数字、小数点、正负号、加、减、乘、除、等号、倒数、根号、清零、退格和X的Y次方。 前面板还包括一个文本显示控件用于显示计算的结果和计算器的某些提示,通过改变显示控件的大小使之于计算器的大小相适应。计算器的前面板还有程序框图中while循环的停止按钮,当按钮按下时计算器停止工作退出到LabVIEW的编辑界面。 为了前面板的美观和防止按钮的移动,分别将前面板的各个按钮和文字进行组合和对前面板进行装饰,装饰采用修饰中的平面框。如下图所示:

2.后面板设计 程序框图对象包括接线端和节点,将各个对象连线连接便创建了程序框图,接线端的颜色和符号表明了相应输入控件或显示控件的数据类型。程序框图是程序的核心,程序要实现的功能都是通过程序框图反应出来的。本课程设计的程序框图主要运用了while循环、时间结构、条件结构和平铺顺序等结构。

基于labview虚拟仪器平台的温度检测系统设计

Labview考试报告 题目:基于Labview虚拟仪器平台的智能温度控制系统 班级:50910 学号:5091030 姓名:李玲娜

引言 虚拟仪器是计算机技术和仪器测量技术相结合的产物。虚拟仪器技术,就是用户在通用计算机平台上,根据测试任务的需要来定义和设计的测试功能,其实质是充分利用计算机来实现和扩展传统仪器功能。“软件就是仪器”反映了虚拟仪器技术的本质特征。美国国家仪器公司生产的NI-LabVIEW是目前最为成功,应用最广泛的虚拟仪器软件开发系统。它一种基于G语言的32位编译型图形化编程语言,其图形化界面可以方便的进行虚拟仪器的开发。它充分利用计算机强大的运算处理功能,突破了传统仪器在数据处理、显示、传输、存储等方面的限制。本文利用虚拟仪器平台,通过编写Labview 软件对温度进行智能测量,减少硬件的开发,有利于系统的维护,也便于系统软件升级。 一、虚拟仪器 1. 1虚拟仪器概述 虚拟仪器是在以计算机为核心的硬件平台上, 其功能由用户设计和定义, 具有虚拟面板, 其测试功能由测试软件实现的一种计算机仪器系统。虚拟仪器的实质是利用计算机显示器的显示功能来模拟传统仪器的控制面板, 以多种形式表达输出检测结果; 利用计算机强大的软件功能实现信号数据的运算、分析和处理; 利用I /O 接口设备完成信号的采集与调理, 从而完成各种测试功能的一种计算机仪器系统。 1. 2虚拟仪器的图形化开发平台 LabVIEW ( Laboratory Virtual Instrument Engineering Workbench)是一种图形化的编程语言, 它广泛地被工业界、学术界和研究实验室所接受, 视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足GPIB、VXI、RS- 232和RS- 485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/

labview的深入探索----文件系列之二进制文件

labview的深入探索----文件系列之二进制文件 二进制文件是计算机文件中最常见的文件,它占用空间最小,适合于连续存 储大量数据,同时它的存储格式基本和数据在内存中的存储格式一致或者类似, 很多情况下,甚至是内存的映射,因此无论是存储还是读取都是速度最快的,同时, 具有非常高的安全性,如果不知道数据的格式,很难分析出文件的格式.同文本文 件一样,打开和关闭是完全相同的,不同的是写VI 和读VI.先看一个简单写的例 子上面写的是U8 数组,我们知道,一个U8 对应一个字节,1024 个U8 数组对应的 文件长度应该是1024=1K,但是实际文件长度是1028=4+1024,同理,下面的是I32 的数组,一个I32=4BYTE,所以文件长度应该是1024*4=4096,但是实际文件长度 是4100=4+4*1024.可以看出,对一维数组,多出四个字节的长度,实际上是多出一 个U32=4BYTE,代表的是一维数组的长度.原因在于WRITE BIN FILE VI,有一 个选择项,如下图,表示是否写入数组长度或者字符串长度.如果取消写入数组或 者字符串长度,则数组所占空间大小和二进制文件所占空间完全相同.之所以读 写二进制文件速度是最快的,根本原因在于二进制文件的存储方式和数据在内存 中的存储方式相似或者完全一致.WRITE BIN FILE VI 还有一个重要的输入选择 项目,BYTE ORDER(字节次序),很多编程语言或者操作系统称之为大小端的问题.在所有的计算机系统,包括单片机中,都存在大小端的问题.简单地介绍一下.我们知道,一个整数U16 或者I16,有两个字节组成,比如整数0X1234,由字节0X12,和 0X34 组成,那么,在内存中或者文件中,到底是0X12 在前还是0X34 在前那,在不 同的操作系统和不同的编程语言中,这是有区别的,这就造成的数据的大小端的 问题.对于我们自己的数据二进制文件,这个选择并不重要,因为LV 的读二进制 VI 也有同样的选择项,保持二者一致就可以了,但是如果被其它编程语言读取或 者读取其他语言写的二进制文件,就要考虑大小端的问题,否则数据表现可能会

labview事件结构学习

labview事件结构学习 编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程 序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW 中相应这些事件最常用的结构就是事件结构。事件结构内容丰富,基 本上大的程序结构都需要用到事件结构,下面将详细介绍事件结构。事件结构 在程序不能够单独响应各种事件,必须与循环结构一同使用,如下图事件添加 方式很简单,鼠标右键事件框弹出菜单如上图,有添加、删除、复制、编辑事 件等选项,按照操作即可。如下图,为事件结构添加Stop 事件,布尔控件触发 事件的方式有多种,鼠标按下、经过、离开、进入等,这里我们选择值改变。 确定后,stop 事件就被添加进去了,如下图,当我们运行程序后,点击前面板 的stop 按钮,触发事件使while 循环停止而后程序也停止。同一事件分支只能 添加一种事件吗?当然不是!有的时候有很多不同操作却会执行相同代码,怎 么编程才不会让代码冗余呢?看个例子,如下图2 个按钮stop1,stop2 点击后 都可以让程序停止,我们怎么为其添加事件呢?我们先添加一个事件stop1 的,方法上面已经描述了。由于stop2 的执行代码和stop1 一样,我们在事件stop1 上右键->弹出菜单->编辑本事件分支(Edit Event Handled by This Case)会弹出已添加事件stop1 的编辑框,这是左侧有2 个按钮如下截图我们点击Add Event 左侧事件列表会出现如下变化选中这个后,右侧列表选中stop2 的Value Change 事件后,点击确定在看该事件分支如下,2 个事件就添加在同一个分支当中了,运行程序后,点击stop1 或stop2 均可让程序停止。超时超时是事件结构特有的,看名字就知道是怎么回事,即超过一定时间没有触发事件则执行超时 事件。如果超时时间设置所以如果程序事件功能不多,又需要定时执行一段代码,可以考虑用此方式来完成;如果程序操作频繁,则不建议用此事件来定时

基于Labview的虚拟仪器计算器设计

研究生课程考核试卷 (适用于课程论文、提交报告) 科目:虚拟仪器教师: 姓名:学号: 专业:类别:学术型上课时间: 考生成绩: 阅卷评语: 阅卷教师(签名) 重庆大学研究生院制

通过对虚拟仪器课程的学习和撑握,本次实验设计了一个简易计算器,可以用来模拟真实计算器而进行一些简单的基本运算。利用Labview软件平台编写计算器程序,可以实现“+、-、×、÷、平方、开方、x^y”这七种基本运算,并且可以对上面的七种基本操作连续运算,另外实现了对输入的错误数据进行清除的功能。达到了本次实验的要求。 关键词:Labview,七种基本运算,清除

摘要 .................................................................................................................................................. I 1、引言 (1) 2、整体方案设计 (2) 2.1、簇和前面板控件的说明 (2) 2.2、程序流程图 (3) 3、具体实现过程 (4) 3.1、前面板设计 (4) 3.2、初始化和键的感应 (4) 3.2.1、数字0-9的输入 (6) 3.3、输入的第一个数 (6) 3.3.1、多零问题 (6) 3.3.2、小数点问题 (7) 3.4、四则运算和x^y (7) 3.5、开方计算 (8) 3.6、倒数计算 (9) 3.7、输入正负数 (9) 3.8、去掉小数点后面0的功能 (9) 3.9、清除功能(Clear) (10) 3.10、退格功能 (10) 4、总结 (12) 参考文献 (13) 附录A (14) 1、初始化程序 (14) 2、总程序 (14) 3、x^y的幂程序 (15)

labview的深入探索----labview与回调函数

labview的深入探索----labview与回调函数 回调函数是WINDOWS 编程(API 编程)的核心内容之一,在许多高级编程语 言,如VB,VC(MFC)中已经封装了回调函数,取而代之的是事件响应函数,但是,追 溯其本质,实际就是回调函数.所谓WINDOWS 回调函数,就是按照WINDOWS 的规范,编写的(CALLBACK)函数,当WINDOWS 检测到事件发生时,自动调用的 函数,WINDOWS 是通过函数指针调用的,因此,回调函数的内容是由用户决定的, 而何时调用是由操作系统决定的.我们看一下CVI 中的一般回调函数的定义int callback aaaa(int panel,int control,int event1,int event2,callbackdata *data);回调函数的参数是有操作系统提供的,比如上面的回调函数,panel---表示的哪个面板(窗口) 发生的事件control---表示的面板上哪个控件发生的事件event1 event2 表示事件 的类型和相应数据,比如鼠标坐标等回调函数是一般高级编程语言的基本功能, 但是,在LABVIEW8.X 之前是不支持的,这极大限制了LABVIEW 功能的扩展, 因为ACTIVEX,.NET 都需要回调函数.8.X 中,增加了回调函数的功能,主要用于ACTIVE,.NET 和LABVIEW 自身控件,LABVIEW 例子程序中提供了几个例子, 是有关ACTIVEX 和.NET 调用的,下面,我们通过LABVIEW 自身控件说明一下 回调函数的使用方法.在.NET 摸板中也提供了这个节点,从分类上就可以看出,注 册回调函数主要是用于ACTIVEX 和.NET 的.下面我们做一个简单的回调函数 的程序,有两个功能,返回当前值的变化和记录控件被点击的次数注册回调函数 需要三个参数:控件参考,用户参数和自动生成的回调函数,有了控件参考,我们就 可以选择事件的类型,用户参数主要是用于返回结果,因为回调函数是由操作系 统调用的,没有办法通过数据流返回处理结果.添加了这两个参数后,就可以自动 生成回调函数了回调函数如下图所示简单编程,CONTROL 的值传递给 INDICATOR 这样值变化的回调函数完成了,下面我们通过鼠标UP 事件来记录

Labview执行结构:详细说明

执行结构:详细说明 While循环 与文本编程语言中的Do循环或Repeat-Until循环类似,必须满足特定条件之后,While循环才会执行其内的程序代码,如图1所示。 图1. LabVIEW中的While循环;具备While循环功能的流程图; 还有While循环功能的伪码范例 While 循环位于Structures面板上。从面板上选择While Loop之后,针对所要重复的代码区块,可用鼠标拖拽出矩 形并将之圈住。放开鼠标之后,即会有While循环圈住用户所选的区块。 只要将对象拖拽至While循环中,即可将其新增至While循环中。 只要条件接线端接收特定的布尔值之后,While循环随即执行代码 也可通过While 循环的条件接线端来处理基本错误。若将错误簇连接至条件接线端,则只有Status参数的真或假值传送至接线端。同样,Stop if True和Continue if True快捷菜单项目,将分别变更为Stop if Error和Continue while Error。 计数接线端属于输出端点,其中包含已完成的循环次数。 While循环的循环计数均从零开始。 注意: While循环将至少执行一次。 无限循环 无限循环为常见的程序错误,即无法停止的循环。若条件接线端 i为True时停止,而用户又在While循环外部放置布 尔控件接线端。一旦循环开始,控件值即成为FALSE,就会形成无限循环。

图2.While循环之外的布尔控件 因为在循环开始之前,仅读取该值一次,所以改变控件的值并无法停止无限循环。若要通过控件停止While循环,则必须在循环中配置控件接线端。若要停止无限循环,则按下工具栏上的Abort Execution按钮,即可终止该VI。 在图3中的While 循环将不断执行,直到随机数函数的输出大于或等于10.00,且Enable控件为TRUE时才会停止。当且仅当“与”函数的两个输入都为真时,函数的返回值才为真。否则,与函数将回传FALSE。 在图3中,只要随机函数不产生10.00以上的值,就会成为无限循环。 图3.无限循环 结构隧道 隧道负责为结构传送数据。 While循环边框上的实心区块即为隧道。此区块的颜色与隧道所连接的数据类型的颜色相同。在循环终止之后,随即有数据送回循环。当隧道传送数据进入循环时,只有数据抵达隧道之后,才会执行循环。 图4即以计数接线端连至隧道。直到While 循环执行完毕,隧道中的数值才会传送至Iterations显示控件。计数接线端在Iterations显示控件中只会显示最后的数值。 图4. While循环的隧道

labview控制程序流程——labview事件结构

labview控制程序流程——labview事件结构 1 事件结构及它的图形化表示法事件被用来通知用户有异步活动发生。图 形化语言的事件响应包括:用户界面事件、外部I/O 事件和程序其它部分的事件。对事件的处理程序也被称为:事件驱动程序。事件驱动程序可以分为若干 个分支,每个分支处理不同的事件响应。所以对事件的响应结果也可以控制程 序的流程。事件驱动机制来自于可视化的操系统,可视化操作系统对用户事件 提供了简洁、有效的响应方式,最常见的事件来自于鼠标和键盘。虚拟仪器借 助于操作系统的事件处理机制实现了图形化语言的事件响应能力。在没有引入 事件结构之前,LabVIEW 是借助于轮询的方式来查询用户操作,由于轮询的方 式会占用一定的CPU 资源,甚至可能遗漏事件,所以这种处理方式并非理想。事件结构的出现避免了对CPU 资源的占用,同时也避免了事件的遗漏。事件 结构在函数选板》编程》结构子选板中可以找到,并可以将其直接拖拽到程序 框图中,图形化表示的事件结构,参见下图。图 1 图形化的事件结构与Case 结构和循环结构类似,事件结构也包含了一个主框架,这个框架内将用来放置 事件处理的事件驱动程序代码。如果事件处理任务众多,会有众多事件分支存在,在结构上类似Case 的多帧结构(选择器标签)。当在程序框图上拖放一个 事件结构时,我们只能看到上图所示的一帧已经预先注册的超时事件(Timeout),超时事件分支。它具有定时延迟的基本功能(不包括While 循环),参见下图。图 2 具有定时延迟的基本功能当然也可以采用另一种表示方法,参 见下图。图 3 利用事件结构内部节点获得中止时间通过这个例子也好理解内部 节点中时间的含义(是事件响应的停止时间)。超时事件超时事件是一种特殊 的事件,当然也可以看成是默认的事件分支。如果存在其它事件源时,超时事 件完全可以被忽略或取消。看下面一个例子。图 4 仅有的两个事件之一超时事

基于labview的虚拟仪器 毕业设计(论文)开题报告

毕业设计(论文)开题报告 课 题: 基于Labview 虚拟 示波器的设计 院 系: 电气信息学院 专 业: 测控技术与仪器 学生姓名: 彭成和 学 号: 200801200106 指导教师: 李 亚 2012年 1月 16 日

开题报告填写要求 1.开题报告(含“文献综述”)作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效。 2.开题报告内容必须用黑墨水笔工整书写或按此电子文档标准格式(可从电气系网页或各教研室FTB上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见。 3.“文献综述”应按论文的格式成文,并直接书写(或打印)在本开题报告第一栏目内,学生写文献综述的参考文献应不少于10篇(不包括辞典、手册),其中至少应包括1篇外文资料。 4.统一用A4纸,并装订单独成册,随《毕业设计论文》等资料装入文件袋中。

毕业设计(论文)开题报告 1.文献综述:结合毕业设计(论文)课题情况,根据所查阅的文献资料,撰写2500字以上的文献综述,文后应列出所查阅的文献资料。 文献综述 一、引言 随着计算机技术、大规模集成电路技术和通讯技术的飞速发展,仪器技术领域发生了巨大的变化,美商国家仪器公司(National Instruments)于八十年代中期首先提出基于计算机技术的虚拟仪器的概念,把虚拟测试技术带入新的发展时期,随后研制和推出了基于多种总线系统的虚拟仪器。虚拟仪器就是在通用计算机上加上软件和(或)硬件,使得使用者在操作这台计算机时,就象是在操作一台他自己设计的专用的传统电子仪器。在虚拟仪器系统中,硬件仅仅是为了解决信号的输入输出,软件才是整个仪器系统的关键,任何一个使用者都可以通过修改软件的方法,很方便地改变、增减仪器系统的功能与规模,所以有“软件就是仪器”之说。虚拟仪器技术的出现,彻底打破了传统仪器由厂家定义,用户无法改变的模式,虚拟仪器技术给用户一个充分发挥自己的才能、想象力的空间。用户(而不是厂家)可以随心所欲地根据自己的需求,设计自己的仪器系统,满足多种多样的应用需求。虚拟仪器系统概念是对传统仪器概念的重大突破,是计算机系统与仪器系统技术相结合的产物。它利用计算机系统的强大功能,结合相应的硬件,大大突破传统仪器在数据处理、显示、传送、处理等方面的限制,使用户可以方便地对其进行维护、扩展、升级等。 虚拟仪器技术已成为测试、工业I/O和控制和产品设计的主流技术,随着虚拟仪器技术的功能和性能已被不断地提高,如今在许多应用中它已成为传统仪器

LabVIEW虚拟仪器实验报告

1.实验目的: 熟悉LabVIEW软件的基本编程环境。 2.实验内容: 创建一个VI程序,并将此程序保存为子VI。此VI要实现的功能是:当输入发动转速时,经过一定运算过程,输出发动机温度和汽车速度值。 3.实验步骤 (1)启动LabVIEW,创建一个VI。 (2)在前面板中放置一个温度计控件,并修改控件标签名为发动机温度和设置最大值为100。该控件从“控件—经典—经典数值”子选项板中获得。 (3)按同样的方法在前面板中放置一个仪表控件,并修改仪表控件的标签名为汽车速度,标尺刻度范围为0~150。 (4)按同样的方法在前面板中放置一个数值输入控件,并修改控件标签名为发动机转速。 (5)从“窗口”下拉菜单中选择“显示程序窗口”切换到程序框图窗口。 (6)在程序窗口中创建乘法函数,该函数中函数选项板中的“函数—编程—数值”子选项板中选择,并和发动机转速输入控件连线,为乘法函数创建一个常量,修改为图中所示值。 (7)按同样的方法创建加法函数、平方根函数和除法函数,并按图中所示修改常量值和连好线。 (8)切换至前面板,在发动机转速控件中输入数值,点击运行按钮,运行VI程序。 (9)修改图标为T/V以表示该子VI输出量为发动机温度和汽车速度,并保存为vi.vi。 前面板: 程序框图:

1.实验目的: 熟悉子VI的调用。 2.实验内容: 创建一个VI程序,并在编写程序过程中调用实验一中创建的子VI。此VI要实现的功能是:通过旋钮控件来控件输入的发动机转速值,中间调用实验一中创建的子VI作为计算过程,从子VI输出的值分别输出至不同的数值显示发动机的温度以及当前汽车速度,同时判断当汽车速度超过100时,系统将产生蜂鸣声,报警提示。 3.实验步骤: (1)启动LabVIEW,创建一个VI。 (2)在前面板中创建一个旋钮控件,修改标签名为发动机转速,设置数值范围为0~5000,从旋钮控件中调出一个数字显示控件来同步显示旋钮控件当前值。 (3)在前面板创建两个数值显示控件,并修改标签名为汽车速度和发动机温度。 (4)切换至程序框图窗口。 (5)在程序框图中创建一个大于或等于函数。 (6)在程序框图中调用实验一的子函数,从函数选板中的“函数—选择VI”选在实验一创建的子vi.vi。 (7)在程序框图中创建一个蜂鸣器函数,并按图示连线情况连线。 (8)切换至前面板,在发动机转速中输入数值,点击运行按钮运行。 前面板: 程序框图:

labview深入探索----labview和ClipBoard(剪切板)

labview深入探索----labview和ClipBoard(剪切板) 用过计算机的人几乎没有不知道剪切板的,但是剪切板实质是什么,如何在程序中编程实现,尤其是对LV 来说,剪切板很少有人涉及,实际上有些时候,恰当地运用剪切板可以取得事半功倍的效果.剪贴板内置在windows 中,并且使用系统的内部资源RAM,或虚拟内存来临时保存剪切和复制的信息,可以存放的 信息种类是多种多样的。剪切或复制时保存在剪贴板上的信息,只有再剪贴或复制另外的信息,或停电、或退出windows,或有意地清除时,才可能更新或清除其内容,即剪贴或复制一次,就可以粘贴多次。 clipboard 本质上一段共享的内存区域,任何应用程序都可以读写clipboard,相当于全局变量,不过这个全局变量是针对WINDOWS 操作系统的,所以它可以实现在几个LV 执行文件或者LV 和其它WINDOWS 程序实现数据传递,只所以LV 很少涉及到它,因为它不太适合实时控制,在任何时刻,任何WINDOWS 程序都可以进行读写,读没问题,因为剪切板读操作是不会清理剪切板的,而写操作则会更新剪切板,原来的信息丢失. 共享内存在单片中,有硬件双口RAM,原理和剪切板类似,应用非常广泛,主要用于实现一个控制板上多个单片机交换数据. LV 是否直接支持剪切板操作那? lv 在APP 属性节点中提供了操作CLIPBOARD 的功能. 上面非黄色的属性节点在LV 中是看不到了,NI 公司未公开的私有属性节点, NI 不保证它在以后的版本中继续支持. 私有属性节点是从CLIPBOARD 读取图片. CLIPBOARD READ 属性节点是从CLIPBOARD 读取字符串 CLIPBOARD TEXT 属性节点是向CLIPBOARD 写入字符串.

LabVIEW事件结构的妙用

LabVIEW事件结构的妙用 首先,我们回顾一下上期节目:LabVIEW网络讲坛乊悬案迷思中关于事件结构的几个重要知识点。 事件结构的基本组成部分: 事件结构五大基本组成部分 事件结构由——事件选择器、超时接线端、事件数据节点、事件过滤节点和动态事件接线端5个基本部分组成。 事件结构编程的3条黄金原则: 在使用LabVIEW事件结构迚行编程的时候,我们应该注意:1.不要将事件结构放置在while循环乊外,而应该放置在while循环的内部;2.不要在事件结构的内部使用循环处理事件,可选择采用生产者消费者结构,在生产者循环中放置事件结构,在消费者循环中处理事件;3.记得为事件结构添加一个单独处理停止按钮的分支。 遵守以上三条原则将使我们的程序更加健壮,避免在使用事件结构的时候出现前面板死锁等问题。 过滤事件与通知事件:

在LabVIEW中,以问号结束的事件被称为过滤事件,其余的事件被称为通知事件。对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定义的任务;而对于过滤事件,程序感知事件发生后,首先处理在事件结构中定义的任务,然后根据事件过滤节点的值(Discard?)来决定是否响应该事件或是否改变事件数据。 因此我们建议,在希望参与处理用户操作时使用过滤事件,因为过滤事件可以放弃事件或修改事件数据。如果仅需要知道并响应用户执行的某一特定操作,则应使用通知事件。 在本期节目中,我们着重介绍动态注册事件的用法。 静态和动态两种事件注册模式: 静态注册指定了事件结构的每个分支具体处理哪些事件。一旦VI开始运行,LabVIEW将自动注册这些事件,并且在VI运行的整个过程中无法改变事件结构所处理的事件。 而动态事件注册与VI服务器相结合,允许在程序运行时使用控件、VI或应用程序的引用来动态地指定和改变产生事件的对象。动态注册在控制LabVIEW产生何种事件和何时产生事件等方面更为灵活。 Demo 1和Demo 2帮助大家更好地理解动态注册事件编程方法。 Demo 1:动态注册事件_阿拉丁神灯.vi Demo概述: 在这个VI中,用严格自定义的方式将一个布尔类型的控件做出神灯的样子,并为这个布尔控件动态注册了”鼠标按下”的事件。这个事件执行的任务是显示神灯神仙,并弹出一个对话框。由于该事件采用的是动态注册的方式,所以可以通过一个按钮取消对该事件的注册。并通过另一个按钮再次注册该事件。这就是动态事件的使用效果,它可以在程序运行的过程中,动态地控制何时注册事件和注册什么样的事件。 程序实现:

虚拟仪器实验报告

实验一: 1.实验目的: 熟悉LabVIEW软件的基本编程环境。 2.实验内容: 创建一个VI程序,并将此程序保存为子VI。此VI要实现的功能是:当输入发动转速时,经过一定运算过程,输出发动机温度和汽车速度值。 3.实验步骤 (1)启动LabVIEW,创建一个VI。 (2)在前面板中放置一个温度计控件,并修改控件标签名为发动机温度和设置最大值为100。该控件从“控件—经典—经典数值”子选项板中获得。 (3)按同样的方法在前面板中放置一个仪表控件,并修改仪表控件的标签名为汽车速度,标尺刻度范围为0~150。 (4)按同样的方法在前面板中放置一个数值输入控件,并修改控件标签名为发动机转速。 (5)从“窗口”下拉菜单中选择“显示程序窗口”切换到程序框图窗口。 (6)在程序窗口中创建乘法函数,该函数中函数选项板中的“函数—编程—数值”子选项板中选择,并和发动机转速输入控件连线,为乘法函数创建一个常量,修改为图中所示值。 (7)按同样的方法创建加法函数、平方根函数和除法函数,并按图中所示修改常量值和连好线。 (8)切换至前面板,在发动机转速控件中输入数值,点击运行按钮,运行VI程序。(9)修改图标为T/V以表示该子VI输出量为发动机温度和汽车速度,并保存为vi.vi。 前面板: 程序框图:

实验二: 1.实验目的: 熟悉子VI的调用。 2.实验内容: 创建一个VI程序,并在编写程序过程中调用实验一中创建的子VI。此VI要实现的功能是:通过旋钮控件来控件输入的发动机转速值,中间调用实验一中创建的子VI作为计算过程,从子VI输出的值分别输出至不同的数值显示发动机的温度以及当前汽车速度,同时判断当汽车速度超过100时,系统将产生蜂鸣声,报警提示。 3.实验步骤: (1)启动LabVIEW,创建一个VI。 (2)在前面板中创建一个旋钮控件,修改标签名为发动机转速,设置数值范围为0~5000,从旋钮控件中调出一个数字显示控件来同步显示旋钮控件当前值。 (3)在前面板创建两个数值显示控件,并修改标签名为汽车速度和发动机温度。(4)切换至程序框图窗口。 (5)在程序框图中创建一个大于或等于函数。 (6)在程序框图中调用实验一的子函数,从函数选板中的“函数—选择VI”选在实验一创建的子vi.vi。 (7)在程序框图中创建一个蜂鸣器函数,并按图示连线情况连线。 (8)切换至前面板,在发动机转速中输入数值,点击运行按钮运行。 前面板:

基于LabVIEW计算器的设计

基于LabVIEW计算器的设计 专业:电子信息科学与技术 班级: XXXXX 学号:XXXXXX 姓名:XXXXX

基于LabVIEW计算器的设计 摘要:本次课程设计是基于LabVIEW虚拟仪器系统开发与实践等原理与技术而设计的计算器,可以用来模拟真实计算器而进行一些简单的基本运算。编程的思想是完成一种运算的完整过程是:输入第一个数,存储并显示输入要进行运算的类型并存储输入第二个数,存储并显示按“=”或则按其它运算符号“+、-、*、/”进行连续的运算时显示运算结果。 关键词:LabVIEW,计算器,四则运算,函数功能。 前言:创建3个字符串显示控件num1,num2,num3,其中:第一个输入数据存储在num1中,第二个输入数据存入num2中,将其赋给num3,并使num2为空,以便输入的数据存入num2,所有的运算是在num1和num3间进行,运算结果都赋给result,同时赋给num1,用于下一次的运算。创建4个布尔开关按钮change,change1,change2,change3,其中: Change的真假用来判断是第一个数据还是第二个数据,change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算,change2用来去掉数据小数末尾的0, change3用来保证backspace键仅对输入的数据有效,对运算结果无效。创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中:type1用来存储运算符号,type2用来保证连续“+、-、*、/”的正确性,所有的运算结果都赋给result,result 经过去零处理后得到result1,将数据显示在前面板上。此计算器可以实现基本的加减乘除以及开方、取倒、取反功能,可以进行数据的连续运算以及简单的报错、纠错功能,在此计算器模版上,可以继续添加条件分支,实现更多功能的运算,但是不支持第二个数位为开方、取反、取倒的功能。 一、LabVIEW简介 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C 和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。虚拟仪器(virtualinstrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。

相关文档
最新文档