LabVIEW宝典(第2版)

LabVIEW宝典(第2版) pdf epub mobi txt 电子书 下载 2025

陈树学 著
图书标签:
  • LabVIEW
  • 数据采集
  • 仪器控制
  • 自动化测试
  • 虚拟仪器
  • 编程
  • NI
  • 图形化编程
  • 工业控制
  • 测量
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121325434
版次:2
商品编码:12185531
品牌:Broadview
包装:平装
开本:16开
出版时间:2017-09-01
用纸:胶版纸
页数:700
字数:1234000
正文语种:中文

具体描述

产品特色

编辑推荐

适读人群 :《LabVIEW宝典》可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

LabVIEW工程师15年经验总结

全程配套700多个VI案例文件

3大完整工程实践一线项目

配套PPT电子课件


内容简介

《LabVIEW宝典(第2版)》详尽讲解了LabVIEW常用的编程方法、编程技巧和工程应用技术。全书共分为3篇,其中,入门篇归纳总结了LabVIEW编程人员必须掌握的基础知识,包括LabVIEW的基本概念、基本函数的用法和常用的运行结构,以及LabVIEW的基本数据结构和文件存储方式;高级篇细致地讲解了引用、属性、方法及各类高级控件的运用,LabVIEW的文本方式编程及DLL、C语言接口,基于MATLAB语法的math*编程技术,LabVIEW基于组件的高级编程方法和编程模式;工程应用篇介绍了串口、并口和网络通信的常用方法,数据采集的基本原理和方法,LabVIEW实时系统的构建和编程,以及各种常用专业工具包的使用方法,包括数据库连接工具包、数据监控与记录工具包、报表生成工具包、状态图工具包等。《LabVIEW宝典(第2版)》可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

作者简介

陈树学,1989年毕业于哈尔滨工业大学动力工程系,毕业后进入一汽集团公司,负责专用机床、加工自动线和测试设备的软件开发工作。初期使用C语言,从LabVIEW 6.0版本开始,采用LabVIEW作为优选编程语言。 刘萱,2005年毕业于天津大学计算机科学与技术专业。毕业后进入天津久荣车轮技术有限公司主持车轮轮胎检测设备系统软件的研发工作。2006年首次接触LabVIEW 7.2并在实际项目中使用,十余年来积累了利用LabVIEW开发工程项目的丰富经验。

目录

第1部分 入门篇
第1章 打开LabVIEW编程之门 2
1.1 从VI开始 2
1.1.1 创建VI 3
1.1.2 控件属性设置与快捷菜单 6
1.1.3 创建控件、常量、局部变量、引用、属性节点和方法节点 8
1.1.4 创建自定义控件 10
1.2 编辑前面板和程序框图 12
1.2.1 选择、移动和删除对象 12
1.2.2 使用布局工具 13
1.3 VI及其属性对话框 17
1.3.1 VI的层次结构 17
1.3.2 调用子VI 19
1.3.3 VI的属性设置 19
1.4 基本控件及其使用方法 23
1.4.1 基本数值控件 24
1.4.2 基本布尔控件 30
1.4.3 控件的通用编辑方法 33
1.4.4 字符串和路径控件 35
1.4.5 下拉列表与枚举控件 38
1.4.6 数组控件及其属性设置 39
1.4.7 簇控件 40
1.4.8 时间标识控件与波形数据控件 42
1.5 小结 44
第2章 LabVIEW基本函数 45
2.1 必须了解的一些基本算术运算函数 45
2.1.1 基本运算函数 45
2.1.2 标量之间的基本运算 46
2.1.3 标量与数组的运算 46
2.1.4 数组与数组的运算 46
2.1.5 数组的函数 47
2.1.6 标量与簇的基本运算 55
2.1.7 簇与簇的运算 56
2.1.8 簇的函数 56

2.2 必须了解的位运算函数和逻辑运算函数 59
2.2.1 常用逻辑运算函数 59
2.2.2 位运算 59
2.2.3 深入理解复合运算函数 60
2.3 必须了解的关系运算函数和比较函数 61
2.3.1 比较模式 61
2.3.2 通用关系运算函数 62
2.3.3 “比较0”关系运算函数 63
2.3.4 复杂关系运算函数 63
2.3.5 字符关系运算函数 66
2.3.6 表达式节点与公式快速VI 67
2.4 小结 68
第3章 LabVIEW的程序运行结构 69
3.1 两种不同的循环结构 69
3.1.1 For循环的组成和特点 69
3.1.2 For循环与数组 71
3.1.3 For循环与移位寄存器 73
3.1.4 For循环中的continue和break 74
3.1.5 While循环,不仅仅是循环 75
3.1.6 While循环与定时 76
3.1.7 反馈节点 81
3.2 定时结构 82
3.2.1 定时循环的基本组成要素和配置对话框 83
3.2.2 定时顺序结构 85
3.3 独特的条件结构 85
3.3.1 条件结构的基本结构 86
3.3.2 布尔型输入 86
3.3.3 错误簇输入 86
3.3.4 数值型输入 87
3.3.5 枚举型输入 88
3.3.6 下拉列表输入 88
3.3.7 字符串和组合框输入 88
3.3.8 输入、输出隧道 89
3.3.9 多重If-Else的处理方法 89
3.4 不和谐的顺序结构 90
3.4.1 多线程运行次序 90
3.4.2 两种不同的顺序结构 90
3.4.3 隧道与顺序局部变量 92
3.4.4 顺序结构的替代 92
3.4.5 顺序结构的典型应用 93
3.5 程序框图禁用结构 93
3.6 局部变量、内置全局变量和功能(LV2型)全局变量 94
3.6.1 局部变量 94
3.6.2 内置全局变量 96
3.6.3 功能(LV2型)全局变量 97
3.7 事件结构 99
3.7.1 事件结构的基本构成和创建方法 99
3.7.2 事件的分类及其特点 100
3.7.3 事件结构之间的数据传送与共享 103
3.7.4 事件发生的次序、事件过滤和转发 103
3.7.5 正确地使用事件结构 105
3.8 小结 106
第4章 LabVIEW的数据结构及内存优化 107
4.1 常用数据类型转换函数 107
4.1.1 “强制类型转换”函数 107
4.1.2 “平化至字符串”函数与“从字符串还原”函数 108
4.1.3 变体数据 109
4.1.4 变体数据数据类型解析 109
4.2 整数的类型转换及内存映射 110
4.2.1 布尔型数据与字符串和数值的相互转换 110
4.2.2 U8类型数据与字符串之间的相互转换 111
4.2.3 整数与整数类型的相互转换 111
4.3 其他标量数据类型的类型转换及内存映射 112
4.3.1 定点数、浮点数的类型转换与内存映射 112
4.3.2 复数的类型转换及内存映射 115
4.3.3 时间标识的类型转换与内存映射 115
4.4 复合数据类型 115
4.4.1 标量数组的内存映射 116
4.4.2 字符串、路径和字符串数组的内存映射 117
4.4.3 LabVIEW使用的编码 118
4.5 簇的内存映射 118
4.5.1 标量组成的簇 119
4.5.2 包含数组和字符串的簇 119
4.6 类型描述符 120
4.6.1 类型描述符的基本构成要素 120
4.6.2 常用类型描述符列表 120
4.6.3 常见数据类型的类型描述符结构 121
4.7 OpenG中有关类型描述符的函数 122
4.7.1 类型描述符函数 123
4.7.2 利用类型描述符处理枚举型数据 124
4.7.3 利用类型描述符处理簇 124

