LabVIEW与其他应用程序的接口设计

LabVIEW与其他应用程序的接口设计
LabVIEW与其他应用程序的接口设计

LabVIEW与其他应用程序的接口设计

李景广 王哨军 董坤 汪增宏

(第二炮兵工程学院101教研室,西安 710025)

摘要:本文以Window XP下的LabVIEW 7.0为应用平台,设计了LabVIEW与其他应用程序的接口,程序中调用了公式

节点、C语言代码、MATLAB脚本节点、Window API、ActiveX控件,着重介绍调用方法和过程。以两个实数的减法为

例实现了LabVIEW调用其他程序的方法。

关键词:LabVIEW;CIN;MATLAB;动态链接库DLL;CLFN

中图分类号:TP319文献标识码:A

Design of Language Interface Between LabVIEW and Other Frequently Used Program Li Jingguang Wang Shaojun Dong Kun Wang Zenghong

(The Second Artillery Engineering College, X i’an 710025)

Abstract: In this paper, the interface of language between LabVIEW and other frequently used program,was designed based on LabVIEW 7.0 of Window XP. Called Formule Node,C Language Node ,MATLAB Script,Window API and ActiveX in the process and Emphasized discussing the method of calling, .The subtract of two real was taked for discussing the method of calling.

Key words:LabVIEW;CIN;MATLAB;DLL;CLFN

虚拟仪器的软件开发平台主要有以下几种:NI公司LabVIEW、LabWindows/CVI;Agilent 公司的VEE及微软的VB、VC等。LabVIEW是一种图形化编程语言,使用“所见即所得”的可视化技术建立人机界面,使用图标表示功能模块,使用图标之间的连线表示各模块间的数据传递,用简单方便的图形化编程取代了复杂的语言编程。同时,LabVIEW继承了高级编程语言的结构化和模块化编程的优点,支持模块化与层次化设计,这种结构的设计增强了程序的可读性。LabVIEW尤其适合从事科研、开发的科学家、工程技术人员,被誉为工程师和科学家的语言。

尽管LabVIEW的功能强大,但是有些时候还是需要调用其他应用程序来辅助其编程,通过调用这些接口可以实现与LabVIEW的无缝链接。不仅如此,LabVIEW还可以调用Window API和ActiveX控件,这些都极大的丰富了LabVIEW的功能,扩展了LabVIEW的使用范围。本文将介绍LabVIEW与其他程序的接口设计,着重介绍其调用的方法。应用平台是Window XP下的LabVIEW 7.0,本文以实现两个实数的减法为例介绍LabVIEW调用其他程序的方法,目的是大家更加关注接口调用的方法。

1调用公式节点

公式节点(Formule Node)是一种结构,允许用户使用类似于多数文本编程语言的句法。可编写一个或多个代数公式,这对于实现多个变量的公式很有用。公式节点(Formule Node)位于Fuctions/ALL Fuctions/Structures子选项板。在框图上放置公式节点,通过从快捷菜单选择Add Input 或Add Output来增加输入、输出端口并使用Labeling工具键入变量名。对于算术表达式来说,可给语句添加注释,注释内容用/*注释*/封装。使用Labeling工具在公式节点内输入公式,注意每个公式一定要用分号结束,并且变量的名字是大小写敏感的。在公式节点中,变量或公式的数量是没有限制的。如果有很多公式,可使用Positoning工具扩大公式节点,或从公式节点上弹出菜单并选择Scrollbar放置滚动条,

可以向下滚动来查看公式列表。实现程序框图如图1所示。

图1 实现两个实数之差的程序框图

491

2调用C语言代码

LabVIEW 7.0中,调用C语言是通过CIN(Code Interface Node )的功能节点来实现的。用户可以将编写的C语言代码通过Visual C++ 6.0编译成LabVIEW可以识别的格式,并与CIN 相连,这样当CIN被执行时,就会自动调用此节点连接外部C语言代码,实现与C语言的通信。其一般步骤为:

创建一个空的CIN节点;

为CIN节点设置输入、输出端口;

创建C语言源程序;

创建并编译*.lsb文件;

加载*.lsb文件并完成调用。详细的步骤如下:

2.1首先创建一个空的CIN节点

在LabVIEW 7.0中,CIN节点位于Fuctions/ALL Fuctions/Advanced模版里。为CIN节点创建输入、输出端口默认情况下CIN只有一个输入和一个输出,在已有的端口上单击右键选择Add Parameter 增加端口,单击Remove Parameter可以删除添加的端口。被减数x和减数y作为CIN节点的两个输入,结果z作为输出端口。

2.2创建C语言源程序

