示例下载

示例程序全部被发布在了GitHub上,详见:https://lv.qizhen.xyz/

压缩包中包含有较多的示例VI。下面的链接详细列出了每个示例所对应的图例或章节编号:

第一章
章节或插图编号
子文件夹
示例VI
图 1.9 ~ 1.10
1
第一个程序.vi
图 1.11
简单数学运算程序.vi
图 1.12
互不影响的两份数据.vi
图 1.13 ~ 1.14
数据线分叉.vi
图 1.15
平方根函数.vi
图 1.22 ~ 1.25
改善的第一个程序.vi
图 1.26
单按钮对话框示例.vi
图 1.29
持续运行的加法.vi
图 1.30
第一个项目.lvproj
图 1.34 ~ 1.35
华氏转摄氏.vi
图 1.36
使用子VI.vi
第二章
章节或插图编号
子文件夹
示例VI
图 2.2 ~ 2.3
2.1
数值控件显示格式.vi
图 2.6
表达式节点.vi
图 2.7 ~ 2.9
公式节点.vi
图 2.10
Othello calculate valid position.vi
图 2.11
12.2
Check All Position.vi
图 2.15
2.2
下拉列表与枚举.vi
图 2.18
数组相加.vi
图 2.19
数组簇数组嵌套.vi
图 2.20
数组比较.vi
图 2.21
数组自动索引.vi
图 2.22 ~ 2.23
数组索引.vi
图 2.24 ~ 2.25
创建数组.vi
图 2.26 ~ 2.28
强度图.vi
图 2.30
簇捆绑松绑.vi
图 2.31
字符串不同显示方法.vi
图 2.32 ~ 2.33
正则表达式使用.vi
图 2.34
相对路径.vi
图 2.36 ~ 2.37
2.3
表示法转换.vi
图 2.38
数值与布尔转换.vi
图 2.39
格式化时间.vi
图 2.40 ~ 2.42
变体数据类型转换.vi
章节 2.3.7
平化至字符串.vi
图 2.44 ~ 2.45
平化至XML.vi
图 2.47
强制类型转换DBL to I64.vi
图 2.48
布尔与U8之间转换.vi
图 2.49
字符串与U8数组之间转换.vi
图 2.50 ~ 2.51
时间与数值的转换.vi
图 2.52
2.4
使用子VI参数默认值.vi
图 2.53
使用局部变量改变控制控件的值.vi
图 2.54
两个独立循环.vi
图 2.55
两个有依赖关系的循环.vi
图 2.56 ~ 2.60
控件的属性和方法.vi
图 2.61
2.5
字符串公式求值.vi
图 2.62 ~ 2.63
字符串至布尔数组.vi
图 2.64 ~ 2.65
程序运行时,改变控件标题.vi
图 2.66 ~ 2.67
禁用枚举中的某些项.vi
图 2.68 ~ 2.69
在字符串中显示多种字体.vi

第三章