4.8 几种常用的内存分析工具和方法 124
4.8.1 内存的重要性 125
4.8.2 内存和性能查看工具 126
4.8.3 VI使用的内存 127
4.8.4 优化内存的一般注意事项 128
4.8.5 数组与内存优化 129
4.8.6 在循环中避免不必要的计算、读/写控件或者变量 132
4.9 影响VI运行速度的因素 133
4.9.1 硬件输入/输出 133
4.9.2 屏幕显示 134
4.10 小结 134
第5章 字符串与文件存储 135
5.1 字符串 135
5.1.1 几种常用的字符串常量 135
5.1.2 几种常用的字符串函数 136
5.1.3 “匹配模式”和“匹配正则表达式”函数 137
5.1.4 字符串与数值的相互转换 140
5.1.5 功能强大的“格式化字符串”函数和“扫描字符串”函数 141
5.1.6 数组与电子表格字符串 144
5.1.7 附加字符串函数 144
5.2 文件存储 145
5.2.1 文本文件与二进制文件的区别 145
5.2.2 文件常量和通用目录、文件函数 146
5.2.3 构造路径的方法 147
5.2.4 文本文件的读写 150
5.2.5 数据记录文件的读写 154
5.2.6 读/写二进制文件 155
5.2.7 INI文件的读写 157
5.2.8 XML文件的读写 159
5.2.9 注册表的读写 160
5.2.10 TDM文件 162
5.2.11 TDMS文件 164
5.3 小结 167
第2部分 高级篇
第6章 LabVIEW对象的解析 169
6.1 LabVIEW控件对象的层次继承结构 169
6.1.1 布尔控件的层次继承结构 169
6.1.2 通用类的属性 170
6.1.3 图形对象类 172
6.2 图形对象类的子类 173
6.2.1 前面板类 173
6.2.2 窗格类和分隔栏类 174
6.2.3 LabVIEW的坐标映射 175
6.2.4 修饰类 177
6.3 控件类 179
6.3.1 控件类的常用属性 179
6.3.2 控件类的常用方法 181
6.3.3 数值控件类 182
6.4 常用控件的专有属性 183
6.4.1 布尔控件的专有属性 183
6.4.2 枚举控件和下拉列表控件的专有属性 184
6.4.3 字符串控件、路径控件和组合框控件的专有属性 185
6.4.4 数组控件的属性和方法 187
6.4.5 簇的属性及方法 189
6.5 引用句柄 189
6.6 VI的属性 191
6.6.1 获取VI的引用 192
6.6.2 常用VI属性 192
6.7 常用VI方法 195
6.7.1 获取前面板、程序框图和VI图标的图像 195
6.7.2 打印控制 196
6.7.3 默认值方法 196
6.8 动态调用VI 197
6.8.1 静态调用和动态调用的比较 197
6.8.2 通过“引用节点调用”函数动态调用VI 197
6.8.3 一般类型VI的动态调用 199
6.8.4 创建闪屏 201
6.8.5 创建后台运行程序 202
6.8.6 创建向导程序 202
6.8.7 动态调用VI之间的数据交换 203
6.9 应用程序的属性和方法 204
6.9.1 获取应用程序的引用句柄 205
6.9.2 应用程序的常用属性 205
6.10 小结 206
第7章 高级控件的运用 207
7.1 列表框 207
7.1.1 列表框的创建及显示风格 207
7.1.2 列表框的常用属性、方法与事件 207
7.1.3 列表框的应用举例 208

7.2 多列列表框 211
7.2.1 显示多列项目并排序 212
7.2.2 多列列表框的特效制作 214
7.3 表格 214
7.3.1 表格的常用属性和方法 215
7.3.2 表格的应用举例 218
7.4 树形控件 222
7.4.1 树形控件的创建与静态编辑 222
7.4.2 树形控件的常用属性、方法和事件 224
7.4.3 树形控件高级应用举例 225
7.5 波形图表 227
7.5.1 波形图表的组成要件 227
7.5.2 波形图表的输入类型 229
7.5.3 波形图表专用属性 229
7.5.4 波形图表应用举例 231
7.6 波形图 232
7.6.1 波形图控件的创建和组成要件 233
7.6.2 波形图控件的输入类型 233
7.6.3 波形图控件的专用属性 236
7.6.4 波形图控件的高级应用举例 238
7.7 XY图 240
7.7.1 XY图的输入数据类型 241
7.7.2 XY图的高级应用 243
7.8 强度图表和强度图 245
7.9 数字数据、数字波形数据与数字波形图 246
7.9.1 数字数据 246
7.9.2 数字波形数据和数字波形图 246
7.10 图片控件 247
7.10.1 利用图片控件显示图片 247
7.10.2 常用绘图操作函数 249
7.10.3 图片控件的高级应用 251
7.11 小结 253
第8章 文本式编程与外部程序接口 254
8.1 公式节点 254
8.1.1 公式节点的数据类型、语法与控制结构 254
8.1.2 公式节点的应用举例 256
8.2 调用库函数 257
8.2.1 DLL与API函数 257
8.2.2 如何调用DLL函数 259
8.2.3 常用API函数的调用 265
8.2.4 LabVIEW调用DLL的局限性 267
8.3 CIN 270
8.3.1 CIN创建的一般过程 271
8.3.2 CIN的数据类型和常用函数 273
8.3.3 CIN与内存管理器 277
8.3.4 CIN的运行过程和数据共享 280
8.4 系统命令 283
8.5 剪贴板 284
8.6 DDE库 285
8.6.1 DDE概述 286
8.6.2 LabVIEW中DDE的常用方法 286
8.7 ActiveX控件与ActiveX文档 288
8.7.1 ActiveX的基本概念 288
8.7.2 ActiveX控件的调用过程 289
8.7.3 ActiveX应用实例 289
8.7.4 ActiveX自动化服务器 291
8.8 .NET技术 292
8.8.1 .NET控件 292
8.8.2 .NET服务 293
8.8.3 利用.NET创建托盘程序 295
8.9 小结 298
第9章 MathScript 299
9.1 如何使用MathScript 299
9.1.1 使用MathScript节点 299
9.1.2 使用MathScript交互窗口 300
9.2 MathScript常用命令 301
9.3 MathScript基础知识 302
9.3.1 创建向量和矩阵的基本方法 302
9.3.2 矩阵的基本运算 303
9.3.3 标准矩阵 304
9.3.4 矩阵元素的插入、替换、删除和提取 305
9.3.5 矩阵元素的排序和搜索特征值 306
9.3.6 常用的矩阵变换函数 307
9.3.7 矩阵中元素的数据类型及转换 308
9.3.8 关系运算、逻辑运算和位操作 310
9.3.9 集合函数 311
9.3.10 时间、日期和计时函数 311
9.4 程序控制结构与函数 312
9.4.1 For循环和While循环 312
9.4.2 If条件结构和Switch分支条件结构 314
9.4.3 函数和脚本文件 315