在CIN节点上单击右键选择Creat .c File,这时弹出[Choose a code resource .c file]对话框,目的是让用户选择保存C语言源程序的位置。输入文件名后,LabVIEW 7.0会自动创建一部分C 语言的源代码,代码如下:/* CIN source file */ # include "extcode.h"

MgErr CINRun(float64 *x, float64 *y, float64 *z);

MgErr CINRun(float64 *x, float64 *y, float64 *z)

{

/*Insert code here */

return noErr; }

/* Insert code here*/处添加自己的程序代码即完成了C语言源程序的编辑。添加的程序代码为:*z=*x-*y;

2.3将C语言源文件编译成为LabVIEW的CIN 节点可以调用的*.lsb文件

编译的过程简要的分为两步:第一步是将C

语言源程序编译成为动态链接库DLL文件;第二步是将DLL编译成为*.lsb文件,这个过程借助中文简体企业版Visual C++ 6.0来完成。首先创建一个空的动态链接库文件工程,并命名为sub,并选择保存文件的路径。然后把C语言源程序添加到工程里,并把LabVIEW 7.0的cintools文件夹下cin.obj、labview.lib、lvsb.lib、lvsbmain.def 四个文件添加到工程里。这些文件是编译*.lsb文件的必需。下面设置*.lsb文件的参数,从Project 菜单中选择Setting,在弹出的对话框中,将设置(S)设置为所有设置,并切换到C/C++选项页,设置分类为预处理器,附加包含路径中添加前面用的LabVIEW 7.0的cintools目录。接着把分类设置为Code Generation,在Structure member alignment 列表中选择1Byte,在Use run-time列表框中选择Multithreader Dll。切换到自定义组建选项页,在“命令”窗口中输入代码:“D:\ProgramFiles\National-Instruments\LabV-IEW

7.0\cintools\lvsbutil$(TargetName)-d$(WkspDir)\$(

OutDir)”,在输出窗口中输入以下代码:“$(OutDir)\$(TargetName).lsb”,设置完后按下“确定”键。在Bulid 菜单中选择Rebuild ALL,编译文件,编译成功后在当前目录的Debug目录下便生成一个sub.lsb文件。(注:D:\Program Files\National- Instruments\LabVIEW 7.0是LabVIEW 7.0的安装路径。)

2.4在LabVIEW 7.0加载*.lsb文件并完成调用

在LabVIEW 7.0框图窗口中,在公式节点上单击右键,选择Load Code Resource File,把刚才编译好的sub.lsb文件,至此CIN

节点创建完毕。

完成后的CIN节点程序框图如图2所示。

图2 完成后的CIN节点程序图 3调用MATLAB脚本节点

LabVIEW使用脚本节点可以执行MATLAB 脚本。MATLAB是一种科学和工程可视化计算领域广泛流行的交互式编程环境。许多科学家和技术工作人员开发和使用过MATLAB脚本(称为m文件)。注意LabVIEW是使用ActiveX技术来

492

493实现MATLAB 脚本节点的,所以调用MATLAB 脚本节点必须要在Window 平台上。调用MATLAB 脚本节点通调用公式节点过程很相似。其一般步骤为: 在框图里添加MATLAB 脚本节点; 向MATLAB 脚本节点导入脚本;

调整输入和输出变量;

调试运行程序;

3.1在框图里添加MATLAB 脚本节点

MATLAB 脚本节点位于Function/All

Function/Analyze/Mathematics/Formula 。选中

MATLAB 脚本节点并将其放置在框图上,然后可

以用Positioning 工具将脚本节点调整到所希望的

大小。

3.2向MATLAB 脚本节点导入脚本 有两种方法导入脚本。一种是使用Operating 或Labeling 工具直接向MATLAB 脚本节点中输入脚本;另一种是导入写好的脚本文件,在快捷菜单中选择Import ,导入m 文件。为了便于调试,建议在导入脚本文件到LabVIEW 之前,先在MATLAB

环境内编写并运行调试好。先用第一种方法实现两个实数的相减,完成后的程序框图如图3所示。

图3 两实数相减的程序框图 第二种方法:先在MATLAB 环境内编写并运行aaa.m 文件,目的是在MATLAB 中产生并绘图显示给定数量的随机数,同时脚本还将计算随

机数的平均值用于输出。在MATLAB 环境中编写源程序aaa.m 文件,经运行得出y =0.4978(这里n

预置为100)结果如图4所示。

图4 MATLAB 环境中aaa.m 源程序及其运行的结果

3.3调整输入和输出变量及调试运行程序

为MATALB 脚本节点添加输入变量n 和输

出变量y ,并为n 构造数字控件,为y 构造数字

指示器。n 的值可以在节点中修改也可以在源程

序中修改。从快捷菜单上选择Import 导入刚才在

MATLAB 环境中编写的

