基础篇 2
第1章 揭开LabVIEW的面纱 2
1.1 LabVIEW简介 2
1.1.1 什么是LabVIEW 2
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 基于模板创建一个新VI 11
2.2 在VI前面板中添加控件 13
2.3 编辑VI程序框图 13
2.4 运行VI 14
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 运行和调试VI 39
3.7.1 运行VI 40
3.7.2 调试VI 40
第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 Structure 55
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 & 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 VIs 128
8.3.2 信号分析(Signal Analysis)Express VIs 128
8.3.3 输出(Output)Express VIs 129
8.3.4 信号操作(Signal Manipulation)Express VIs 129
8.3.5 算术与比较(Arithmetic & Comparison)Express VIs 130
8.3.6 执行控制Express VIs 130
8.4 跟着实例学——基于Express VI的声音信号采集系统 130
第9章 文件I/O 132
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章 子VI 144
10.1 创建子VI 144
10.2 查看VI层次结构(VI Hierarchy) 145
10.3 定义子VI属性 146
10.3.1 可重入(Reentrant)子VI 146
10.3.2 设置子VI调用属性 147
10.3.3 自定义子VI图标形状 148
10.4 多态(Polymorphic)VI 148
第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 关于VI 179
第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 MathScript 194
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-DAQmx 218
14.2 仪器控制简介 221
14.3 选择合适的总线 222
14.3.1 独立总线 223
14.3.2 模块化总线 225
14.4 仪器驱动程序 227
14.4.1 可编程仪器标准命令SCPI 228
14.4.2 VISA 229
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/O 238
14.5.3 NI Spy——调试驱动的好帮手 239
14.6 与第三方硬件连接 239
高级篇 242
第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 Explorer 252
15.2.1 创建LabVIEW Project 252
15.2.2 项目库(Project Library) 253
15.3 源代码管理工具——SCC(Source Code Control) 255
15.3.1 配置SCC 255
15.3.2 使用SCC 257
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 动态载入VI 278
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 调用DLL 286
18.1.3 配置参数类型 287
18.1.4 调用Windows API 290
18.2 CIN节点 292
18.3 ActiveX 296
18.3.1 ActiveX简介 296
18.3.2 使用ActiveX自动化 297
18.3.3 使用ActiveX容器 300
18.3.4 使用ActiveX事件 301
18.3.5 通过外部程序控制LabVIEW 302
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 ODBC 308
19.1.1 什么是ODBC 308
19.1.2 建立数据源 309
19.2 ADO简介 310
19.3 LabSQL 312
19.3.1 LabSQL的安装 312
19.3.2 LabSQL VIs 312
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 DataSocket 322
20.3.1 DataSocket简介 322
20.3.2 DataSocket Server 323
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