9.5 数据统计和数据插值拟合 316
9.5.1 常用数据统计函数 317
9.5.2 数据插值 320
9.6 多项式、积分和微分 321
9.6.1 多项式 321
9.6.2 极值与零点 322
9.6.3 积分和微分 323
9.7 数据的图形显示 324
9.7.1 窗口类属性与常用窗口操作函数 324
9.7.2 绘图区域属性 327
9.7.3 线对象和文本对象的属性及常用函数 328
9.7.4 基本绘图函数 330
9.8 小结 333
第10章 组件、同步技术、面向对象编程 334
10.1 数据的封装与隔离 334
10.1.1 合理地使用数据流 334
10.1.2 LV2型全局变量 335
10.1.3 值变化与上升、下降沿 337
10.1.4 定时触发与计数器 339
10.2 动作机(Action Engine) 341
10.2.1 准备建立动作机 341
10.2.2 建立动作机的步骤 342
10.3 用户事件与动态注册事件 343
10.3.1 用户事件 343
10.3.2 动态注册事件 346
10.4 堆栈与数据缓冲区 348
10.4.1 堆栈的实现 348
10.4.2 数据缓冲区 349
10.5 同步控制技术 350
10.5.1 队列 350
10.5.2 通知器 355
10.5.3 信号量与集合点 358
10.6 项目管理器 359
10.6.1 项目管理器的结构 360
10.6.2 虚拟文件夹 360
10.6.3 库 361
10.7 面向对象编程 363
10.7.1 面向对象编程的基本概念 363
10.7.2 类的封装特性 364
10.7.3 类的继承特性 367
10.7.4 类的多态特性 370
10.7.5 类变量 373
10.7.6 调用父类中的重写方法 374
10.7.7 类的引用转换 376
10.7.8 简单工厂模式 377
10.7.9 类的动态加载与插件功能 377
10.7.10 类方法的递归功能 378
10.7.11 类的单态模式 378
10.8 小结 380
第11章 人机交互与编程风格 381
11.1 对话框 381
11.1.1 内置对话框 381
11.1.2 用户输入和显示对话框 382
11.1.3 定制对话框 383
11.2 菜单 383
11.2.1 创建静态菜单 383
11.2.2 菜单相关函数 384
11.2.3 动态创建菜单 386
11.2.4 调用多个静态菜单,存储运行时菜单 387
11.2.5 自动触发预定义的菜单项 388
11.2.6 控件的快捷菜单 388
11.3 光标工具 389
11.3.1 “设置为忙碌状态”VI与“取消设置忙碌状态”VI 390
11.3.2 设置控件光标 390
11.3.3 使用光标文件 390
11.4 选项卡、子面板与分隔栏 391
11.4.1 选项卡控件 391
11.4.2 选项卡控件的页面 391
11.4.3 页面的公用控件 392
11.4.4 分隔栏控件 392
11.4.5 分隔栏与窗格滚动条 393
11.4.6 利用分隔栏创建工具栏与状态栏 393
11.4.7 利用分隔栏自动缩放控件 394
11.4.8 子面板控件 394
11.4.9 动态调用VI插入子面板 395
11.4.10 异步调用VI插入子面板 396
11.4.11 并行的静态调用VI插入子面板 396
11.4.12 多个子面板插入相同VI 397
11.4.13 判断VI是否插入子面板 398
11.4.14 子面板的属性 398
11.5 XControl 398
11.5.1 Hover按钮 399
11.5.2 新建XControl 399
11.5.3 修改数据控件和状态控件 400
11.5.4 “外观”VI 400
11.5.5 创建属性和方法 403
11.5.6 调试XControl 404
11.5.7 自定义属性对话框与快捷菜单 405
11.6 错误处理 405
11.6.1 错误簇 406
11.6.2 常用错误处理函数 406
11.7 LabVIEW的编程风格 408
11.7.1 编程风格的内涵 408
11.7.2 前面板设计应该遵循的原则 409
11.7.3 程序框图设计应该遵循的原则 410
11.7.4 连接板设计应该遵循的原则 411
11.7.5 图标设计应该遵循的原则 412
11.7.6 数据结构应该遵循的原则 412
11.7.7 错误处理应该遵循的原则 413
11.8 小结 414
第3部分 工程应用篇
第12章 LabVIEW设计模式与状态图工具 416
12.1 程序的基本单元VI 416
12.1.1 VI的可重入属性 416
12.1.2 不可重入VI 416
12.1.3 可重入VI 417
12.2 VI模板与代码重用 418
12.2.1 内置的VI模板 418
12.2.2 用户自定义模板 418
12.3 VI的调试 419
12.3.1 连续运行VI 419
12.3.2 高亮执行与单步调试 420
12.3.3 单步运行 420
12.3.4 探针 421
12.3.5 自定义探针 421
12.3.6 断点 422
12.4 VI的重构 422
12.4.1 无用编程举例 422
12.4.2 查找框图中重复的功能 423
12.4.3 创建VI代替重复的功能 424
12.4.4 创建多态VI处理相似的功能 424