aaa.m 源程序,经运行得

出结果如图5所示。

图5 调用MATLAB 节点的运行结果

4与其他程序的接口 4.1调用Window API 函数 在LabVIEW 7.0中,用户还可以调用Window API 函数进行底层操作。对Window API 函数的调用是通过CLFN(Call Library Function Node)来实现的,同调用CIN 节点方法类似。限于篇幅这里就不做具体的叙述。本文给出调用Message Box 来构建Windows 消息框的例子。在LabVIEW 框图中添加一个空的CLFN ,经添加参数后的

CLFN 图标上出现四个输入数据端口,分别是

hWnd 、IpText 、IpCaption 以及uType ,分别给四

个输入连接合适的数据端口,至此CLFN

配置完毕。配置后的CLFN 如图6所示:

图6 配置后的CLFN

494运行程序,将弹出Windows 消息框,消息框显示“是(Y ),否(N )和取消”三个按钮,并

且“取消”为默认按钮。

4.2调用ActiveX 控件 ActiveX 是美国微软公司提出的一组使用组件对象模型(COM ),使得软件组件在网络环境中进行交互的技术集,它与具体的编程语言无关。下面简要的介绍下其调用的方法。从控件模板中的Containers 子模板中选取ActiveX Container 对象,并置于前面板。导入Windows Media Player ActiveX 控件。切换到框图中,从ActiveX 子模版中选取Invoke Node 函数并放置在框图的合适位置,并把Windows Media Player ActiveX 控件的

输出数据端口与Invoke Node 函数的Reference

输入数据端口相连,单击Method 从中选择

openPlayer 。

在bstrURL 输出端口创建一个地址控

件。程序框图及前面板如图7所示。

图7 调用ActiveX 控件的框图及前面板

在bstrURL 添加了一首音乐文件的路径,运行程

序,将会打开Windows Media Player 程序,播放

这段乐。

5结语 LabVIEW 与其他应用程序的接口极大的丰富了LabVIEW 的功能,使得其他应用程序可以

辅助它进行程序设计,合理地应用LabVIEW 与其他应用程序的接口,学会调用其他应用程序进行程序设计,会使得LabVIEW 编程如虎添翼,本文比较系统的介绍了LabVIEW 与常用应用程序的接口设计,并详细的叙述了调用的过程。本文对开发和应用LabVIEW 编程的工程技术人员有较好的借鉴价值。

参考文献 [1][美]Robert H. Bishop ,乔瑞萍,林欣,朱世华.LabVIEW 7实用教程[M].北京:电子工业出版社,2005.8 [2] 王磊,陶梅.精通LabVIEW8.0[M].北京:电子工业出版社,2007.1 [3] 周求湛,钱志鸿,刘萍萍,戴宏亮.虚拟仪器与

LabVIEW 7 Express 程序设计[M].北京:北京航空航天

大学出版社,2004.6

[4] 李伯全,潘海彬,罗开玉. LabVIEW 平台下基于DLL

的普通数据采集卡的驱动[J].仪表技术,2004,(2),11~12.

[5] 俞亚平. LabVIEW 与C 接口设计[J].仪表技术,

2005,(3),65~66

作者简介

李景广:男,1982年出生,现为中国人民解放军第二炮兵工程学院在读硕士研究生;主要研究方向为检测技术与自动化装置,虚拟仪器应用与开发。

LabVIEW程序设计步骤

LabVIEW 程序设计步骤 下面通过一个设计实例来详细介绍虚拟仪器软件LabVIEW 的程序设计步骤。 设计目标:假设有一台仪器,需要调整其输入电压,当调整电压超过某一设定电压值时,需通过指示灯颜色变化发出警告。 1 建立新VI 启动LabVIEW 程序,单击VI 按钮,建立一个新VI 程序。 这时将同时打开LabVIEW 的前面板和后面板(框图程序面板)。在前面板中显示控件选板,在后面板中显示函数选板。在两个面板中都显示工具选板。 如果选板没有被显示出来,可以通过菜单查看(View )/工具选板(Tools Palette )来显示工具选板,通过查看(View )/控件选板(Controls Palette )显示控件选板,通过查看(View )/函数选板(Functions Palette )显示函数选板。 也可以在前面板的空白处,单击鼠标右键,以弹出控件选板。 2 前面板设计 输入控制和输出显示可以从控件选板的各个子选板中选取。 本例中,程序前面板中应有1个调压旋钮,1个仪表,1个指示灯,1个关闭按钮共4个控件。 1)往前面板添加1个旋钮控件:控件(Controls )→ 新式(Modern ) → 数值(Numeric ) → 旋钮(Knob ),如图2-14所示,标签改为“调压旋钮”; 2)往前面板添加1个仪表控件:控件(Controls )→ 新式(Modern ) → 数值(Numeric ) → 仪表(Meter ),如图2-14所示,标签改为“电压表”。 3)往前面板添加1个指示灯控件:控件(Controls )→ 新式(Modern )→ 布尔(Boolean ) → 圆形指示灯(Round LED ),如图2-15所示,将标签改为“上限灯”。 4)往前面板添加1个停止按钮控件:控件(Controls )→ 新式(Modern )→ 布尔 图2-15 添加指示灯、按钮控件 图2-14 添加旋钮、仪表控件

