第0章 什么是labview .
0.1 labview与文本编程语言的区别1
0.2 g语言2
0.3 labview的应用领域3
0.4 labview的发展历史4
第1章 labview入门
1.1 “hello,world!”程序5
1.1.1 启动界面5
1.1.2 创建一个新vi6
1.1.3 让vi显示“您吃了吗?”7
1.1.4 labview程序的运行逻辑10
1.2 如何学习labview12
1.2.1 学习labview的3种方式12
1.2.2 自学labview13
1.2.3 labview的帮助文档15
1.2.4 labview的范例17
1.2.5 寻求他人帮助19
1.3 编写更复杂的程序19
1.3.1 美化vi19
1.3.2 让vi持续运行21
.1.3.3 项目23
1.3.4 使用子vi24
1.3.5 创建子vi26
1.3.6 从程序框图创建子vi28
1.4 设置个性化编程环境29
1.4.1 labview的设置选项29
1.4.2 函数和控件选板的设置30
1.4.3 工具选板32
第2章 数据
2.1 数值34
2.1.1 数值控件及显示格式34
2.1.2 常量35
2.1.3 表示法36
2.1.4 数值运算的常用函数37
2.1.5 表达式节点38
2.1.6 公式express vi38
2.1.7 公式节点39
2.1.8 mathscript脚本节点42
2.1.9 数值的单位42
2.2 其他数据类型43
2.2.1 枚举型43
2.2.2 布尔型46
2.2.3 数组型46
2.2.4 簇51
2.2.5 字符串51
2.2.6 路径53
2.3 数据类型之间的转换54
2.3.1 数值表示法之间的转换54
2.3.2 数值与字符串之间的转换55
2.3.3 数值与布尔类型之间的转换55
2.3.4 路径与其他数据类型之间的转换55
2.3.5 与时间相关的转换56
2.3.6 变体57
2.3.7 数据平化至字符串59
2.3.8 数据平化至xml60
2.3.9 强制转换61
2.4 控件和数据在程序中的使用64
2.4.1 控件与变量的关系64
2.4.2 控件的标签和标题64
2.4.3 控件的默认值65
2.4.4 局部变量66
2.4.5 属性节点69
2.4.6 调用节点71
2.5 应用实例71
2.5.1 字符串公式求值71
2.5.2 字符串转换为布尔数组72
2.5.3 程序运行中改变控件标题73
2.5.4 禁止枚举控件中的某些项73
2.5.5 在字符串中显示多种字体74
第3章 基本程序结构
3.1 顺序结构75
3.1.1 程序执行顺序75
3.1.2 创建顺序结构76
3.1.3 层叠式顺序结构77
3.1.4 平铺式顺序结构79
3.1.5 “无形胜有形”的最高境界79
3.2 条件结构81
3.2.1 布尔类型的条件选择结构82
3.2.2 其他数据类型的条件选择83
3.2.3 合理设置选择条件83
3.2.4 条件结构隧道84
3.2.5 选择函数85
3.3 程序框图禁用结构86
3.4 条件禁用结构87
3.5 for循环结构89
3.5.1 for循环89
3.5.2 循环结构隧道90
3.5.3 移位寄存器92
3.5.4 反馈节点93
3.5.5 结束条件94
3.6 while循环结构95
3.7 事件结构96
3.7.1 事件结构96
3.7.2 按照产生源来区分事件的种类96
3.7.3 编辑事件98
3.7.4 按照发出时间区分事件的种类99
3.7.5 事件结构的使用100
3.7.6 动态事件102
3.7.7 用户自定义的事件105
3.8 定时结构107
3.8.1 定时函数和vi107
3.8.2 使用事件结构107
3.8.3 定时循环108
第4章 常用程序结构模式
4.1 错误处理机制109
4.1.1 不可预期的错误109
4.1.2 可预期的错误112
4.1.3 自定义错误112
4.1.4 显示错误信息113
4.1.5 调试时显示错误信息114
4.1.6 合并错误115
4.2 可重入vi116
4.2.1 同一vi的并行运行117
4.2.2 可重入vi的副本118
4.3 状态机119
4.3.1 循环条件结构119
4.3.2 单状态传递的状态机120
4.3.3 多状态传递的状态机121
4.3.4 状态机的使用122
4.3.5 状态图工具包122
4.4 全局变量123
4.4.1 全局变量vi124
4.4.2 共享变量126
4.4.3 功能全局变量127
4.4.4 基于功能全局变量的程序功能模块130
4.5 界面程序131
4.5.1 界面程序的程序框图设计131
4.5.2 用户自定义事件的设计134
4.5.3 对耗时代码的处理135
4.5.4 其他注意事项136
4.6 多态vi137
4.6.1 使用变体作为子vi的参数类型137
4.6.2 多态vi的概念138
4.6.3 编写多态vi138
4.6.4 多态vi的注意事项140
4.6.5 菜单设计的小技巧141
4.7 express vi141
4.7.1 什么是express vi141
4.7.2 子vi在程序框图上的显示方式142
4.8 传引用144
4.8.1 labview自带的传引用数据类型144
4.8.2 全局变量145
4.8.3 队列146
4.8.4 数据记录文件引用句柄148
4.8.5 借助c语言149
第5章 调用外部程序
5.1 动态链接库151
5.1.1 背景知识151
5.1.2 cln和cin节点152
5.1.3 dll的加载方式153
5.1.4 函数的设置154
5.1.5 简单数据类型参数的设置155
5.1.6 结构型参数的设置159
5.1.7 返回值的设置161
5.1.8 对c语言中指针的处理162
5.1.9 labview提供的c接口函数163
5.1.10 导入共享库工具164
5.2 activex166
5.2.1 activex控件166
5.2.2 使用activex控件166
5.2.3 activex控件的事件169
5.2.4 activex文档171
5.2.5 activex自动化172
5.3 .net173
5.4 .exe174
第6章 vi服务器
6.1 概念175
6.1.1 什么是vi服务器175
6.1.2 vi scripting175
6.2 运行中改变界面177
6.2.1 属性节点177
6.2.2 vi的属性178
6.2.3 得到对象的引用179
6.2.4 对象类的层次结构180
6.2.5 类浏览器181
6.3 装载和运行子vi182
6.3.1 静态与动态装载子vi182
6.3.2 动态调用vi184
6.3.3 插件结构186
6.3.4 递归调用186
6.3.5 后台任务188
6.3.6 启动画面190
6.4 动态创建和修改vi191
6.4.1 vi scripting授权191
6.4.2 创建vi192
6.4.3 创建新的控件192
6.4.4 创建程序框图193
6.4.5 批量修改vi194
6.5 网络服务195
6.6 activex接口196
第7章 测试测量应用程序设计
7.1 “采集、处理、显示”型程序的结构模型..197
7.1.1 程序结构的划分197
7.1.2 普通循环模型198
7.1.3 管道流水线模型199
7.1.4 “生产者—消费者”模型200
7.2 express vi201
7.2.1 测试程序相关的express vi201
7.2.2 应用202
7.3 数据采集205
7.3.1 使用驱动程序205
7.3.2 使用硬件设备的c语言驱动程序206
7.3.3 编写驱动程序207
7.3.4 可互换虚拟仪器驱动程序207
7.3.5 数据采样时钟的设置209
7.4 显示 210
7.4.1 波形图表和波形图控件210
7.4.2 波形数据类型210
7.4.3 多曲线显示212
7.4.4 中断的曲线213
7.4.5 大量数据的显示214
7.4.6 高速数据的显示216
7.4.7 强度图218
7.5 存储220
7.5.1 文本文件和二进制数据文件220
7.5.2 文本文件221
7.5.3 二进制数据文件221
7.5.4 数据库221
7.5.5 生成报表222
第8章 调试
8.1 集成调试环境223
8.1.1 列出编译错误223
8.1.2 运行时的调试工具224
8.1.3 全局选项226
8.1.4 vi的属性226
8.2 断点和探针227
8.2.1 断点227
8.2.2 探针228
8.2.3 选取其他控件作为探针228
8.2.4 条件探针229
8.2.5 用户自定义探针229
8.3 其他查找程序错误的工具和方法231
8.3.1 程序框图禁用结构232
8.3.2 使用消息对话框和文件232
8.4 labview代码中的常见错误233
8.4.1 数值溢出234
8.4.2 for循环的隧道234
8.4.3 循环次数235
8.4.4 移位寄存器的初始化236
8.4.5 簇中元素的顺序236
8.4.6 时序错误237
8.4.7 竞争状态239
8.4.8 等待循环中的延时239
8.5 提高程序运行效率240
8.5.1 找到影响程序运行速度的瓶颈240
8.5.2 查看一段代码的运行时间241
8.6 解决程序效率低下的瓶颈242
8.6.1 读/写外设、文件242
8.6.2 界面刷新244
8.6.3 循环内的运算246
8.6.4 调试信息246
8.6.5 多线程和内存的使用246
8.6.6 利用等待用户反馈的时间247
8.7 dll调试247
8.7.1 调试labview调用的dll247
8.7.2 调试labview生成的dll248
第9章 管理labview项目
9.1 项目浏览器249
9.1.1 项目浏览器的功能249
9.1.2 项目中的层次结构249
9.1.3 文件结构251
9.1.4 按照文件的物理结构来查看项目251
9.1.5 源代码管理252
9.1.6 比较和合并vi254
9.1.7 运行环境255
9.2 库256
9.2.1 创建库257
9.2.2 vi的名字空间257
9.2.3 为库中vi设置权限258
9.2.4 llb文件259
9.3 发布产品260
9.3.1 应用程序261
9.3.2 共享库265
9.3.3 源代码266
9.3.4 网络应用269
9.3.5 安装程序273
9.3.6 压缩包274
第10章 界面设计
10.1 界面设计原理275
10.1.1 一致性276
10.1.2 界面元素的关联279
10.1.3 帮助和反馈信息281
10.1.4 限制284
10.1.5 突出重点285
10.2 界面设计中常用的规范和实现方法286
10.2.1 控件尺寸286
10.2.2 应用程序的退出按钮290
10.2.3 菜单292
10.2.4 控件快捷菜单293
10.2.5 使用键盘操作界面294
10.2.6 用户自定义控件296
10.3 界面设计实例299
10.3.1 利用labview自带控件299
10.3.2 实现运行时改变界面的代码301
10.3.3 装饰和背景图片304
10.3.4 用户自定义控件306
10.3.5 改进界面的实现方法307
10.3.6 使用绘图控件310
10.3.7 界面的特殊效果314
10.3.8 动画316
第11章 代码风格与优化
11.1 labview的运行机制319
11.1.1 labview的编程思想319
11.1.2 labview与文本语言的差异320
11.1.3 labview是编译型语言还是解释型语言323
11.1.4 数据流驱动的编程语言326
11.1.5 传值和传引用326
11.1.6 vi中的数据空间328
11.2 内存优化329
11.2.1 vi在内存中的结构329
11.2.2 内存泄漏330
11.2.3 缓存重用332
11.2.4 子vi参数的缓存重用336
11.2.5 输入/输出参数的排布338
11.2.6 优化数据流结构339
11.3 多线程编程341
11.3.1 自动多线程编程语言341
11.3.2 labview的执行系统342
11.3.3 执行系统与线程的关系343
11.3.4 用户界面执行系统343
11.3.5 其他几个执行系统344
11.3.6 vi的优先级345
11.3.7 动态连接库函数的线程346
11.3.8 labview对多核cpu的支持347
11.4 代码编写规范和技巧350
11.4.1 简洁的程序框图350
11.4.2 布局和连线351
11.4.3 注释353
11.4.4 使用自定义数据类型354
11.4.5 连线板355
11.4.6 图标356
11.4.7 vi分析器361
第12章 界面的模块划分和xcontrol
12.1 复杂界面的模块划分364
12.1.1 界面的模块划分364
12.1.2 选项卡控件365
12.1.3 子面板368
12.1.4 使用xcontrol划分371
12.2 xcontrol372
12.2.1 设计372
12.2.2 创建373
12.2.3 数据功能控件375
12.2.4 状态功能控件375
12.2.5 外观功能vi376
12.2.6 转换状态以保存功能vi381
12.2.7 初始化功能vi382
12.2.8 反初始化功能vi383
12.2.9 属性383
12.2.10 方法384
12.2.11 事件385
12.2.12 棋盘xcontrol的使用386
12.2.13 实现动画387
12.2.14 得到调用xcontrol实例的vi的信息388
12.2.15 错误处理389
12.2.16 调试389
第13章 面向对象的编程
13.1 基础知识391
13.1.1 程序的模块划分391
13.1.2 类和对象392
13.1.3 面向对象的程序设计392
13.1.4 封装392
13.1.5 继承393
13.1.6 多态393
13.2 labview的类394
13.2.1 创建394
13.2.2 属性394
13.2.3 方法395
13.2.4 继承396
13.2.5 多态398
13.2.6 面向对象与数据流399
13.2.7 面向对象思想对labview程序设计的影响400
13.3 应用实例401
13.3.1 管理一个类的多个对象401
13.3.2 同一段代码处理多种数据类型404
13.3.3 递归406
13.3.4 框架插件程序架构408
13.3.5 简单的数据容器409
后记413
致谢414
参考文献...415