12.5 LabVIEW标准设计模式 425
12.5.1 用户界面事件处理器设计模式 425
12.5.2 生产者/消费者设计模式(事件) 426
12.5.3 生产者/消费者设计模式(数据) 427
12.5.4 主/从设计模式 427
12.6 用户界面事件处理器模式的拓展 428
12.6.1 用户界面事件处理器+顺序结构设计模式 428
12.6.2 用户界面事件处理器+用户事件 428
12.6.3 用户界面事件处理器+超时分频 429
12.6.4 用户界面事件处理器+定时循环 430
12.7 队列消息处理器(QMH)设计模式 430
12.7.1 基本队列消息处理器模式(字符串数组) 430
12.7.2 基本队列消息处理器模式(字符串) 431
12.7.3 基于生产者/消费者设计模式(队列)的队列消息处理器 431
12.7.4 AMC队列消息处理器 432
12.7.5 基于队列消息处理器的命令模式 434
12.8 有限状态机设计模式 435
12.8.1 标准状态机设计模式 436
12.8.2 早期界面处理状态机 436
12.8.3 顺序状态机 437
12.8.4 处理公共状态 438
12.8.5 状态机+用户界面事件处理器 438
12.8.6 进入、运行和离开状态的处理 439
12.8.7 有限状态机+LVOOP 439
12.9 状态机工具(State diagram) 442
12.9.1 调用状态机工具 442
12.9.2 使用状态图编辑器 442
12.9.3 添加转换条件和状态代码 442
12.9.4 选择独立运行或者子VI方式 443
12.10 队列消息状态机 444
12.10.1 通用队列消息状态机自定义模板 444
12.10.2 消息+数据队列状态机 445
12.10.3 事件驱动队列消息状态机 446
12.11 JKI事件驱动队列消息状态机 446
12.11.1 JKI状态机模板 447
12.11.2 JKI状态机的初始化 448
12.11.3 JKI状态机的预定义事件 448
12.11.4 JKI状态机的退出 449
12.12 简单状态机项目模板 449
12.12.1 简单状态机项目模板的基本构成 450
12.12.2 简单状态机 450
12.12.3 简单状态机范例(有限次测量) 451
12.13 队列消息处理器项目模板 452
12.13.1 队列消息处理器项目模板的基本构成 452
12.13.2 队列消息处理器 453
12.13.3 队列消息处理器的退出机制 453
12.13.4 队列消息处理器的错误处理机制 454
12.13.5 队列消息处理器的拓展 455
12.14 Delacor队列消息处理器 456
12.14.1 DQMH项目模板的基本构成 456
12.14.2 DQMH模块的基本构成与对外接口 457
12.14.3 DQMH模块测试器 459
12.14.4 DQMH模块 460
12.14.5 使用DQMH模块 461
12.15 操作执行者框架 463
12.15.1 操作者框架概述 463
12.15.2 创建操作者、消息 464
12.15.3 启动、停止操作者,发送消息至操作者核心 466
12.15.4 创建操作者界面 467
12.15.5 操作者的定时功能 467
12.15.6 嵌套操作者 468
12.15.7 嵌套操作者动态启动与停止 470
12.16 操作执行者框架项目模板 471
12.16.1 闪屏引导VI 471
12.16.2 操作者框架根操作者 472
12.16.3 Alpha嵌套操作者 473
12.16.4 Beta嵌套操作者 474
12.17 状态图工具包(Statechart) 475
12.17.1 状态图工具包简介 475
12.17.2 同步与异步方式 475
12.17.3 创建状态图 475
12.17.4 同步型状态图 477
12.17.5 状态图的调用和调试 480
12.17.6 异步型状态图 481
12.17.7 区域、超级状态和子状态 482
12.17.8 多区域并发、连接、分叉与子图 484
12.17.9 高级应用函数 486
12.18 小结 488
第13章 LabVIEW通信与DSC 489
13.1 串口通信 489
13.1.1 串口通信的基本概念 489
13.1.2 串口通信的准备工作 491
13.1.3 串口通信函数 492
13.1.4 串口通信典型应用举例 493
13.2 并口通信 495
13.2.1 设置并口通信模式 495
13.2.2 传送字节型数据 496
13.2.3 传送EPP模式数据 496
13.3 共享变量 497
13.3.1 共享变量与共享变量引擎 497
13.3.2 创建与监视共享变量 498
13.3.3 共享变量的内部缓冲机制 500
13.3.4 共享变量的批量创建、部署与引用 501
13.4 DataSocket 503
13.4.1 DataSocket支持的协议与URL 503
13.4.2 DataSocket服务器与服务管理器 504
13.4.3 DataSocket API 505
13.4.4 DataSocket API应用举例 506
13.4.5 DataSocket控件绑定 507
13.5 TCP与UDP网络通信 508
13.5.1 TCP通信 508
13.5.2 TCP STM库 510
13.5.3 UDP通信 510
13.6 网络流 511
13.6.1 在应用程序之间传递命令或者数据 512
13.6.2 网络流基本函数 512
13.6.3 创建网络流URL 512
13.6.4 网络流应用举例 513
13.7 DSC工具包 514
13.7.1 OPC与DSC的基本概念 514
13.7.2 DSC强大的图形显示能力 516
13.7.3 OPC配置与I/O变量 517
13.7.4 Modbus 520
13.7.5 共享变量的属性 521
13.7.6 共享变量引擎SVE函数 523
13.7.7 预警与事件 525
13.7.8 数据记录 528
13.7.9 安全与权限管理 531
13.8 小结 533
第14章 数据库与报表工具包 534
14.1 准备使用数据库工具包 534
14.1.1 创建数据库 534
14.1.2 建立数据源 535
14.1.3 数据库工具包支持的数据类型 536
14.1.4 ADO模型 537
14.2 数据库基本操作 537
14.2.1 建立连接 537
14.2.2 表操作 539
14.2.3 插入数据 540
14.2.4 读取数据 541
14.2.5 记录集与数据浏览 543
14.2.6 事务与提交 546
14.2.7 使用命令对象和SQL语句 547
14.3 报表与报表工具包 548
14.3.1 LabVIEW中的报表VI 548
14.3.2 VI说明信息与HTML报表 550
14.3.3 报表布局与高级报表VI 551
14.3.4 利用Word和Excel模板创建报表 552
14.4 利用报表工具包操作Excel 553
14.4.1 常用的简单Excel VI 553
14.4.2 单元格格式 555
14.4.3 图表与图片VI 556
14.4.4 Excel通用VI和高级VI 557
14.5 利用报表工具操作Word 559
14.5.1 Word简单VI 560
14.5.2 Word通用VI 560
14.5.3 Word表格与图表VI 561
14.6 小结 562
第15章 LabVIEW与实时操作系统 563
15.1 实时操作系统 563
15.1.1 实时操作系统的特点与实现 563
15.1.2 操作系统的有关名词解释 564
15.1.3 LabVIEW中的实时开发软件 565
15.1.4 LabVIEW支持的实时操作系统 566
15.1.5 LabVIEW实时平台概述 566
15.2 实时控制器软件安装及配置 568
15.2.1 配置实时系统BIOS(PXI) 568
15.2.2 MAX下安装PXI实时软件 569
15.2.3 识别远程设备 569
15.2.4 建立实时项目 570
15.3 实时应用软件高级编程及技巧 571
15.3.1 实时操作系统下LabVIEW不支持的特性 572
15.3.2 实时操作系统下的多线程 572
15.3.3 实时系统中时间确定性的实现 575
15.3.4 实时系统中的线程间通信 579
15.3.5 实时控制系统的网络通信 582
15.3.6 实时控制系统的软件架构 590
15.4 小结 593
第16章 LabVIEW实现数据采集 594
16.1 数据采集的基本概念 594
16.1.1 信号 594
16.1.2 传感器 595
16.1.3 信号处理 596
16.2 数据采集卡 598
16.2.1 数据采集卡的定义及分类 598
16.2.2 多功能数据采集卡原理图 599
16.2.3 数据采集的关键参数和概念 599
16.2.4 数据采集卡与信号接地 604
16.3 采样定理 606
16.4 降低系统噪声和提高精度 608
16.5 如何选购采集卡 610
16.6 数据采集软件基础 611
16.6.1 采集系统的安装 611
16.6.2 NI采集卡的常用函数 614
16.6.3 研华常用采集函数 618
16.7 基于NI-DAQmx的高级编程 619
16.7.1 触发信号(Trigger) 619
16.7.2 采集系统时钟 621
16.7.3 多板卡之间的同步采集 624
16.7.4 数据传输机制 626
16.7.5 完整波形输出 630
16.7.6 并行结构采集 631
16.7.7 通过硬件信号触发定时循环运行 631
16.7.8 用NI-DAQmx的事件编写事件驱动程序 633
16.7.9 选择合适的读取策略 633
16.7.10 使用NI-DAQmx控制任务安全中止采集 636
16.7.11 计数器/定时器及其应用 636
16.8 小结 641
第17章 FPGA开发 642
17.1 FPGA的基本概念与CRIO的组成 642
17.1.1 FPGA的基本概念 642
17.1.2 CRIO的构成 643
17.1.3 构建FPGA项目 644
17.2 FPGA编程 645
17.2.1 FPGA基本I/O之模拟量输入/输出 645
17.2.2 FPGA基本I/O之数字量输入/输出 646
17.2.3 FPAG定时、时钟与分频 648
17.2.4 FPGA计数器应用 649
17.2.5 触发与外部时钟循环 652
17.2.6 FPGA常用函数 653
17.2.7 FPGA多线程与线程之间的数据交换 656
17.2.8 FPGA IP Core 659
17.3 FPGA与RT程序之间的数据交换 660
17.3.1 读写控件方式 660
17.3.2 中断 661
17.3.3 FIFO 662
17.3.4 扫描方式 665
17.3.5 专用C模块 668
17.3.6 FPGA程序的优化 670
17.4 Spartan-3E开发板 673
17.4.1 Spartan-3E简介 673
17.4.2 建立Spartan-3E FPGA项目 674
17.4.3 编译FPGA程序 675
17.5 小结 676