章节或插图编号
子文件夹
对应示例
图 3.1
3.1
顺序执行.vi
图 3.2
并列执行.vi
图 3.5 ~ 3.7
层叠式顺序结构.vi
图 3.8
平铺式顺序结构.vi
图 3.9
测试应用程序1.vi
图 3.10
测试应用程序2.vi
图 3.11
测试应用程序3.vi
图 3.12
延时子VI.vi
图 3.13
测试应用程序4.vi
图 3.15
3.2
布尔条件结构.vi
图 3.16 ~ 3.17
错误处理条件结构.vi
图 3.18
数值条件结构.vi
图 3.19
数值比较.vi
图 3.20
改进数值比较.vi
图 3.21
多布尔输入条件结构.vi
图 3.22
条件结构隧道.vi
图 3.23
数值比较选择函数.vi
图 3.24 ~ 3.26
3.3
程序框图禁用结构.vi
图 3.27
3.4
条件禁用结构.vi
图 3.28
示例3.4.lvproj
图 3.29
条件禁用结构自定义符号.vi
图 3.30
3.5
循环结构.vi
图 3.31
循环隧道.vi
图 3.32
二维数组处理.vi
图 3.33 ~ 3.34
进度条.vi
图 3.35
相连的隧道.vi
图 3.36
移位寄存器.vi
图 3.37 ~ 3.38
相连的移位寄存器.vi
图 3.39
未初始化移位寄存器.vi
图 3.40
多个左侧移位寄存器.vi
图 3.41 ~ 3.43
反馈节点.vi
图 3.44
条件结束.vi
图 3.48
3.7
窗格.vi
图 3.49
程序停止.vi
图 3.50
电话号码控件.vi
图 3.51 ~ 3.53
加法事件循环.vi
图 3.54 ~ 3.55
事件处理界面.vi
图 3.56 ~ 3.57
事件处理子VI.vi
图 3.58 ~ 3.59
用户自定义事件.vi
图 3.60
3.8
动画界面.vi
(一个真实的动画程序:http://www.vihome.com.cn/bbs/viewthread.php?tid=8818)
章节 2.8.3
定时的精度.vi (定时的精度演示)

第四章

章节或插图编号
子文件夹
对应示例
图 4.1
4.1
极端错误处理.vi
图 4.3
标准错误处理.vi
图 4.4
可预期的错误.vi
图 4.5
自己创建错误信息.vi
图 4.6
自动错误处理.vi
图 4.8
简单错误处理.vi
图 4.9
断言无错误.vi
图 4.10
任一测试出错则停止.vi
图 4.11
异常不影响后续测试.vi
图 4.13
4.2
并行执行相同子VI.vi
图 4.14
总延时时间.vi
图 4.15
运行次数.vi
图 4.16
测试运行次数.vi
图 4.17
4.3
顺序测试.vi
图 4.18
定制测试顺序.vi
图 4.19
使用状态机的测试程序.vi
图 4.21
队列状态机.vi
图 4.23
Light.lvsc
图 4.25
4.4
全局变量.vi
测试全局变量.vi
图 4.26
全局变量竞争状态.vi
图 4.27 ~ 4.28
使用单进程共享变量.vi
图 4.29 ~ 4.30
功能全局变量.vi
图 4.31
基于反馈节点的功能全局变量.vi
图 4.32
使用功能全局变量.vi
图 4.34
4.5
一般界面程序的框图.vi
图 4.35
改进的界面程序.vi
图 4.36
初始化事件.vi
图 4.37 ~ 4.38
改进的界面程序.vi
图 4.39
单事件创建事件.vi
图 4.40
单用户自定义事件界面程序.vi
图 4.41
处理耗时分支.vi
图 4.43
4.6
变体加法.vi
图 4.44
使用变体加法.vi
图 4.45
LabVIEW自带的多态VI.vi
图 4.46 ~ 4.50
add polymorphic.vi
图 4.53
4.7
子VI显示方式.vi
图 4.58
4.8
Initialize Data.vi
图 4.59
Set Name.vi
图 4.60
Demo.vi
图 4.62
自定义引用句柄.ctl
图 4.62
(下载包:)
第五章
章节或插图编号
子文件夹
对应示例
图5.3
5.1
动态加载DLL.vi
图5.4
CLN节点线程.vi
图5.10 ~ 5.11
5.2
浏览网页.vi
图5.12 ~ 5.13
播放mp3.vi
图5.14
播放Flash动画.vi
章节5.2.3
Toolbar\Toolbar Demo.lvproj
图5.22
ActiveX文档.vi
图5.25
文本朗读.vi
图5.27
5.3
浏览网页(.NET).vi
图5.28
5.4
打开记事本.vi

第六章

章节或插图编号
子文件夹
对应示例
图6.4
6.2
动态改变界面.vi
图6.6 ~ 6.8
改变VI标题.vi
图6.9 ~ 6.10
从VI得到控件.vi
图6.11
设置界面修饰物的属性.vi
图6.12
得到通用属性.vi
图6.13 ~ 6.14
修改簇中的元素的属性.vi
图6.19
6.3
四种子VI调用节点.vi
图6.20
使用通过引用节点调用动态调用.vi
图6.21
使用通过运行VI方法动态调用.vi
动态调用/主VI.vi
图6.22
框架插件式程序.vi
图6.23
阶乘循环算法.vi
图6.24 ~ 6.25
递归计算阶乘.vi
图6.26 ~ 6.29
后台任务/后台任务.lvproj
图6.30
启动画面/Splash Screen.vi
图6.40
6.4
给所有的VI设置密码.vi
图6.41
6.5
远端VI.vi
图6.42
控制远端VI.vi
第七章
章节或插图编号
子文件夹
对应示例
图7.2
7.1
OneStep.vi
图7.3
SimpleModel.vi
图7.4
PipelineModel.vi
图7.5
QueueModel.vi
图7.10 ~ 7.11
7.2
声音采集.vi
图7.17
7.3
声音采集.vi
图7.18 ~ 7.19
7.4
时间坐标.vi
图7.20 ~ 7.21
波形属性.vi
图7.22
同一坐标轴.vi
图7.23
不同坐标轴.vi
图7.24 ~ 7.25
中断的曲线.vi
章节7.4.6
声卡示波器.vi
声卡信号发生器.vi
声卡信号发生器.vi
章节7.4.7
时频联合分析.vi
高级时频联合分析.vi
声卡时频联合分析.vi
第八章
章节或插图编号
子文件夹
对应示例
图8.1 ~ 8.2
8.1
Break VI.vi
图8.3
Set Caption.vi
图8.8
8.2
其它控件探针.vi
图8.9
条件探针.vi
图8.10
条件探针,队列.vi
图8.11 ~ 8.14
DBL Queue.vi
图8.15
8.3
Demo.vi
图8.16
目标程序.vi
图8.17
数据记录.vi
图8.18
8.4
Error 1. a X b.vi
图8.19
Error 2. for loop.vi
章节8.4.3
Error 3. Wile Loop.vi
图8.21
Error 4. Shift Register.vi
图8.22 ~ 8.24
Error 5. Cluster.vi
图8.25 ~ 8.26
Error 6. Sequence.vi
图8.27 ~ 8.28
运行5秒后,循环停止.vi
图8.29
信号量.vi
图8.33
8.6
低效率存文件.vi
图8.34
改进存文件.vi
图8.35
高效率存文件.vi
章节8.6.2
低效率显示波形.vi
高效率显示波形.vi
图8.36
低效率创建树.vi
图8.37
高效率创建树.vi
图8.38
设置曲线名称颜色.vi
图8.39
低效率循环运算.vi
图8.40
高效率循环运算.vi
第九章
章节或插图编号
子文件夹
对应示例
章节9.1.2
9.1
演示项目.lvproj
章节9.1.4
项目A/项目A.lvproj
章节9.3
9.3
发布项目.lvproj
图9.17 ~ 9.21
主界面.vi

第十章

章节或插图编号
子文件夹
对应示例
章节10.1
10.1
通道控件.vi
透明控件.vi
章节10.2.1.1
10.2
按钮界面1.vi
按钮界面2.vi
按钮界面3.vi
章节10.2.2
退出时询问.vi
章节10.2.3
章节10.2.4
演示菜单.vi
章节10.2.5
界面控件与键盘关联.vi
章节10.2.6
使用简单自定义控件的VI.vi
自定义简单控件.ctl
使用圆形自定义控件的VI.vi
自定义圆形控件.ctl
章节10.3.1
章节10.3.2
章节10.3.3
10.3/ Chess Interface
Step 1.vi ~ Step 8.vi
图10.47
Get All Chess.vi
图10.50
irregular shape background.vi
图10.52
chess without border.ctl
图10.53
chess with shade.ctl
图10.54 ~ 10.55
Initialize.vi
图10.56 ~ 10.57
Pict Ring Chess.ctl
图10.58 ~ 10.59
Step 9.vi
章节10.3.6
pic 1.vi
章节10.3.7.1
10.3
半透明界面.vi
章节10.3.7.2
不规则窗口.vi
章节10.3.8
动画窗口.vi
第十一章
章节或插图编号
子文件夹
对应示例
章节11.1.1
11.1
最大公约数.vi
图11.3
杂乱的条件结构.vi
图11.4
整洁的条件结构.vi
图11.7
11.2
内存泄漏.vi
图11.15
使用移位寄存器优化内存使用.vi
图11.16
使用元素同址操作结构.vi
图11.17
Array.vi
图11.23
输入参数接线端.vi
图11.24
输出参数接线端.vi
图11.25
使用搜索(源数据仅传入).vi
搜索(源数据仅传入).vi
图11.26
使用搜索(源数据传入传出).vi
搜索(源数据传入传出).vi
图11.27
11.3
单循环.vi
图11.28
双循环.vi
图11.32
时间顺序结构.vi
章节11.3.7
Thread Swiching.vi
图11.46
11.4
Calling My Function.vi
图11.47 ~ 11.48
My Function.vi
章节11.4.6.2
美化簇常量
第十二章
章节或插图编号
子文件夹
对应示例
章节12.1.3
12.1
主界面.vi
子界面.vi
章节12.2.1
12.2
空白XControl
章节12.2.2 ~章节12.2.12
Othello XControl
章节12.2.13
Twinkle Button
High Light Button
章节12.2.14
Naughty Button
第十三章
章节或插图编号
子文件夹
对应示例
章节13.2
13.2
LvOOP Demo.lvproj
章节13.3.1
13.4
Data File
章节13.3.2
不同数据类型
章节13.3.3
递归算法
章节13.3.4
框架插件结构
章节13.3.5
数据容器

返回《我和LabVIEW》主页

广告

搜索书中的内容

很多专业书籍的附录都带有词条索引,方便读者根据关键词查找书中内容。本书虽然未带词目表,但是我自己编了个程序,可以更加细致和精确的搜索书中内容。如果你打算查看一下本书是否有你感兴趣的话题,或者查找某一专题内容所在的章节,可以使用本工具。

使用方法:首先下载本文结尾列出的“《我和LabVIEW》内容搜索”软件包,解压缩。它包含有一个“搜索.vi”文件,打开这个VI,运行。在VI上方的文本框中输入想要查找的关键字,然后点击搜索按钮。它就会在列表框中列出与这个关键词相关的所有章节的序号好名称,并且按照相关度一次排列好。
需要注意,关键词不要太长;可以把关键词放在半角的引号内以提高搜索结果的准确率;可以使用大写的AND、OR表示关键词之间逻辑关系。

这个VI是使用LabVIEW 8.6编写的,如果你的LabVIEW版本过低,打不开这个程序,可以直接运行软件包中的“SearchBook.exe”文件。按照提示,输入关键词,它就给出相关章节。

选择一个“《我和LabVIEW》内容搜索”软件包下载地址:VIHome论坛NI Developer Zone

返回《我和LabVIEW》主页

《我和LabVIEW》全书目录

I    前言
I.I    我和LabVIEW
I.II    本书的内容和特点
I.II.I    本书特点
I.II.II    内容选取
I.II.III    LabVIEW版本
I.II.IV    插图和示例
I.II.V    更正和注解
II 序
0    什么是LabVIEW
0.1    LabVIEW与文本编程语言的区别
0.2    G语言
0.3    LabVIEW的应用领域
0.4    LabVIEW的发展历史
1    LabVIEW入门
1.1    “Hello,World!”程序
1.1.1    启动界面
1.1.2    创建一个新的VI
1.1.3    让VI显示“您吃了吗?”
1.1.4    LabVIEW程序的运行逻辑
1.2    如何学习LabVIEW
1.2.1    学习LabVIEW的三种方式
1.2.2    自学LabVIEW
1.2.3    LabVIEW的帮助文档
1.2.4    LabVIEW的范例
1.2.5    寻求他人帮助
1.3    编写更复杂的程序
1.3.1    美化VI
1.3.1.1    添加图标
1.3.1.2    设置字体
1.3.1.3    设置标题
1.3.2    让VI持续运行
1.3.3    项目
1.3.4    使用子VI
1.3.5    创建子VI
1.3.6    从程序框图创建子VI
1.4    按自己的喜好设置编程环境
1.4.1    LabVIEW的设置选项
1.4.2    函数和控件选板的设置
1.4.3    工具选板
2    数据
2.1    数值
2.1.1    数值控件及其显示格式
2.1.2    常量
2.1.3    表示法
2.1.4    数值运算的常用函数
2.1.5    表达式节点
2.1.6    公式Express VI
2.1.7    公式节点
2.1.8    MathScript脚本节点
2.1.9    数值的单位
2.2    其它数据类型
2.2.1    枚举
2.2.1.1    枚举型控件与下拉列表控件的比较
2.2.1.2    单选按钮控件
2.2.2    布尔
2.2.3    数组
2.2.3.1    数组数据
2.2.3.2    数组数据的运算
2.2.3.3    数组数据的比较
2.2.3.4    数组索引
2.2.3.5    数组合并
2.2.3.6    其它类型的数组控件
2.2.4    簇
2.2.5    字符串
2.2.5.1    字符串与显示方式
2.2.5.2    正则表达式
2.2.6    路径
2.2.6.1    路径数据
2.2.6.2    相对路径
2.2.6.3    路径常量
2.3    数据类型间的转换
2.3.1    数值表示法之间的转换
2.3.2    数值与字符串之间的转换
2.3.3    数值与布尔类型之间的转换
2.3.4    路径与其它数据类型的转换
2.3.5    与时间相关的转换
2.3.6    变体
2.3.6.1    变体数据类型
2.3.6.2    类型转换
2.3.6.3    变体的应用
2.3.7    数据平化至字符串
2.3.8    数据平化至XML
2.3.9    强制转换
2.3.9.1    强制转换的含义
2.3.9.2    强制转换的用途
2.3.9.3    布尔与U8之间的转换
2.3.9.4    字符串与U8数组之间的转换
2.3.9.5    时间与数值间的转换
2.3.9.6    引用句柄数据类型
2.4    控件和数据在程序中的使用
2.4.1    控件与变量的关系
2.4.2    控件的标签和标题
2.4.3    控件的默认值
2.4.4    局部变量
2.4.4.1    创建局部变量
2.4.4.2    把数据写入控制控件,或从显示控件读取数据
2.4.4.3    应用于多线程间的共享数据
2.4.5    属性节点
2.4.6    调用节点
2.5    应用实例
2.5.1    字符串公式求值
2.5.2    字符串转换为布尔数组
2.5.3    程序运行中改变控件标题
2.5.4    禁止枚举控件中的某些项
2.5.5    在字符串中显示多种字体
3    基本程序结构
3.1    顺序结构
3.1.1    程序执行顺序
3.1.2    创建顺序结构
3.1.3    层叠式顺序结构
3.1.4    平铺式顺序结构
3.1.5    无形胜有形的最高境界
3.2    条件结构
3.2.1    布尔类型条件选择结构
3.2.2    其它数据类型的条件选择
3.2.3    合理设置选择条件
3.2.4    隧道
3.2.5    选择函数
3.3    程序框图禁用结构
3.4    条件禁用结构
3.5    for循环结构
3.5.1    for循环
3.5.2    隧道
3.5.3    移位寄存器
3.5.4    反馈节点
3.5.5    结束条件
3.6    while循环结构
3.7    事件结构
3.7.1    事件结构
3.7.2    按照产生源来区分事件的种类
3.7.2.1    <应用程序>
3.7.2.2    <本VI>
3.7.2.3    动态
3.7.2.4    窗格
3.7.2.5    分隔栏
3.7.2.6    控件
3.7.3    编辑事件
3.7.4    按照发出时间区分事件的种类
3.7.5    事件结构的使用
3.7.6    动态事件
3.7.7    用户自定义的事件
3.8    定时结构
3.8.1    定时函数和VI
3.8.2    使用事件结构
3.8.3    定时循环
4    常用程序结构模式
4.1    错误处理机制
4.1.1    不可预期的错误
4.1.2    可预期的错误
4.1.3    自定义错误
4.1.4    显示错误信息
4.1.5    调试时显示错误信息
4.1.6    错误合并
4.2    可重入VI
4.2.1    同一VI的并行运行
4.2.2    可重入VI的副本
4.3    状态机
4.3.1    循环条件结构
4.3.2    单状态传递的状态机
4.3.3    多状态传递的状态机
4.3.4    状态机的使用
4.3.5    状态图工具包
4.4    全局变量
4.4.1    全局变量
4.4.2    共享变量
4.4.3    功能全局变量
4.4.4    基于功能全局变量的程序功能模块
4.5    界面程序
4.5.1    界面程序的程序框图设计
4.5.2    通用用户自定义事件的设计
4.5.3    对耗时代码的处理
4.5.4    其他注意事项
4.6    多态VI
4.6.1    使用变体作为子VI的参数类型
4.6.2    多态VI的概念
4.6.3    编写多态VI
4.6.4    多态VI的注意事项
4.6.5    菜单设计的小技巧
4.7    Express VI
4.7.1    什么是Express VI
4.7.2    子VI在程序框图上的显示方式
4.8    传引用
4.8.1    LabVIEW自带的传引用数据类型
4.8.2    全局变量
4.8.3    队列
4.8.4    数据记录文件引用句柄
4.8.5    借助C语言
5    调用外部程序
5.1    动态链接库
5.1.1    背景知识
5.1.2    CLN和CIN节点
5.1.3    DLL的加载方式
5.1.4    函数的配置
5.1.5    简单数据类型参数的参数设置
5.1.5.1    数值类型
5.1.5.2    布尔类型
5.1.5.3    数值型数组
5.1.5.4    字符串类型
5.1.6    结构型参数的设置
5.1.7    返回值的设置
5.1.8    对C语言中指针的处理
5.1.9    LabVIEW提供的C接口函数
5.1.10    导入共享库工具
5.2    ActiveX
5.2.1    ActiveX控件
5.2.2    使用ActiveX控件
5.2.2.1    浏览网页
5.2.2.2    播放mp3音乐
5.2.2.3    播放Flash动画
5.2.3    ActiveX控件的事件
5.2.4    ActiveX文档
5.2.5    ActiveX自动化
5.3    .NET
5.4    EXE
6    VI服务器
6.1    概念
6.1.1    VI服务器
6.1.2    VI Scripting
6.2    运行中改变界面
6.2.1    属性节点
6.2.2    VI的属性
6.2.3    得到对象的引用
6.2.4    对象类的层次结构
6.2.5    类浏览器
6.3    装载和运行子VI
6.3.1    静态与动态装载子VI
6.3.2    动态调用VI
6.3.3    插件结构
6.3.4    递归调用
6.3.4.1    为什么VI不能够被静态地递归调用
6.3.4.2    用动态调用方法实现递归
6.3.4.3    使用递归时的几点注意
6.3.5    后台任务
6.3.6    启动画面
6.4    动态创建和修改VI
6.4.1    VI Scripting授权
6.4.2    创建VI
6.4.3    创建新的控件
6.4.4    创建程序框图
6.4.5    批量修改VI
6.5    网络服务
6.6    ActiveX接口
7    测试测量应用程序设计
7.1    “采集、处理、显示”型程序的结构模型
7.1.1    程序结构的划分
7.1.2    普通循环模型
7.1.3    管道流水线模型
7.1.4    生产者消费者模型
7.2    Express VI
7.2.1    测试程序相关的Express VI
7.2.2    应用
7.3    数据采集
7.3.1    使用驱动程序
7.3.2    使用硬件设备的C语言驱动程序
7.3.3    编写驱动程序
7.3.4    可互换虚拟仪器驱动程序
7.3.5    数据采样时钟的设置
7.4    显示
7.4.1    波形图表和波形图控件
7.4.2    波形数据类型
7.4.3    多曲线显示
7.4.4    中断的曲线
7.4.5    大量数据的显示
7.4.6    高速数据的显示
7.4.7    强度图
7.5    存储
7.5.1    文本文件和二进制数据文件
7.5.2    文本文件
7.5.3    二进制数据文件
7.5.4    数据库
7.5.5    生成报表
8    调试
8.1    集成调试环境
8.1.1    列出编译错误
8.1.2    运行时的调试工具
8.1.3    全局选项
8.1.4    VI的属性
8.2    断点和探针
8.2.1    断点
8.2.2    探针
8.2.3    选取其它控件作为探针
8.2.4    条件探针
8.2.5    用户自定义探针
8.3    其它查找程序错误的工具和方法
8.3.1    程序框图禁用结构
8.3.2    使用消息对话框和文件
8.4    LabVIEW代码中常见的错误
8.4.1    数值溢出
8.4.2    For循环的隧道
8.4.3    循环次数
8.4.4    移位寄存器的初始化
8.4.5    簇中元素的顺序
8.4.6    时序错误
8.4.7    竞争状态
8.4.8    等待循环中的延时
8.5    提高程序运行效率
8.5.1    找到影响程序运行速度的瓶颈
8.5.2    查看一段代码的运行时间
8.6    解决程序效率低下的瓶颈
8.6.1    读写外设、文件
8.6.2    界面刷新
8.6.3    循环内的运算
8.6.4    调试信息
8.6.5    多线程和内存的使用
8.6.6    利用等待用户反馈的时间
8.7    DLL调试
8.7.1    调试LabVIEW调用的DLL
8.7.2    调试LabVIEW生成的DLL
9    管理LabVIEW项目
9.1    项目浏览器
9.1.1    项目浏览器的功能
9.1.2    项目中的层次结构
9.1.3    文件结构
9.1.4    按照文件的物理结构来查看项目
9.1.5    源代码管理
9.1.6    比较和合并VI
9.1.7    运行环境
9.2    库
9.2.1    创建库
9.2.2    VI的名字空间
9.2.3    为库中VI设置权限
9.2.4    LLB文件
9.3    发布产品
9.3.1    应用程序
9.3.1.1    应用程序生成规范
9.3.1.2    文件路径的变化
9.3.1.3    其它设置
9.3.2    共享库
9.3.3    源代码
9.3.3.1    发布源代码
9.3.3.2    编辑控件选板和函数选板
9.3.4    网络应用
9.3.4.1    远程前面板
9.3.4.2    web发布
9.3.4.3    web服务
9.3.5    安装程序
9.3.6    压缩包
10    界面设计
10.1    界面设计原理
10.1.1    一致性
10.1.1.1    程序内部的一致性
10.1.1.2    与约定俗成的习惯保持一致
10.1.1.3    与真实事物保持一致
10.1.1.4    建立并遵循界面规范
10.1.2    界面元素的关联
10.1.3    帮助和反馈信息
10.1.4    限制
10.1.4.1    限制输入数据
10.1.4.2    防止误操作
10.1.5    突出重点
10.2    界面设计中常用的规范和实现方法
10.2.1    控件尺寸
10.2.1.1    手动调整控件尺寸和位置
10.2.1.2    自动调整控件尺寸
10.2.2    应用程序的退出按钮
10.2.3    菜单
10.2.4    控件快捷菜单
10.2.5    使用键盘操作界面
10.2.6    用户自定义控件
10.2.6.1    创建一个自定义控件
10.2.6.2    自定义控件的组成部分
10.2.6.3    修改控件组成部分
10.3    界面设计实例
10.3.1    利用LabVIEW自带控件
10.3.2    实现运行时改变界面的代码
10.3.3    装饰和背景图片
10.3.4    用户自定义控件
10.3.5    改进界面的实现方法
10.3.6    使用绘图控件
10.3.7    界面的特殊效果
10.3.7.1    半透明效果
10.3.7.2    不规则形状
10.3.8    动画
11    代码风格与优化
11.1    LabVIEW的运行机制
11.1.1    LabVIEW的编程思想
11.1.2    LabVIEW与文本语言的差异
11.1.3    LabVIEW是编译型语言还是解释型语言
11.1.4    数据流驱动的编程语言
11.1.5    传值和传引用
11.1.6    VI中的数据空间
11.2    内存优化
11.2.1    VI在内存中的结构
11.2.2    内存泄漏
11.2.3    缓存重用
11.2.3.1    一般的运算节点
11.2.3.2    移位寄存器
11.2.3.3    调用库函数节点
11.2.4    子VI参数的缓存重用
11.2.5    输入输出参数的排布
11.2.6    良好的数据流结构可以优化程序内存效率
11.3    多线程编程
11.3.1    LabVIEW是自动多线程语言
11.3.2    LabVIEW的执行系统
11.3.3    执行系统与线程的关系
11.3.4    用户界面执行系统
11.3.5    其它几个执行系统
11.3.6    VI的优先级
11.3.7    动态连接库函数的线程
11.3.8    LabVIEW对多核CPU的支持
11.4    代码编写规范和技巧
11.4.1    简洁的程序框图
11.4.2    布局和连线
11.4.3    注释
11.4.4    使用自定义数据类型
11.4.5    连线板
11.4.6    图标
11.4.6.1    制作不规则图形的子VI图标
11.4.6.2    隐藏程序框图上的大个簇常量
11.4.7    VI分析器
12    界面的模块划分和XControl
12.1    复杂界面的模块划分
12.1.1    界面的模块划分
12.1.2    选项卡控件
12.1.3    子面板
12.1.4    XControl
12.2    XControl
12.2.1    设计
12.2.2    创建
12.2.3    “数据”功能控件
12.2.4    “状态”功能控件
12.2.5    “外观”功能VI
12.2.5.1    界面
12.2.5.2    工作原理
12.2.5.3    参数
12.2.5.4    数据更改事件
12.2.5.5    显示状态更改事件
12.2.5.6    方向更改事件和执行状态更改事件
12.2.5.7    界面事件
12.2.6    “转换状态以保存”功能VI
12.2.7    “初始化”功能VI
12.2.8    “反初始化”功能VI
12.2.9    属性
12.2.10    方法
12.2.11    事件
12.2.12    棋盘XControl的使用
12.2.13    实现动画
12.2.14    得到调用XControl实例的VI的信息
12.2.15    错误处理
12.2.16    调试
13    面向对象编程
13.1    基础知识
13.1.1    程序的模块划分
13.1.2    类和对象
13.1.3    面向对象的程序设计
13.1.4    封装
13.1.5    继承
13.1.6    多态
13.2    LabVIEW的类
13.2.1    创建
13.2.2    属性
13.2.3    方法
13.2.4    继承
13.2.5    多态
13.2.6    面向对象与数据流
13.2.7    面向对象思想对LabVIEW程序设计的影响
13.3    应用实例
13.3.1    管理一个类的多个对象
13.3.2    同一段代码处理多种数据类型
13.3.3    递归
13.3.4    框架插件程序架构
13.3.5    简单的数据容器
A 后记
B 致谢
C 参考书目 

返回《我和LabVIEW》主页

弯曲的数据连线

本文内容出自LVAV论坛的一片帖子:http://lavag.org/topic/10670-wired-wires/page__p__63544&#entry63544

借助VI Scripting,可以做出很多炫目的效果。比如说各种形状的数据连线。LabVIEW程序框图上的数据连线都是水平或垂直的,但它们可以转弯,在需要的地方转90度角。你可以手工的在一条数据线上添加几个拐点,让它从一个接线端出来,转几道弯再接到另一个接线端上去。如果你有耐心的话,可以在连个接线端之间设置几十个拐点,并且把这些拐点排列正一定的曲线形状,如果螺旋线、正选曲线的模样。如果拐点足够多,连线看上去就是一条曲线了。
很少有人会有这样的耐心吧,但是有了VI Scripting,写一个简单程序,一按按钮,啪一下,它就帮你把所有拐点设置好,把连线变成各种漂亮弧线了。如下图所示:

点击这里下载示例VI