LABview 程序设计

基于Labview的ADD波形 第一部分:概述 随着计算机技术、大规模集成电路技术和通讯技术的飞速发展,仪器技术领域发生了巨大的变化,美商国家仪器公司(National Instruments)于八十年代中期首先提出基于计算机技术的虚拟仪器的概念,把虚拟测试技术带入新的发展时期,随后研制和推出了基于多种总线系统的虚拟仪器。 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。 本次就是一个基于labview平台的一次设计来达到对虚拟仪器课程的掌握,尽量使用学习到知识,在设计过程中有些部分存在对于总体设计影响不大,仅仅作为对知识的巩固。 本次的ADD waveforms 设计能够对两种不同的信号进行的运算,由于现有的示波器仅能对两组波形进行简单的加减,而ADD waveforms能够进行除加减意外的乘除运算。 第二部分:设计的思路与基本原理 本次设计是基于labiew界面的一个虚拟仪器的设计,所设计的虚拟仪器要具有对一个正弦波、一个三角波进行各种合成运算的功能,可完成add、divide、multip、subtra四种基本数学运算的功能。 通过以上的目标,我们可以分别选择能产生三角波、正弦波的子VI,再通过一个条件结构来确定每次输入的波形需要进行那种运算,然后在波形图中显示出来以供观察,最后可以比较ADD前的波形与ADD之后的,同时对最终信号进行了频谱分析。 本次设计结构主要有这基本分组成:条件结构、信号产生子VI、信号合并、波形验证部分、控制开关部分、频谱分析部分。在接下来的部分会对这些部分做详细的介绍。 第三部分:设计模块与元器件的介绍

labview基本程序设计

虚拟仪器导论 实验报告 目录 一.实验目的

二.实验原理 2.1 一阶系统状态空间表达式 2.2 四阶龙格—库塔法 2.3 PID控制算法 三.实验内容 四.实验报告 4.1一阶系统仿真前面板 4.2 一阶系统仿真程序框图 五.实验分析 5.1 一阶系统特点 5.2 PID参数对控制系统性能的影响 5.3 PID参数整定方法 六.实验总结 实验二 LabVIEW基本程序设计 一、实验目的 (1) 熟悉LabVIEW 8.5开发环境; (2) 掌握LabVIEW编程语言的程序结构和图形控件的使用方法; (3) 掌握LabVIEW编程环境的程序调试方法; 二、实验原理与内容 已知一阶系统状态空间表达式

x y u x x = + - =2 2.0 编程时可采用4阶龙格-库塔算法求解上述方程: K1 = -0.2*X(k)+2*u(k); K2 = -0.2*(X(k)+0.5*T*K1)+2*u(k); K3 = -0.2*(X(k)+0.5*T*K2)+2*u(k); K4 = -0.2*(X(k)+T*K3)+2*u(k); X(k+1) = X(k)+(K1+2*K2+2*K3+K4)*T/6; Y = X(k+1); 控制算法可采用增量式PID控制算法: du = Kp*(e(k)-e(k-1))+T/Ti*e(k)+Td/T*(e(k)-2*e(k-1)+e(k-2)); u(k) = u(k-1)+du; 本实验要求基于LabVIEW编程环境,针对上述一阶系统进行控制仿真。通过控制系统仿真,分析一阶系统的特点和各个PID参数对控制系统性能的影响。 三、实验报告 (1)简述实验目的及实验原理。 (2)完成实验内容,并附上前面板和程序框图。 (3)分析一阶系统特点和各PID参数对控制系统性能的影响,总结PID参数整定的方法。 (4)总结在编程过程中遇到的问题、解决办法。

基于labview的贪吃蛇游戏程序设计

成绩评定表

课程设计任务书

目录 1 目的及基本要求 0 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小 蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为 “苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的 身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 0 4.1 运行结果 (8)

1 目的及基本要求 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现贪吃蛇游戏的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。 2 贪吃蛇游戏设计原理 贪吃蛇游戏大体上可分为以下几个部分: 1) 控制部分就是通过输入输出来控制蛇的运动 2) 逻辑部分进行判断蛇吃了没有是否撞墙同时把蛇的长度增加一节还要实现分数的计算 3) 图象显示部分就是将游戏显示出来 本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋; 4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续; 5.游戏可以有多种难度选择等 3 贪吃蛇游戏设计与仿真 3.1 前面板设计 采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:

LabVIEW和声卡控制系统程序设计

LabVIEW和声卡控制系统程序设计 1 引言 目前,控制系统的编程软件非常多,各类编程语言也数不胜数,具有代表性的有C语言、C++及汇编语言等,相比LabVIEW软件来讲,由于他们具有严格的语言逻辑以及语言规则,所有在设计、实践中往往比较复杂,而LabVIEW作为一种G语言,以图形,线条,结点的形式进行编程,简单易学。而且图形所表示的功能已经用完善的代码集成过,拿来就用,也节省了大量的工作任务。声卡作为一种普遍而且常用的材料,能够在LabVIEW自带的声卡VI中得到更好的运用和体现,二者结合是作为平面控制系统最实用的,最方便的,而且成本较低的体现。 2 LabVIEW软件介绍 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是它与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G 编写程序,产生的程序是框图的形式。用图标代替文本行创建应用程序的图形化编程语言,LabVIEW采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是LabVIEW的程序模块。虚拟仪器

具备很好的数据采集、仿真、数字信号处理的功能。LabVIEW 拥有专门用于控制领域的模块――LabVIEWDSC以及 NI-Motion。除此之外,工业控制领域常用的设备、数据线等通常也都带有相应的LabVIEW驱动程序。使用LabVIEW可以非常方便的编制各种控制程序。 3 声卡介绍 3.1 PCI声卡 PCI声卡就是指采用PCI接口的独立声卡,PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。从结构上看,PCI是在CPU 的供应商和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。 3.2 USB声卡 USB声卡在原理上和结构上与普通的板载声卡很相似,但是由于USB具有其外置特点,他就没有了电路体积的限制,所以他能够通过复杂的模拟电路并采用更好的屏蔽设计从 而提高音质。脱离机箱,拥有不错的音质使他在性能上,实用性上得到了很大的提升,价格也相对较低,因此我们采用的是USB声卡作为平面控制系统的输出部分。 4 LabVIEW程序设计

LabVIEW程序设计-课程设计