前言/序言

前 言


计算机的出现,彻底改变了人们的工作和生活方式。如今计算机已经无处不在,进入了每个人的生活之中。在工程技术人员看来,计算机不仅仅是人们常见的PC,也包括各种微处理器。从这个角度看,我们无时无刻不在使用计算机,例如,电视、洗衣机、自动提款机等都依赖计算机来实现各种便捷的功能。

相同的计算机可以完成不同的工作,在于它们使用不同的程序,而程序是由计算机编程语言创建的。短短几十年中,出现了众多的编程语言,这些编程语言的共同特点是采用文本方式创建程序。文本方式编程对编程人员要求很高,这使得计算机编程只能是少数人才可以从事的职业。

美国国家仪器公司(National Instruments, NI)的创新软件产品LabVIEW,允许用图形方式编程,摒弃了晦涩难懂的文本代码,使得计算机编程不再是少数人的专利。LabVIEW的最早版本诞生于1986年,几乎和Windows的最早版本同步,这注定了LabVIEW是多平台的编程语言,适合于不同的操作系统。

20世纪80年代初,NI公司是GPIB总线设备的主要供货商,丰富的硬件经验和强大的软件开发需求,促使NI公司的工程师们决心寻找一种代替传统编程语言的开发工具,这导致了1986年LabVIEW的横空出世。LabVIEW是由测试工程师开发的专用编程语言,因此,LabVIEW具有鲜明的行业特点,最早主要用于测试测量领域。NI公司独创了虚拟仪器的理念,提出了“软件就是仪器”的理念,并逐步成为业界的标准。

随着LabVIEW的不断发展,几乎每隔一两年,都要推出新的版本。LabVIEW的应用范围已经覆盖了工业自动化、测试测量、嵌入式应用、运动控制、图像处理、计算机仿真、FPGA等众多领域。以LabVIEW为核心,采用不同的专用工具包和统一的图形编程方式,可以实现不同技术领域的需求。

由于LabVIEW版本升级过快,导致许多函数、VI的名称与图标发生了变化。使用LabVIEW新版本的读者,会发现本书第1版中程序框图的函数、VI与新版LabVIEW对应不上,而且LabVIEW每次更新都增加了很多新功能。鉴于此,我们编写了本书的第2版。第2版在2016新版LabVIEW的基础上,重新编写了绝大部分程序框图,同时也针对新功能,增加了对应的内容。尤其是对第10章,重写了大部分内容,增加了许多流行的框架结构的介绍。除了LabVIEW本身的框架外,也介绍了几种流行的第三方常用框架结构。

本书要点

本书作者多年使用LabVIEW作为主要的编程语言,因此特别关注LabVIEW在工业领域的具体运用以及LabVIEW的实用编程技术。本书共17章,分为入门篇、高级篇、工程应用篇。

第1~5章为入门篇,介绍了LabVIEW的基本概念、基本函数的用法和常用的运行结构,详尽地分析了LabVIEW的基本数据结构和文件存储方式。

第6~11章为高级篇,介绍了应用程序、VI和控件的引用、属性和方法,以及各类高级控件的运用方法。第8章介绍了LabVIEW的文本编程方式及DLL、C语言接口,第9章详细介绍了基于MATLAB语法的MathScript编程技术,第10章介绍了LabVIEW基于组件的编程方法。

第12~17章为工程应用篇,具体而细致地讲解了在做实际工程开发时所用到的LabVIEW编程技术。本篇结合LabVIEW的常用工具包,具体分析了计算机串口、并口、网络通信方面的编程技术,以及数据记录和监控工具包、数据库连接工具包、报表生成工具包、状态图工具包、FPGA工具包等的应用。第13、第14章详细介绍了数据采集的基本原理和常用编程方法,其中重点介绍了LabVIEW在实时系统下的运用。第15章讲解了LabVIEW实时系统的开发案例。第16章讲解了LabVIEW数据采集系统开发案例。第17章讲解了FPGA的开发案例,以及如何利用LabVIEW图形编程方式,提高开发效率。

本书读者

本书可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

本书特色

