![]() ![]() |
LabVIEW 8.20程序设计从入门到精通
本书全面介绍了LabVIEW 8.20专业开发版中的各种编程知识与技巧。基础篇循序渐进地介绍了LabVIEW程序设计所需的基础知识,包括LabVIEW编程环境、数据操作、程序结构、复杂数据类型、图表图形、Express VI、文件I/O、子VI、属性节点与方法节点、人机界面交互设计、数学分析与信号处理、数据采集与仪器控制。高级篇针对LabVIEW高级编程人员深入浅出地介绍了各种LabVIEW高级编程知识与技巧,包括管理与开发LabVIEW大型项目、LabVIEW中的面向对象编程、动态程序控制技术、LabVIEW外部程序接口、访问数据库、网络编程、定时结构与同步技术、LabVIEW程序设计优化、发布应用程序。本书语言生动精炼、内容详尽,并且包含了大量实用的技巧实例。
本书可作为高等院校虚拟仪器及相关课程的教材或教学参考书,也可供从事相关工作的工程师或科研人员学习或参考。
LabVIEW是一种业界领先的工业标准图形化编程工具,主要用于开发测试、测量与控制系统。它是专门为工程师和科学家而设计的直观图形化编程语言。它将软件和各种不同的测量仪器硬件及计算机集成在一起,建立虚拟仪器系统,以形成用户自定义的解决方案。经过20年的演变和改进,在基于PC的测量自动化领域,LabVIEW确立了其主导地位,并成为业界的事实标准,同时也给传统的教学研究带来了巨大的变化。一个基于计算机的自动化实验室能大大提高研究人员的工作效率并改进学生的学习方式。利用NI的虚拟仪器技术,让以往复杂的数据采集工作变得异常简单,老师和同学都可以集中时间和精力用于实验的执行、数据的分析及结论的总结上,而不用将大量的时间花费在实验系统设备的搭建中。在国外,虚拟仪器技术已经是很多大学院校独立开设的一门课程,相信在未来几年内虚拟仪器技术也必将广泛流行于全国各大学校园理工科院系。
2006年是LabVIEW图形化软件开发平台正式推出20周年,为了庆祝和纪念这一具有历史意义的时间,NI将最新发布的LabVIEW 20周年纪念版命名为8.20版本。相对于LabVIEW 7.x,LabVIEW 8.0与LabVIEW 8.20的更新力度超过了以前任何一个版本。NI在LabVIEW 8上的研发投入超过了LabVIEW 7的两倍。 本书特色 本书针对LabVIEW 8.20专业开发版,以由简到难、逐步深入的原则对LabVIEW编程进行了全面详细的介绍,尤其是对LabVIEW编程人员经常讨论的热点问题进行了重点介绍,例如如何通过LabVIEW开发大型项目、如何优化LabVIEW程序人机界面与性能、如何通过LabVIEW调用DLL或ActiveX、如何通过LabVIEW实现网络编程以及与数据库连接等。此外,本书几乎所有的知识点都配合了恰当的实例,所有这些实例都在本书附带的光盘中,读者可以在“附录A 本书技巧实例索引”中快速检索其中主要的技巧实例。通过这些技巧实例,读者可以快速掌握很多非常实用的编程技巧,例如图表自动图例、多面板程序设计、基于状态机的温度控制系统、启动界面设计等。 本书编写过程中,几乎参考了LabVIEW联机帮助的所有内容以及大部分现有的LabVIEW书籍,搜索了NI网站中的大量网络资源,并且总结了编者多年的LabVIEW编程经验与心得,因此本书几乎包含了所有常用的LabVIEW编程知识与编程技巧。如果您是对LabVIEW一无所知的新手,通过本书,您可以从入门开始,并逐步深入地对LabVIEW进行学习,直到成为真正精通LabVIEW的编程高手。如果您已经使用过LabVIEW多年,相信本书也会为您提供有益的帮助,并成为您快速定位所需LabVIEW编程知识的必备参考。 由于LabVIEW 8.20完全向下兼容,因此即使您使用的是LabVIEW 7.x或8.0版本,本书的绝大部分内容对您仍然适用。 本书结构 本书分为基础篇和高级篇两部分。基础篇介绍了LabVIEW编程所需的基础知识,掌握了这些基础知识,您就可以编写从硬件连接、数据采集到数据分析处理、图形显示、存储和查询等功能丰富的小型自动化测试测量程序了。高级篇介绍了编写LabVIEW大型或高级应用程序所需的高级知识,通过这些高级知识,您可以编写融合多种高级编程技术的大型分布式应用,并且在各方面提高您所编写的LabVIEW程序的质量,例如扩展性、可读性和稳定性等。 本书由陈锡辉主编。张银鸿编写了第3章和第4章,其余章节均由陈锡辉编写。 本书在编写过程中得到了NI工程师以及广大网友的热心帮助;我的多位学弟作为本书初稿的体验读者,提出了宝贵的建议;在此对他们表示衷心的感谢!最后,将爱和感谢献给我美丽的未婚妻范艳丽,她不仅校对了本书部分章节而且提出了很多宝贵意见;最重要的是,她一如既往的鼓励与关心使得我在半年多的时间里能够耐心尽力地写好本书的每一个细节。 由于编者水平有限,时间仓促,书中不当之处在所难免,敬请读者批评指正,不吝赐教。本书作者开设了自己的LabVIEW博客讨论区:http://labviewstudy.blog.edu.cn,无论您有任何建议或问题,都可以在这里给作者留言。 陈锡辉 2007年3月于中国科学院高能物理所
基 础 篇
第1章 揭开LabVIEW的面纱2 1.1 LabVIEW简介2 1.1.1 什么是LabVIEW2 1.1.2 LabVIEW的作用3 1.1.3 选择LabVIEW的原因4 1.2 LabVIEW的起源与发展历程5 1.2.1 起源5 1.2.2 发展历程6 1.3 LabVIEW 8.0与LabVIEW 8.20新增特性列表7 1.3.1 LabVIEW 8.0新增特性列表7 1.3.2 LabVIEW 8.20新增特性列表9 1.4 LabVIEW学习捷径10 第2章 牛刀小试11 2.1 基于模板创建一个新VI11 2.2 在VI前面板中添加控件13 2.3 编辑VI程序框图13 2.4 运行VI14 2.5 小结15 第3章 开始LabVIEW之旅16 3.1 计算机性能要求16 3.2 安装LabVIEW 8.20专业开发版16 3.3 LabVIEW编程环境18 3.3.1 启动界面19 3.3.2 工程管理窗口(Project Explorer)19 3.3.3 前面板(Front Panel)和程序框图(Block Diagram)20 3.3.4 菜单栏和工具栏21 3.3.5 控件选板(Controls Palette)27 3.3.6 函数选板(Functions Palette)28 3.3.7 控件选板和函数选板的使用28 3.3.8 工具选板(Tools Palette)28 3.3.9 导航窗口(Navigation Window)29 3.3.10 帮助30 3.3.11 范例查找器31 3.3.12 定制自己的编程环境31 3.4 编辑前面板32 3.4.1 控件风格33 3.4.2 输入控件(Controls)和显示控件 (Indicator)33 3.4.3 前面板控件的着色和排版34 3.4.4 对象的复制和删除36 3.4.5 控件属性36 3.5 编辑程序框图37 3.5.1 程序框图中的控件对象37 3.5.2 程序框图节点37 3.5.3 对象连线37 3.5.4 程序框图中的对象排版39 3.6 程序注释39 3.7 运行和调试VI39 3.7.1 运行VI40 3.7.2 调试VI40 第4章 数据操作42 4.1 数据类型42 4.1.1 数字型44 4.1.2 布尔型45 4.1.3 枚举类型46 4.1.4 时间类型(Time Stamp)47 4.1.5 Variant数据类型48 4.1.6 局部变量和全局变量48 4.2 数据运算50 4.2.1 算术运算符50 4.2.2 关系运算符51 4.2.3 逻辑运算符52 4.2.4 表达式节点(Expression Node)52 第5章 程序结构55 5.1 顺序结构(Sequence Structure)55 5.1.1 LabVIEW程序的执行顺序55 5.1.2 Flat Sequence Structure和Stacked Sequence Structure55 5.1.3 在帧间传递数据56 5.2 For循环57 5.2.1 初识For循环57 5.2.2 输入和输出数组58 5.2.3 移位寄存器(Shift Register)59 5.2.4 反馈节点(Feedback Node)60 5.3 While循环60 5.3.1 初识While循环60 5.3.2 添加定时器61 5.3.3 使用移位寄存器和反馈节点62 5.4 Case结构63 5.4.1 等价于if...else...语句的Case结构63 5.4.2 从Case结构中输出数据64 5.4.3 等价于switch语句的Case结构64 5.5 事件结构(Event Structure)65 5.5.1 事件结构的常用方法65 5.5.2 Filter事件68 5.6 使能结构68 5.6.1 框图使能结构——注释程序框图68 5.6.2 条件使能结构69 5.7 公式节点(Formula Node)70 5.7.1 复杂公式的实现71 5.7.2 文本编程语言的实现72 5.8 跟着实例学——模拟温度采集监测系统75 第6章 字符串、数组、簇和矩阵76 6.1 字符串(String)76 6.1.1 字符串控件76 6.1.2 表格和树形控件78 6.1.3 字符串函数79 6.2 数组(Array)85 6.2.1 数组控件85 6.2.2 数组之间的算术运算86 6.2.3 数组函数87 6.3 簇(Cluster)--LabVIEW中的结构体 变量95 6.3.1 簇的创建95 6.3.2 簇操作函数96 6.3.3 error in 和error out簇99 6.4 矩阵(Matrix)100 第7章 图形化显示数据——图表和图形102 7.1 波形数据(Waveform)102 7.1.1 波形数据控件102 7.1.2 波形数据操作函数103 7.2 趋势图(Chart)105 7.2.1 波形趋势图(Waveform Chart)106 7.2.2 定制趋势图显示样式107 7.2.3 带时间轴的实时曲线108 7.3 图表(Graph)109 7.3.1 定制图表属性109 7.3.2 波形图112 7.3.3 XY曲线图114 7.3.4 亮度图 (Intensity Graph and Chart)116 7.3.5 数字波形图(Digital Waveform Graph)117 7.4 三维图形(3D Graph)118 7.5 图形控件(Picture)121 7.5.1 Picture控件的基本用法122 7.5.2 利用Picture控件绘制各种曲线123 第8章 Express VI——快速搭建专业 测试系统125 8.1 初识Express技术125 8.2 动态数据类型127 8.3 Express VIs简介128 8.3.1 信号输入(Input)Express VIs128 8.3.2 信号分析(Signal Analysis) Express VIs128 8.3.3 输出(Output)Express VIs129 8.3.4 信号操作(Signal Manipulation) Express VIs129 8.3.5 算术与比较(Arithmetic and Comparison)Express VIs130 8.3.6 执行控制Express VIs130 8.4 跟着实例学——基于Express VI的声音信号 采集系统130 第9章 文件I/O132 9.1 选择合适的文件类型132 9.2 文件的基本操作133 9.3 文本文件和表单文件134 9.3.1 文本文件134 9.3.2 表单文件135 9.4 二进制文件(Binary Files)136 9.5 数据记录文件(Datalog Files)136 9.6 XML文件136 9.7 配置文件(Configuration Files)137 9.8 波形文件(Waveform Files)138 9.9 基于文本的测量文件(LVM文件)139 9.10 数据存储文件(TDM文件)139 9.11 高速数据流文件(TDMS文件)141 9.12 小结143 第10章 子VI144 10.1 创建子VI144 10.2 查看VI层次结构(VI Hierarchy)145 10.3 定义子VI属性146 10.3.1 可重入(Reentrant)子VI146 10.3.2 设置子VI调用属性147 10.3.3 自定义子VI图标形状148 10.4 多态(Polymorphic)VI148 第11章 属性节点和方法节点151 11.1 属性节点(Property Node)151 11.2 方法节点(Invoke Node)152 11.3 通过子VI调用控件的属性和方法153 11.4 几种常用控件的编程举例153 11.4.1 Ring控件和Enum控件153 11.4.2 列表框(Listbox)154 11.4.3 树形控件(Tree Control)155 11.4.4 自动图例举例156 11.5 小结158 第12章 人机界面交互设计159 12.1 VI属性设置159 12.2 对话框161 12.2.1 普通对话框161 12.2.2 用户自定义对话框162 12.3 错误处理162 12.4 菜单165 12.4.1 运行主菜单 (Run-Time Menu)166 12.4.2 右键快捷菜单(Run-Time Shortcut Menu)168 12.5 鼠标指针169 12.6 播放声音170 12.7 自定义控件和自定义数据类型170 12.7.1 自定义控件 (Custom Controls)170 12.7.2 自定义数据类型 (Type Definition)172 12.8 自定义控件选板和函数选板172 12.9 设计形象生动的用户界面173 12.9.1 修饰静态界面174 12.9.2 动态交互界面175 12.10 关于VI程序设计的一些规则176 12.10.1 关于前面板的设计176 12.10.2 关于程序框图的设计178 12.10.3 关于VI179 第13章 数学分析与信号处理180 13.1 数学分析180 13.1.1 图形化编程与数学分析180 13.1.2 基本数学函数181 13.1.3 线性代数182 13.1.4 曲线拟合184 13.1.5 插值185 13.1.6 数值积分与数值微分187 13.1.7 概率与统计188 13.1.8 最优化189 13.1.9 常微分方程191 13.1.10 空间解析几何192 13.1.11 公式解析193 13.1.12 MathScript194 13.2 数字信号处理198 13.2.1 信号发生198 13.2.2 信号调理199 13.2.3 波形测量200 13.2.4 时域分析201 13.2.5 频域分析202 13.2.6 窗函数205 13.2.7 数字滤波器208 13.2.8 逐点分析库210 第14章 数据采集与仪器控制214 14.1 数据采集(DAQ)214 14.1.1 数据采集系统的构成214 14.1.2 NI-DAQmx218 14.2 仪器控制简介221 14.3 选择合适的总线222 14.3.1 独立总线223 14.3.2 模块化总线225 14.4 仪器驱动程序227 14.4.1 可编程仪器标准命令SCPI228 14.4.2 VISA229 14.4.3 IVI——可互换的虚拟仪器 驱动程序231 14.5 直接I/O(Direct I/O)235 14.5.1 仪器I/O助手(Instrument I/O Assistant)236 14.5.2 Port I/O238 14.5.3 NI Spy——调试驱动的好帮手239 14.6 与第三方硬件连接239 高 级 篇 第15章 管理与开发LabVIEW 大型项目242 15.1 LabVIEW与软件工程242 15.1.1 生命周期模型243 15.1.2 需求分析247 15.1.3 软件设计248 15.1.4 程序编码250 15.1.5 软件测试251 15.1.6 文档251 15.2 LabVIEW项目管理器 ——Project Explorer252 15.2.1 创建LabVIEW Project252 15.2.2 项目库(Project Library)253 15.3 源代码管理工具——SCC (Source Code Control)255 15.3.1 配置SCC255 15.3.2 使用SCC257 15.4 总结258 第16章 LabVIEW中的面向对象编程259 16.1 面向对象的基本概念259 16.2 在LabVIEW中实现面向对象编程261 16.2.1 创建类和对象261 16.2.2 继承263 16.2.3 静态方法(Static Methods)和动态 方法(Dynamic Methods)264 16.2.4 LabVIEW面向对象编程的 一些特点266 16.3 跟着实例学——电路板检测269 第17章 动态程序控制技术273 17.1 VI服务器273 17.2 Application引用275 17.3 动态VI控制277 17.3.1 编程控制VI属性277 17.3.2 动态载入VI278 17.3.3 多面板程序设计280 17.3.4 利用Subpanel实现动态 载入界面281 第18章 LabVIEW外部程序接口284 18.1 DLL与API调用284 18.1.1 动态链接库(DLL)与API 简介284 18.1.2 调用DLL286 18.1.3 配置参数类型287 18.1.4 调用Windows API290 18.2 CIN节点292 18.3 ActiveX296 18.3.1 ActiveX简介296 18.3.2 使用ActiveX自动化297 18.3.3 使用ActiveX容器300 18.3.4 使用ActiveX事件301 18.3.5 通过外部程序控制LabVIEW302 18.3.6 小结304 18.4 LabVIEW与MATLAB混和编程304 18.4.1 MATLAB Script节点305 18.4.2 利用ActiveX与MATLAB 连接306 第19章 访问数据库308 19.1 ODBC308 19.1.1 什么是ODBC308 19.1.2 建立数据源309 19.2 ADO简介310 19.3 LabSQL312 19.3.1 LabSQL的安装312 19.3.2 LabSQL VIs312 19.3.3 LabSQL应用举例313 19.4 小结315 第20章 LabVIEW网络编程316 20.1 选择合适的网络通信方式316 20.2 共享变量317 20.2.1 共享变量简介317 20.2.2 创建与使用共享变量317 20.2.3 共享变量引擎320 20.2.4 通过编程访问共享变量321 20.3 DataSocket322 20.3.1 DataSocket简介322 20.3.2 DataSocket Server323 20.3.3 利用DataSocket函数访问OPC、 HTTP、FTP和文件326 20.4 TCP与UDP通信327 20.4.1 TCP与UDP简介327 20.4.2 TCP通信329 20.4.3 UDP通信333 20.5 远程VI面板连接336 20.5.1 配置LabVIEW Web服务器336 20.5.2 通过LabVIEW Run-Time引擎连接 远程VI面板338 20.5.3 通过网页连接远程VI面板339 第21章 定时结构与同步技术341 21.1 定时结构(Timed Structure)341 21.1.1 定时循环(Timed Loop)341 21.1.2 定时顺序结构 (Timed Sequence)344 21.1.3 含帧的定时循环(Timed Loop with Frames)344 21.2 同步技术(Synchronization)344 21.2.1 通知(Notification)技术345 21.2.2 队列(Queue)技术349 21.2.3 信号量(Semaphore)技术352 21.2.4 集合点(Rendezvous)技术354 21.2.5 事件发生(Occurrence)技术356 21.3 用户事件(User Event)357 第22章 LabVIEW程序优化设计359 22.1 LabVIEW程序设计模式359 22.1.1 状态机360 22.1.2 主/从结构362 22.1.3 启动界面与后台程序363 22.2 Lab VIEW与多线程364 22.2.1 多任务、多线程与多处理器365 22.2.2 多线程的优缺点365 22.2.3 在LabVIEW中实现多线程366 22.2.4 LabVIEW的执行系统367 22.2.5 任务优先级369 22.3 优化VI性能371 22.3.1 VI性能和内存监测工具371 22.3.2 内存管理372 22.3.3 用户界面375 22.3.4 子VI调用375 22.3.5 读写设备或文件376 第23章 发布应用程序377 23.1 生成独立可执行应用程序(EXE)378 23.2 生成安装程序(Installer)380 23.3 生成动态链接库(DLL)383 附录A 本书技巧实例索引385 附录B LabVIEW 8.20快捷键一览391 参考文献 394
你还可能感兴趣
我要评论
|