LabVIEW程序设计-课程设计 成绩评定表 学生姓名班级学号 基于UDP的点对点专业通信工程课程设计题目 和广播通信 评 语 组长签字: 成绩 20 年月日日期 沈阳理工大学信息科学与工程 课程设计任务书 学院信息科学与工程学院专业通信工程学生姓名班级学号课程设计题目基于UDP的点对点和广播通信实践教学要求与任务: 1,学习LabVIEW的虚拟仪器原理、设计方法和实现技巧, 2(掌握简单LabVIEW程序的编程实现, 3(掌握简单通信系统设计和分析方法, 4(采用Labview语言,实现点对点和广播通信。 ,1,通过检索、查资料、调查研究、确定方案、画出组成系统结构方框图,,2,采用LabVIEW实现点对点和广播通信系统, ,3,系统调试与改进,调整系统参数,分析系统运行结果, ,4,写出设计总结报告。 工作计划与进度安排:

17周学习LabVIEW虚拟仪器原理、设计方法和实现技巧,掌握简单LabVIEW程序的编程实现,掌握简单通信系统设计和分析方法。 19周采用LabVIEW语言,实现点对点和广播通信,并对系统进行性能分析。 指导教师: 专业负责人: 学院教学副院长: 201 年月日 201 年月日 201 年月日 2 沈阳理工大学信息科学与工程 目录 1(概述 ........................................... 4 1.1 LABVIEW简 介 ......................................... 4 2.2 UDP协议简 介 ........................................ 4 2.基于UDP的点对点和广播通信的设计原理 ............ 5 3(基于UDP的点对点和广播通信的程序设 计 ........... 5 3.1 前面板设计 ......................................... 5 3.2 程序框图(后面板)设计 (7) 3.2.1 后面板设计概述 (7) 3.2.2 打开/关闭本地UDP端口功能 (8) 3.2.3 选择广播或者点对点方式发送数据功能设计 (9) 3.2.4 发送数据功能设计 (9) 3.2.5 接受数据功能设计 ........................... 10 4.程序调 试 ....................................... 10 5.总 结 ........................................... 12 6.参考文 献 (13) 3 沈阳理工大学信息科学与工程

labview课程设计

《虚拟仪器》课程设计 题目:摩托车仪表盘 学院名称:物理与电子工程学院 专业班级:电子信息科学与技术 学生姓名:方皖南 学号: 201540620302 指导教师:胡楠 时间:2018-10-25

目录 一、labVIEW介绍 (3) 二、摩托车仪表盘的设计 (4) 2.1前面板图示 (4) 2.2程序框图 (4) 2.3程序说明 (5) (1)左转灯以及右转灯的控制 (5) (2)让左右等闪烁的控制 (6) (3)里程表控制 (6) (4)速度表控制 (7) (5)油罐的控制 (7) (6)所有数值归零控制 (7) 三、设计小结 (7) 四、参考文献 (8)

一、labVIEW介绍 LabVIEW (Laboratory Virtual Instrument EngineeringWorkbench,实验室虚拟仪器集成环境)是一个基于G(Graphic)语言的图形编程开发环境,在工业界和学术界中广泛用作开发数据采集系统、仪器控制软件和分析软件的标准语言,对于科学研究和工程应用来说是很理想的语言。它含有种类丰富的函数库,科学家和工程师们利用它可以方便灵活地搭建功能强大的测试系统。LabVIEW编程语言最主要的两个特点是图形化编程和数据流驱动:(1)图形化编程 LabVIEW与Visual C++、Visual Basic、LabWindows/CVI等编程语言不同,后几种都是基于文本的语言,而LabVIEW则是使用图形化程序设计语言G语言,用框图代替了传统的程序代码,编程的过程即是使用图形符号表达程序行为的过程,源代码不是文本而是框图。一个VI有三个主要部分组成:框图、前面板和图标/连接器。框图是程序代码的图形表示。 LabVIEW的框图中使用了丰富的设备和模块图标,与科学家、工程师们习惯的大部分图标基本一致,这使得编程过程和思维过程非常的相似。多样化的图标和丰富的色彩也给用户带来不一样的体验和乐趣。 前面板是VI的交互式用户界面,外观和功能都类似于传统仪器面板,用户的输入数据通过前面板传递给框图,计算和分析结果也在前面板上以数字、图形、表格等各种不同方式显示出来。 图标是VI的图形符号,连接器则用来定义输入和输出,每一个VI都有图标和连接器。用户要做的工作就是恰当地设置参数,并连接各个子VI。编程一般步骤就是使用鼠标选取合适的模块、连线和设置参数的过程,与烦琐枯燥的文本编程相比更为简单、生动和直观。 如果将虚拟仪器与传统仪器作一类比,前面板就像是仪器的操作和显示面板,提供各种参数的设置和数据的显示,框图就像是仪器内部的印刷电路板,是仪器的核心部分,对用户来讲是透明的,而图标和连接器可以比作电路板上的电子元器件和集成电路,保证了仪器正常的逻辑和运算功能。 (2)数据流驱动 宏观上讲,LabVIEW的运行机制已不再是传统上的冯·诺伊曼式计算机体系结构的执行方式了。传统计算机语言(如C语言)中的顺序执行结构在LabVIEW中被并行机制所代替。本质上讲它是一种带有图形控制流结构的数据流模式,程序中的每一个函数节点只有在获得它的全部输入数据后才能够被执行。既然LabVIEW程序是数据流驱动的,数据流程序设计规定,一个目标只有当它的所有输入有效时才能够被执行;而目标的输出只有当它的功能完全时才是有效的。于是LabVIEW中被连接的函数节点之间的数据流控制着程序的执行次序,而

LabVIEW程序设计方法

LabVIEW程序设计方法 为了提高程序设计效率、保证程序设计质量、便于程序的维护,在设计程序时应遵循一些基本的设计方法。 当开发一个较大的项目时,有必要使用由顶向下的设计方法。LabVIEW语言在使用由顶向下的设计方法上,比其他语言有优势,因为可以先做出用户的接口,然后再逐渐完善它。 1.使用由顶向下的设计方法 1)用户需求列表 先列出一个表格,包括用于用户操作的面板(指大的程序中需要弹出的子程序的面板),这些面板上一般包含控制量与显示量类型,实时分析需求以及数据的表达等。然后创建一个临时的前面板,提供给预期的用户。通过一系列交互的过程,按用户的要求反复调整用户接口。在这个阶段,可能还需要做一些底层的调研,确定可以达到预期的设计要求。 2)设计程序的层次结构 LabVIEW语言的强大功能建立在它的层次特性之上。每创建一个程序,就可以在高层程序的框图中把它当做子程序使用。在这种层次结构下,从本质上说层数是无限的。 确定所需顶层模块之后,使用这些顶层模块创建程序代码。为每个模块创建一个子程序,这个子程序不具备任何功能,只是代表未来子程序的一个模型。每个子程序应有一个图标和一个包括所有必要的输入输出量的前面板。但是暂时不必为它创建程序代码,而是确认它是否为顶层程序所必需的。 把这些模型程序组合在一起后,一般说来就应该去理解每个模块的功能,以及它们如何提供需要的结果。研究每一个模块是否能提供后续程序所必需的信息,然后确认顶层程序代码包含了各程序间传递数据的正确连线。 尽量避免使用不必要的全局变量,因为它们会掩盖了程序间的数据依存关系。对一个大的程序来说,如果依赖全局变量作为程序间传递信息的手段,会使调试变得困难。 3)程序编码 在程序编制过程中,应按照工作的逻辑划分和考虑代码复用的可能性,通过创建子程序实现模块化的编程,把解决一般性问题与特殊问题相结合。 子程序创建以后及时调试。高层的调试尽管是不可避免的,但是在一个小模块中发现程序缺陷要比在多个程序的层次上方便得多。 2.规划接口板 有些子程序尽管已经具备足够的功能,但有时考虑在此基础上修改为其他的函数,并且新的函数有可能需要增加输入或输出,那么应该选择一个有富裕端口的接口板样式,暂时不为那些多余端口连线。这样,以后如果需要另外的输入或输出时就不必再改变接口板了,从而减小这些改变对整个层次结构的影响。 把控制量和显示量连接到接口板时,把输入量放在左侧,输出量放在右侧。这样可以避免程序中连线的混乱。 如果创建了一组经常用在一起的子程序,尽量使它们的接口板一致,通用的输入放在同样的位置。这样容易记住每个输入的位置,而不必再使用帮助窗口。如果我们创建了一个子程序它产生的输出是另一个子程序的输入,尽量将输入与输出端口对齐。这种技巧使连线看上去简洁。

Labview程序设计

《Labview程序设计》教学大纲 课程名称:Labview程序设计 学分:2.5 总学时:40 讲课学时:24 实验学时:16 考核方式:考试 先修课程:《C语言》、《计算机技术基础》、《单片机原理及应用》 适用专业:机械电子工程 开课系或教研室:机械电子工程 一、课程性质与任务 1.课程性质 本课程是机械电子工程专业的专业任选课。 2.课程任务 (1)了解LabVIEW的功能,熟悉LabVIEW的开发环境、VI的组成与创建步骤。 (2)熟悉LabVIEW的数据类型、数组控件及常量的创建与使用、簇及常量的创建与使用。 (3)掌握For/While Loop (Shift Register、Auto-indexing)、Charts与Graphs的概念、创建与使用。 (4)掌握Case Structure、Sequence Structure与Formula Node的创建与使用。 (5)掌握LabVIEW中的属性节点与调用节点的创建与使用方法。 (6)了解LabVIEW中的字符串、文件I/O的操作;了解全局变量与局部变量的创建与使用方法。 (7)了解LabVIEW中的Control Reference的创建与使用;了解事件驱动编程;掌握对菜单的编 辑与响应步骤,掌握对VI的属性进行设置。 (8)掌握有关数据采集的基本概念及在LabVIEW中进行数据采集编程的方法。 二、课程教学基本要求 对课程教学环节的要求(包括理论课时;课堂实践、实验、上机课时;课堂实践课时的具体安排意见;成绩考核形式等) 1、课时分配 理论课时为24,实践课时为16。 2、成绩评定 成绩评定采用百分制。 3、计分原则本课程为期末闭卷考试和平时成绩相结合进行综合评定,最终成绩由以下三部分组成: 第一部分:期末闭卷考试成绩占总成绩的70%; 第二部分:平时作业成绩占总成绩的20%; 第三部分:上课考勤占总成绩的10%。 三、课程教学内容 第一章LabVIEW概述 1.1虚拟仪器概述 1.2LabVIEW是什么? 1.3 LabVIEW的运行机制

Labview程序设计模式

LabVIEW程序设计模式,这个相对学术化的词语是对一系列用于LabVIEW程序设计结构的归纳和总结。在建造房子时,需要针对房子的用途设计整个房屋的架构,确保房子在这个架构上的坚固性和可建造性。写程序时同样如此,不同的应用需要使用不同的程序设计结构。例如我们在LabVIEW中构建一个用户界面型程序时,往往首先在背面板中加入一个大的while循环以使程序持续运行。如果需要响应用户界面事件则还需要加入一个Event事件结构。那么我们是否曾经考虑过以下的这些问题: (1) 应用中是否存在并行响应的情况?如在持续的数据采集过程中,是否需要同时响应单击菜单的事件? (2) 底层获取的数据如何与上层的数据显示部分进行数据交互? (3) 上层的界面如何受底层程序的控制? (4) 同一个循环中采用哪种方式进行数据交换?是局域变量、全局变量、共享变量还是移位寄存器? (5) 程序是否具有可扩展性? (6) 如果程序运行过程中,发生系统错误或者硬件通讯错误,是否会停止运行?待错误排除后是否会继续运行? (7) 如何组织程序中的核心数据结构?是否需要采用面向对象程序设计? (8) 如何记录测试数据并生成报表?如何保存用户配置参数? (9) 如何处理程序运行中的断电情况?重新启动时的继续运行?数据的最低丢失? (10) 如何实现运行过程的采样触发和多点采样的同步? 当然,也许只是使用LabVIEW临时地调试或开发某个小的应用,无需考虑上述的问题。但是,如果使用LabVIEW开发一个典型应用的程序却无法回避这些问题。因此,有必要对各种程序开发的应用进行归纳和总结,提取它们对应的LabVIEW程序结构中的共性。此外,针对这些共性研究哪种结构更加适合于应用。这些结论综合起来就形成了程序设计的模式。 对于初学者而言,理解和掌握程序设计模式往往能起到事半功倍的效果;而对高级用户而言,归纳各种程序设计模式又能够不断完善程序中遇到的问题,并衍生一套符合特定应用的特有的程序设计模式。 状态机是一种最为经典的程序设计模式,在LabVIEW 7.1(含)之前它几乎统治了大部分的LabVIEW主程序。最基本的状态机结构如图 1所示。状态是状态机运行的经脉,在开始使用状态机模式撰写程序时需要将应用分为若干个状态。下面以图中的应用为例说明基本状态机的使用。 【应用1】 前面板具有3个按钮(Control)和1个波形显示控件Chart(Indicator),功能分别是: 1) 开始采集:Label是start,单击后开始进行模拟数据采集程序(这里使用随机数代替)。 2) 关于:Label是dialog,单击后弹出对话框以说明这个程序的版权、帮助等信息。 3) 停止:Label是stop,单击后停止程序的运行。 4) Chart:用于显示获取的随机数。 这是一个非常简单的应用,但是具有一定的代表性。根据要求,该应用至少包含以下5种状态结构。 1) Initial:初始化状态; 2) Idle:空闲状态,用于响应各种用户界面操作; 3) acquire:采集状态,用于持续模拟采集数据; 4) about:用于弹出关于和帮助对话框; 5) stop:停止状态,退出循环并中止程序。