本书内容非常丰富,在每个章节都安排了大量的示例,针对具体编程实践中遇到的问题,提出了多种解决方法。在兼顾基础知识的前提下,深入讨论了LabVIEW的高级编程方法和编程技巧。

本书的宗旨是作为实用工具书,侧重于来自工程实践的一线案例。笔者在写作过程中,与众多的LabVIEW爱好者进行了充分的沟通与交流,总结了编程过程中经常遇到的问题,并作为本书的重要内容。

本书使用了大量篇幅讲解NI公司各种专用工具包的运用,这部分内容具有一定的深度和实用价值,特别适合于具有一定基础的编程人员学习运用。在基础篇中,虽然也介绍了许多LabVIEW的基础知识,但还是侧重于具体应用,其中大量的例程可以直接在具体项目中使用。

在高级篇中,重点介绍了LabVIEW常用的编程模式,以及状态图工具包的运用,同时介绍了新增的面向对象的编程方法。

补遗说明

本书写作时主要使用8.6版本,但是书中介绍的具体内容并不限于特定的版本,因此无版本限制。本书案例文件和相关课件在网址read.zhiliaobang.com可以下载,方便读者提高学习效 率,也方便教师教学。此外,对于比较重要的内容,为了让读者印象深刻,我们以“学习笔记”的体例呈现出来。

致谢与分工

本书由陈树学、刘萱两位工程师编写,我们有多年的LabVIEW实际开发经验,经过浓缩和总结才成此书。在编写本书的过程中得到张国强老师的大力支持,他为我们提供了开发硬件,使得写作能在真实的开发环境中进行,应该说没有他的热心帮助完成本书是难以想象的事情。本书也离不开成都道然科技有限责任公司的专业策划支持。因为本书作者为工程技术人员,对于写作并不擅长,书中错漏之处在所难免,敬请批评指正。能够为LabVIEW在国内的推广使用做一点力所能及的贡献,能够对广大的LabVIEW爱好者有所帮助,是我们最大的愿望。如果你有任何意见或者建议欢迎联系:info@dozan.cn。



《LabVIEW宝典(第2版)》是一本旨在帮助用户深入理解并高效运用LabVIEW这一图形化编程环境的权威指南。本书内容全面,涵盖了从LabVIEW基础概念到高级应用技巧的方方面面,力求为工程师、研究人员、学生以及所有对自动化测试、仪器控制、数据采集和实时系统开发感兴趣的读者提供一条清晰的学习路径。 第一部分:LabVIEW基础入门 本部分旨在为初学者搭建坚实的LabVIEW知识框架,让他们能够快速掌握软件的基本操作和核心理念。 1.1 LabVIEW概述与优势: 深入剖析LabVIEW为何能够成为工程和科研领域不可或缺的工具。我们将探讨其图形化编程的独特性,即使用图标和连线代替传统的文本代码,如何极大地降低了开发难度,提高了开发效率。同时,还会详细阐述LabVIEW在快速原型开发、集成不同硬件平台、实现复杂系统控制等方面的显著优势。读者将了解到LabVIEW的跨平台兼容性,以及其在工业自动化、科学研究、航空航天、汽车测试等多个领域的广泛应用实例,从而建立起对LabVIEW强大功能的初步认知。 1.2 LabVIEW开发环境导览: 本章将带领读者熟悉LabVIEW的集成开发环境(IDE)。我们会逐一介绍前端面板(Front Panel)的设计原则,包括各种控件(Numeric Controls, Boolean Controls, String Controls, Array Controls, Cluster Controls, Enum Controls, Path Controls等)的类型、属性设置和放置技巧,以及它们如何用于构建用户友好的交互界面。接着,深入讲解程序框图(Block Diagram)的构成,介绍构成程序逻辑的核心元素:接线端(Terminals)、常量(Constants)、子VI(SubVIs)、函数(Functions)和结构(Structures,如While Loop, For Loop, Case Structure, Sequence Structure, Event Structure)。我们将详细讲解如何通过连线(Wires)连接这些元素,形成数据流和逻辑控制流,从而构建出实际的程序。此外,还会介绍常用的调式工具,如探针(Probes)、高亮执行(Highlight Execution)和单步执行(Single Stepping),帮助读者理解程序运行过程,快速定位和解决问题。 1.3 数据类型与数据流: 数据是程序运行的血液。本章将详细讲解LabVIEW中的基本数据类型,包括数值型(Integers, Floating-point numbers)、布尔型(Boolean)、字符串型(String)、数组(Arrays)和簇(Clusters)。我们会深入探讨每种数据类型的特性、使用场景以及它们之间的转换。更重要的是,本章将重点阐述LabVIEW独特的数据流编程范式。读者将理解数据如何从一个控件或函数流向另一个控件或函数,以及“程序框图的执行顺序”是如何由数据可用性决定的,而非文本代码中的顺序执行。理解数据流是掌握LabVIEW的关键,本章将通过丰富的实例,帮助读者建立起直观的数据流思维。 1.4 常用控件与工具的深入解析: 除了基础控件,本章还会深入讲解一些更常用和强大的控件。例如,图表(Charts)和波形图(Waveforms)在数据可视化中的应用,表格(Tables)和列表框(Listboxes)在数据显示和列表管理中的作用,以及一些特殊的控件如进度条(Progress Bar)、滑块(Slider)等。同时,会介绍LabVIEW中内置的各种实用工具,如调色板(Palettes)的组织结构、搜索功能,以及如何利用快捷键和鼠标操作提高编辑效率。 1.5 简单的VI开发实践: 为了巩固所学知识,本章将通过一系列由浅入深的实践案例,引导读者动手完成第一个LabVIEW VI。从一个简单的“Hello, World!”程序,到一个能够进行基本算术运算的计算器,再到一个能够采集并显示温度数据的简单系统。每个案例都会详细讲解需求分析、前端面板设计、程序框图构建、调式以及最终的运行演示。通过这些实践,读者将建立起从概念到实现的完整流程。 第二部分:LabVIEW核心技术与高级应用 在掌握了LabVIEW的基础后,本部分将进一步深入挖掘LabVIEW的强大功能,解决更复杂的工程问题。 2.1 子VI(SubVI)与模块化编程: 模块化是大型程序设计的基石。本章将深入讲解如何创建和使用子VI。我们将探讨子VI的设计原则,包括输入/输出端子(Terminals)的定义、参数传递机制,以及如何通过“图标编辑”(Icon Editor)为子VI设计易于识别的图标,增强代码的可读性。学习如何将复杂的VI分解成可重用的子VI,可以极大地提高代码的可维护性、可读性和开发效率,并方便团队协作。 2.2 数组与簇的高级处理: 数组和簇是LabVIEW中处理复杂数据结构的强大工具。本章将深入探讨数组的高级操作,包括多维数组的创建与操作,数组的搜索、排序、拼接、子集提取等常用函数。对于簇,我们将讲解如何创建和解构簇,如何在簇中存储不同数据类型的元素,以及簇在构建复杂数据对象时的重要作用。 2.3 字符串与文件I/O操作: 在实际应用中,与用户交互、保存和读取数据是必不可少的环节。本章将详细介绍LabVIEW中字符串的处理函数,包括字符串的拼接、分割、查找、替换、格式化等。同时,将重点讲解文件I/O操作,包括文本文件(.txt, .csv)、二进制文件和Excel文件的读写。读者将学会如何保存采集到的数据,如何读取配置文件,以及如何与外部文本文件进行交互。 2.4 循环与嵌套结构: 循环结构是实现重复任务和迭代计算的核心。本章将深入讲解While Loop和For Loop的用法,包括它们的终止条件、计数器、移位寄存器(Shift Registers)用于在循环之间传递数据。我们还将深入研究Case Structure,用于实现基于条件的逻辑分支,以及Sequence Structure用于控制程序执行顺序。同时,会探讨Event Structure在处理用户事件(如按钮点击、滑块移动)和系统事件时的强大能力,这对于构建交互式应用程序至关重要。 2.5 队列(Queue)、通知(Notification)与信号量(Semaphore): 当需要管理多个任务之间的通信和同步时,这些高级同步机制就显得尤为重要。本章将详细讲解队列(Queue)在先进先出(FIFO)数据缓冲中的应用,如何实现任务间的数据传递。通知(Notification)机制用于任务间的单向通信和事件通知。信号量(Semaphore)则用于限制对共享资源的并发访问,防止竞态条件。通过这些机制,读者可以构建更健壮、更高效的多线程或多任务系统。 2.6 状态机(State Machine)设计模式: 状态机是一种强大的程序设计模式,适用于处理具有多个离散状态和状态转换的系统,例如通信协议、控制系统等。本章将详细讲解如何使用LabVIEW的Case Structure和While Loop构建一个灵活且易于理解的状态机。我们将演示如何定义状态、转移条件以及如何在不同状态下执行不同的操作,从而简化复杂逻辑的开发和维护。 2.7 VI服务器(VI Server)与远程调用: VI服务器是LabVIEW实现程序间通信和远程控制的关键技术。本章将深入介绍VI服务器的概念,包括如何通过VI服务器实现VI的实例化、属性设置、方法调用以及事件的注册。读者将学会如何创建可远程调用的VI,如何使用VI服务器在不同的LabVIEW实例之间,甚至在不同的计算机之间进行通信,这对于分布式系统和远程监控尤为重要。 2.8 共享变量(Shared Variables)与网络通信: 在需要跨网络共享数据或实现分布式控制的场景下,共享变量和网络通信技术不可或缺。本章将详细讲解LabVIEW的共享变量技术,包括创建、配置和使用共享变量,以及如何实现实时数据的高效共享。此外,还会介绍LabVIEW中的TCP/IP和UDP通信协议,演示如何构建客户端-服务器架构,实现不同设备之间的数据交换。 第三部分:LabVIEW在实际工程中的应用 本部分将通过具体的工程应用案例,展示LabVIEW在不同领域的强大实力,帮助读者将所学知识融会贯通,应用于实际项目中。 3.1 数据采集(DAQ)系统设计: 数据采集是LabVIEW最常见的应用之一。本章将详细讲解如何使用NI DAQ硬件和LabVIEW的DAQmx驱动程序,搭建一个完整的数据采集系统。我们将涵盖模拟输入(AI)、模拟输出(AO)、数字输入(DI)、数字输出(DO)以及计数器/定时器的配置与使用。读者将学会如何根据不同的传感器和测量需求,选择合适的DAQ设备,并在LabVIEW中编写程序进行实时数据采集、处理和显示。 3.2 仪器控制与自动化测试: LabVIEW在仪器控制领域具有得天独厚的优势。本章将介绍如何利用GPIB、VISA、Serial(RS-232)、Ethernet等通信协议,控制各种测试仪器,如示波器、信号发生器、功率计、万用表等。我们将演示如何编写VI来发送仪器指令、读取测量结果,并构建完整的自动化测试序列,实现从手动测试到全自动测试的转变。 3.3 实时控制系统开发: 对于需要精确时间和确定性响应的实时应用,LabVIEW提供了强大的实时操作系统(RTOS)支持。本章将介绍LabVIEW Real-Time模块的使用,包括如何部署VI到RT系列目标机,以及如何利用实时操作系统实现高精度的定时任务、周期性采集和控制。我们将探讨实时控制系统的设计挑战,如优先级调度、中断处理和同步机制。 3.4 嵌入式系统开发与部署: LabVIEW支持多种嵌入式硬件平台,如NI CompactRIO、PXI等,使得工程师能够快速开发和部署嵌入式控制与测量系统。本章将深入讲解如何在这些嵌入式平台上进行LabVIEW开发,包括模型部署、代码编译和远程监控。读者将了解到如何利用嵌入式平台的强大功能,构建高度集成的解决方案。 3.5 数据分析与处理: LabVIEW提供了丰富的内置函数库,用于各种数据分析和处理任务。本章将介绍如何利用LabVIEW进行信号处理(如滤波、FFT)、统计分析、曲线拟合、图像处理等。我们将演示如何将采集到的数据导入LabVIEW,进行必要的预处理,然后应用各种分析算法,最终得到有意义的结果。 3.6 用户界面(UI)设计与用户体验优化: 良好用户界面是提升软件可用性的关键。本章将分享LabVIEW UI设计的最佳实践,包括如何合理布局控件、使用颜色和字体、设计直观的导航菜单、创建美观的图标和图片。我们将探讨如何利用属性节点和事件结构,实现动态的UI更新和响应,从而为用户提供流畅、友好的操作体验。 3.7 性能优化与代码生成: 随着应用程序复杂度的增加,性能优化变得尤为重要。本章将介绍LabVIEW中的性能分析工具,以及各种代码优化技巧,如选择合适的循环结构、优化数据结构、减少不必要的计算、使用高效的函数等。此外,还会探讨LabVIEW与C/C++等文本代码的集成,以及如何利用LabVIEW的编译器生成高性能的可执行文件。 3.8 常见问题排查与调试技巧: 软件开发过程中难免会遇到各种问题。本章将汇总LabVIEW开发中常见的技术难点和错误类型,并提供系统性的排查方法和调试技巧。我们将回顾前面章节介绍的调式工具,并分享一些高级的调试策略,帮助读者快速定位和解决问题,提高开发效率。 《LabVIEW宝典(第2版)》不仅仅是一本技术手册,更是一本实践指南。书中穿插了大量的实际项目案例、代码片段和操作截图,力求让读者在阅读过程中能够边学边练,迅速将理论知识转化为实际技能。无论是初学者希望快速入门,还是资深用户寻求技术突破,都能从本书中获得宝贵的知识和启示,最终能够独立开发出高性能、高可靠性的LabVIEW应用程序,为工程和科研领域贡献自己的力量。