LabVIEW程序设计步骤

LabVIEW程序设计步骤 下面通过一个设计实例来详细介绍虚拟仪器软件LabVIEW的程序设计步骤。 设计目标:假设有一台仪器,需要调整其输入电压,当调整电压超过某一设定电压值时,需通过指示灯颜色变化发出警告。 1 建立新VI 启动LabVIEW程序,单击VI按钮,建立一个新VI程序。 这时将同时打开LabVIEW的前面板和后面板(框图程序面板)。在前面板中显示控件选板,在后面板中显示函数选板。在两个面板中都显示工具选板。 如果选板没有被显示出来,可以通过菜单查看(View)/工具选板(Tools Palette)来显示工具选板,通过查看(View)/控件选板(Controls Palette)显示控件选板,通过查看(View)/函数选板(Functions Palette)显示函数选板。 也可以在前面板的空白处,单击鼠标右键,以弹出控件选板。 ) 2 前面板设计 输入控制和输出显示可以从控件选板的各个子选板中选取。 本例中,程序前面板中应有1个调压旋钮,1个仪表,1个指示灯,1个关闭按钮共4个控件。 1)往前面板添加1个旋钮控件:控件(Controls)→新式(Modern)→ 数值(Numeric)→旋钮(Knob),如图2-14所示,标签改为“调压旋钮”; 2)往前面板添加1个仪表控件:控件(Controls)→新式(Modern)→数值(Numeric)→仪表(Meter),如图2-14所示,标签改为“电压表”。 3)往前面板添加1个指示灯控件:控件(Controls)→新式(Modern)→布尔(Boolean)→圆形指示灯(Round LED),如图2-15所示,将标签改为“上限灯”。 … 图2-15 添加指示灯、按钮控件…

LabVIEW程序设计模式(四)—状态机和事件结构的结合

LabVIEW程序设计模式(四)—状态机和事件结构的结合 LabVIEW程序设计2009-05-04 14:25:19 阅读497 评论0 字号:大中小订阅 上两节分别解决了基本状态机的第(1~5)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(1~5)个问题。答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。 状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case 结构和event结构组成。而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图20所示的两种组合方式。 在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case 中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。 在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。 图20 三种结构的组合方式 因此图20中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(1~5)个问题。此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们的代表的币值不同。如果我们希望系统共用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。 图21所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变量作为状态传递的参数。实际上,可以把红色的部分做成子vi,不仅节省了背面板空间而且能够进行错误处理。程序中应该设置一个专门的错误处

相关文档
最新文档