用户评价

评分

这本书的排版和内容的逻辑组织也体现了极高的专业水准,这对于一本技术手册来说至关重要。很多技术书的弊病在于,知识点分散,前后矛盾,或者章节之间的过渡生硬,让人读起来非常费力。但这本书在结构设计上明显下了大功夫。它从基础概念的澄清开始,逐步引入更复杂的架构设计,然后深入到性能调优和调试技巧,最后以实际案例收尾,整个阅读路径非常顺畅,像爬一座设计精良的阶梯,每一步都稳固可靠。尤其是在涉及到异步通信和并行处理的章节,作者使用了大量的流程图和时序图来辅助说明,这些图示清晰明了,有效地避免了纯文本描述带来的歧义。我发现,很多我之前通过反复试错才勉强理解的概念,通过书中一个精心绘制的图表,瞬间就豁然开朗了。这种对“可视化学习”潜力的深度挖掘,使得学习曲线变得平缓,即使是面对难度较高的多核编程或网络分发时,也能保持比较高的阅读效率。对于自学者而言,这种结构化的知识呈现方式,简直是不可多得的学习伴侣。

评分

最让我感到惊喜的是,作者在讨论工程实践时,展现出的那种高度的“工业伦理感”。这不仅仅是关于如何让程序跑起来,更是关于如何写出让别人能够理解、并且能够长期维护的代码。书中对代码规范、注释策略以及项目文档化的要求非常严格和细致,甚至细致到变量命名的层级和VI图标设计的规范。虽然这些在某些程序员看来可能有些“教条”,但在经历过维护那些“屎山代码”的痛苦后,我深知这些规范的价值。作者强调,任何一个测试系统,其寿命往往远超开发周期,因此,前期的规范投入是对未来维护成本的巨大节省。书中提供了若干个“坏代码”与“好代码”的对比案例,通过直观的差异,让我深刻体会到了遵循规范的重要性。这种从宏观架构到微观编码习惯的全方位指导,让这本书的实用价值超越了单纯的技术手册范畴,更像是一本 LabVIEW 工程师的职业素养培养指南。读完后,我的代码风格和自我审查的严格程度都有了显著的提升,这种潜移默化的影响是最为宝贵的。

评分

从技术分享的角度来看,这本书的广度令人惊叹,它几乎覆盖了工业自动化领域里所有主流的LabVIEW应用方向。我之前主要关注测量和控制,对于像机器视觉或者嵌入式部署方面的内容了解得比较零碎,这本书提供了一个非常系统和连贯的知识体系。特别是关于与第三方硬件(如PXIe平台、工业相机)进行高效通信的部分,作者不仅列举了常用的驱动API调用方法,还深入分析了在不同操作系统环境下,如何通过优化数据传输缓冲区和中断处理机制来最大化硬件性能。这对我来说是全新的知识增量,因为我们过去很多时候都是依赖于硬件供应商提供的简单驱动包,从未深究过底层数据流的瓶颈在哪里。书中还花了专门的篇幅讨论了LabVIEW在部署到小型嵌入式设备时的资源限制和代码优化策略,比如如何有效利用FPGA模块来卸载CPU的实时计算任务。这种跨越不同技术栈的整合叙述,让读者能够清晰地看到LabVIEW在整个自动化解决方案链条中所处的位置和潜力。这本书读完,感觉对未来技术选型和项目规划都有了更清晰的蓝图。

评分

这本书的理论深度和实战指导的平衡掌握得相当到位,很多地方读起来就像是经验丰富的老工程师在耳边手把手地传授“踩坑”经验,而不是冷冰冰的官方文档。我特别欣赏作者在讲解高级VI设计和代码重构技巧时所展现出的那种对“代码质量”的执着。比如,关于错误处理机制的探讨,书中详细分析了在大型应用中,仅仅使用简单的“连线错误簇”是多么危险,并系统地介绍了几种比自带错误簇更强大的、自建的、可追溯的错误管理系统。我过去总是嫌麻烦,遇到错误就跳过或简单地记录一下,导致程序一复杂就“黑箱”化,很难定位问题。这本书提供的框架,迫使我重新审视每一个分支点的错误路径,使得程序的健壮性得到了质的飞跃。此外,书中对自定义控件和函数库的组织管理也提出了非常规范化的建议,这对于团队协作和后续维护至关重要。现在我手头的项目,每次新增功能时,都能清晰地知道该把代码放在哪个层次、用什么接口调用,极大地减少了“代码考古”的时间。这本书的价值在于,它帮你建立了一套严谨的、可扩展的工程化思维,而不仅仅是教你几个图形化编程的技巧。

评分

终于把手头这本关于自动化测试的经典著作啃完了,这本书给我带来的冲击还是挺大的,尤其是在理解一些底层原理和高级应用架构上,可以说打开了一个全新的视角。我一直觉得LabVIEW这东西,上手容易,但想真正做到精通,做出稳定、高效、易于维护的系统,没有一本“内功心法”级别的书是不行的。这本书恰恰就提供了这种深度。比如,在处理大规模数据采集和实时控制的章节里,作者并没有停留在简单的模块堆砌,而是深入探讨了数据流编程范式在处理并发和时序问题上的最佳实践,特别是关于如何优化内存使用和减少不必要的CPU占用,那些细节的处理,真不是新手教程里能轻易学到的。我印象最深的是关于状态机设计模式的讲解,它不仅清晰地阐述了如何用状态机构建健壮的应用程序框架,还对比了不同类型的状态机(如简单的事件驱动和更复杂的生产者/消费者模型)在实际项目中的适用场景和性能差异,这对于我过去那种“拼凑式”编程习惯的纠正是非常有益的。读完后,我立刻尝试用书中学到的方法重构了我正在维护的一个测试程序,性能上的提升立竿见影,尤其是在数据记录和后续分析的衔接上,流程顺畅了许多,这可比我自己摸索快了不止一年半载。这本书对那些想从“会用”LabVIEW跨越到“精通”LabVIEW的工程师来说,无疑是份厚重的礼物。

评分

比想象中要薄一点

评分

很好很不错!很好很不错!

评分

很好!!!!!!!!!!!!!!!!!!!

评分

内容丰富,学习中。

评分

东西不错,赞一个

评分

东西不错,赞一个

评分

给公司买的,信任京东的产品

评分

神速,超赞,京东自营

评分

课题室集体购书,质量不错,次日达。下次还会来购买。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有