《我和LabVIEW》中清晰版的插图

有读者反映书中部分插图很不清晰,这是从word文档到出版社专用的排版软件文档转换时产生的损失(参考《重新截取书中插图》)。我后来把书中所有的插图又重新保存成了单个图片文件,重新交给出版社。现在书中大部分插图使用的都是我后来截取的图片,有些图片虽然没有更新,却也足够清晰。但是书中还有一些插图不知是何原因,使用的仍是从word转换过来的不清晰的图片(主要集中在第11、12章里)。
我在这里会列出所有那些不够清晰的图片,并把清晰版的图片上传至博客的相册里。大家在下面的列表中直接点击图片编号,就可以查看到清晰图片。对于大尺寸的图片,在 Windows Live 相册中查看时,它会自动收缩尺寸以显示全图。这样的图片看上去可能还是不够清晰,只要再点击这些图片按照原尺寸查看,或将其下载到本机再查看就可以了。

页码    插图编号(点击查看清晰插图)
240      8.30
276      10.1
336      11.19
338      11.22
340      11.25
340      11.26
342      11.27 
342      11.28
349      11.33
357      11.46
358      11.47
359      11.49
360      11.50
360      11.51
360      11.52
361      11.53
370      12.11 (这一张图原图也稍微有一点不清晰,非常抱歉,实在找不到完全清晰的版本了)
385      12.31
386      12.32

返回《我和LabVIEW》主页

Advertisements

在上海书城看到我的书了

今天休假,又没什么事情,于是跑到上海书城去看书。书城把LabVIEW和其它编程语言归在一个区内,LabVIEW在编程区最后面一个柜台跟程序设计理论相关的书挤在一起。

书城里有关LabVIEW的书还挺多的,不下十几种。《我和LabVIEW》摆在一堆LabVIEW书籍当中。数量不是很多,我去看的时候只有7本,没有旁边几种LabVIEW教程的数量多。

我正好也想看看别的书,在旁边柜台站了好一阵。期间恰好看到一位读者路过这里,拿起我的书翻了几页,然后夹在胳肢窝里走了。我在旁边偷摸得意了一下

《我和LabVIEW》的写作过程

《我和LabVIEW》书评及反馈意见

如果大家对本书有任何意见和建议可以直接在这里或下列链接中的任意一个回帖,我会一一解答。由于不是每天都有时间更新博客,所以提出的问题可能会延迟一两天才回答,希望大家谅解。下面的列表是我收集的其它网站上有关本书的评论:

《我和LabVIEW》主页

原稿中的前言

交稿之后,出版社的编辑又帮我检查修改了数遍,改正了不少原稿中的错误,语言风格也比原来严谨些。比如前言部分,原稿中我是使用第一人称来记录自己的一些经历和感想的,在正式出版的书中则改为了第三人称。我觉得这也不是很重要的部分,不过前几天有人问起,所以我就把我的原稿也贴上来吧:

0.1 我和LabVIEW

一转眼工作已经十年了。自从成为NI公司的一名软件工程师,LabVIEW就一直是我日常工作中最主要的编程语言。所以当我考虑以哪种方式来纪念我参加工作十周年时,把我积累的LabVIEW编程经验总结成书,应当是最有意义的一种方式了。

还是在大学的时候,有一次老师要求编写一个程序,用来模拟一个控制系统:给它一个激励信号,然后显示出它的输出信号。那时,我的脑海里就闪烁过这样的想法——是否可以把每一个简单的传递函数都做成一个个小方块模样,编程时可以根据需要选择相应的函数模块,用线把它们连起来,这样就可以方便地搭建出各种复杂系统。

后来,当我第一次看到别人给我演示的LabVIEW编程时,发现它就是把一些小方块用线连起来,完成了一段程序。这和我曾经有过的那种想法多么相似啊!一种亲切感油然而生。从此,我对LabVIEW的喜爱就一直胜过其它的编程语言。

这些年里,我对LabVIEW编程的认识经历了不少转变。刚开始接触LabVIEW的时候,第一印象就是觉得用这东西编程序比C语言简单多了,尤其在设计界面的时候。LabVIEW是一种真正意义上的图形化编程语言。与C、Basic等文本编程语言相比,它在编程过程中有更详细的提示信息,如函数的功能、参数类型等等,程序员再不需要去记忆那些枯燥的函数信息了。而且,一段编写风格良好的图形程序代码,要比文本代码更加清晰直观,便于阅读。

刚开始用LabVIEW编程时,我连一本相关的书籍都没读过,可以说完全是靠自己摸索。当时,市面上几乎没有有关LabVIEW的中文书籍,而阅读英文资料又感觉太慢太累。但是,靠自己摸索的方法也有好处,最明显的就是有成就感。自己琢磨着解决了一个问题,要比模仿别人的方法更令人兴奋。再者,他人的方案并不一定是最佳的,自己独自思索就不至于被他人的方案局限住思路。

当然,我不可能满足于只用LabVIEW编写一些简单程序,当然还希望能够用它来编写大型的软件,并且提高自己的开发效率。这时,自己对编程的要求有了一个质的提高,不阅读相关的书籍资料就不行了。有些问题,不读书,自己可能永远都得不到最佳的答案。同样,有些LabVIEW的功能,如果不阅读原始资料,自己也许永远都掌握不了。于是,我把能得到的LabVIEW的中高级教程都阅读了一遍。因为已经有了一定的基础,我就可以在读书的过程中反思自己以前的编程方法是否合理、高效。在我参考过的所有资料中,最好的教程还是NI自己编写的LabVIEW中高级教程。但书本中一般原理讲得多,具体的编程技巧涉及得少,所以还必须大量阅读他人的代码,才能学习到更多更好的编程方法。

作为一名忠实的LabVIEW语言使用者,我衷心地期望着LabVIEW也可以成为一种被广泛使用的通用编程语言,能够在更多的领域中与C、Java等语言一争高下。LabVIEW虽然有它独特的优势,但不足之处也很明显,我在编程过程中就曾感觉到它的很多不便之处。这也就成了我进一步的追求目标:尽自己所能,对LabVIEW作一些改进和完善,使它更加强大和易用;同时,为LabVIEW在中国的普及和推广尽自己的一点绵薄之力。

0.2 本书的内容和特点

本人是美国国家仪器有限公司(全名:National Instruments Co. Ld. 简称:NI)的研发工程师,但是本书的写作完全属于个人行为,书中的某些见解可能与NI的官方意见并不完全一致,仅供读者参考。

0.2.1 本书特点

近几年,随着LabVIEW在中国的普及,市面上与之相关的书籍也越来越多。不过它们多以介绍LabVIEW的函数、VI的功能为主。比如,列举一个VI的功能为何,它的参数有哪些,表示什么含义等。而本书则更加侧重于介绍如何解决问题,比如针对一个具体的编程问题,本书会介绍LabVIEW中有哪些可以实现的方法,各自优缺点是什么。

本书的内容都是我在学习和使用LabVIEW过程中积累的经验。受写作时间和个人能力的限制,本书并没有覆盖LabVIEW所有细节内容和功能,也没有详细解释书中所使用到的LabVIEW自带VI或函数的参数设置及用法。不过这些内容在LabVIEW的帮助文档中均有详细介绍,所以在阅读本书时,若对某些具体的函数有疑问,可以打开LabVIEW,查阅相关的帮助文档。

0.2.2 内容选取

在写作本书前,我陆续在博客上发表了多篇关于LabVIEW编程的文章。本书大约有三分之一的内容直接选取了博客上的内容。在把它们编辑成书的过程中,我又对它们进行了重新编辑和扩充。博客文章在介绍某些知识点时,面向的是是有经验的LabVIEW程序员,所以讲解并不详细。在本书的写作过程中,考虑到LabVIEW初学者也可能参考本书,所以对知识点的介绍更加细致。书中其余三分之二的内容则是完全新写的。

在具体选择书中内容时,主要偏重如下几部分:

LabVIEW中最常用的功能。本书所介绍的内容都是LabVIEW编程者最经常使用到的功能。随着LabVIEW版本的更新,其功能也越来越多,有一些功能是极少被使用到的。这些偏僻的功能对于大多数读者帮助不大,所以本书也未做讲解。况且,目前市场上已经有过多本比较详细介绍LabVIEW控件、函数使用的中文书籍,本书就没有一一详细介绍这方面的内容。

LabVIEW学习过程中的常见问题及易犯的错误。我曾经作为LabVIEW高级课程的讲师,给客户讲授过LabVIEW的课程,也经常在博客、论坛或通过Email解答过LabVIEW使用者们的一些疑问,在公司内部,也经常检查和指导新员工改进他们编写的LabVIEW程序。在这一过程中,我发现有些问题在LabVIEW初学者中出现的频率相当高。指正这些通病可能会使更多读者收益,所以本书有相当部分篇幅用来讲解这方面的内容。

我个人所擅长的领域。为了保证本书的质量,本书所介绍的内容都属于我比较了解的范畴。而我平时接触不多、没有太多实际经验的部分,则不是本书涉及的范围。

尽量不重复LabVIEW帮助文档中的内容。LabVIEW的帮助文档应当是最全面、最权威的LabVIEW工具书,它记载了LabVIEW中每一个函数、VI的使用方法,每一个对话框上的内容……对于这些可以在LabVIEW帮助文档中直接查阅到的内容,本书就不再重复描述了。那些LabVIEW帮助文档中没有涉及到的内容,如LabVIEW程序设计的原理、原则,如何选取最适合当前情景的编程方法,编程时的注意事项,LabVIEW的学习方法等等,才是本书着重介绍的内容。

列举实际案例。在介绍LabVIEW的功能和用法时,书中会配合编程实例进行讲解。

0.2.3 LabVIEW版本

书中介绍的LabVIEW功能和编程方法,是以LabVIEW 8.6专业版为范本的。这是在本书写作时LabVIEW的最新版本,也将是今后一段时间内,使用最为广泛的LabVIEW版本。本书侧重介绍的是那些最为常用的功能,所以书中绝大部分内容同样适用于更早版本的LabVIEW。

当本书出版时,也许更新版的LabVIEW已经面世了。但是,LabVIEW的编程思想不会有任何改变,并且新版本的普及也需要较长一段时间。所以即便读者使用的是新版本的LabVIEW,同样可以使用本书作为学习LabVIEW的参考书。

如果新版本的LabVIEW有较大改进,导致本书介绍的内容不再适用时,我将会在个人博客(ruanqizhen.spaces.live.com)中,及时更新,进行详细的解说。

0.2.4 插图和示例

为本书编写的示例和以及在书中截取的大部分插图是在LabVIEW 8.6中文版下编写和截取的。但受条件限制,有小部分示例和插图是在旧版本的LabVIEW,或英文版的LabVIEW中制作的。书中部分插图在Windows XP系统下截取,部分在Windows Vista系统下截取。因此,书中不同截图窗口风格可能略有不同。

受篇幅的限制,本书一般只收录一些关键设置和程序关键部分的截图。没有收录的程序框图,读者在学习本书时可以自己尝试编写,也可以直接下载本书的示例辅助学习。本书所用到的全部示例,包含插图中出现的VI,都可以从网上下载到,具体下载地址可参考我博客中的链接。

0.2.5 更正和注解

受本人水平所限,在编写此书的过程中难免会有疏忽和差错。在此,诚挚希望各位读者及时批评指正书中纰漏,也欢迎读者就书中内容进行讨论。对本书的任何意见和建议都可以直接发表在我的博客中(ruanqizhen.spaces.live.com)。

本书出版之后,我会继续对其进行维护,包括修订错误、补充相关内容、回答读者疑问等。所有相关的更新也都会及时发布在我的博客中。

返回《我和LabVIEW》文章摘录

想的越多越痛苦

最近这两天都有点失眠。昨晚我以为已经很累了,应当可以睡的比较长,结果今天早上3点钟的时候还是突然醒过来。天气变化的时候比较容易失眠而且这两天乱七八糟的事情想太多了。

说道思考,我始终相信是想的越少的人越有幸福感;而想得越多的人就越痛苦。我能想到有两点原因吧:

首先,被欺骗是幸福的;而发现被欺骗是痛苦的。有人跟你说:你现在生活进步很快,越来越富裕了。如果你就这样轻信了,可以会觉得很幸福。反之,你偏偏不信,还要自己思考:我的生活真的改善很快吗,为啥邻居小日本60年前比我还破烂,而现在收入已经是我十几倍了?那就只有越想越痛苦了。

其次,我们很容易给自己的行为或想法找出一个短期的意义的,但很难找出一个长期意义。
比如买一个漂亮的新手机,若只考虑眼前,它会给我带来快乐,非常有意义;但从长远来看,换个新手机对我的人生发展其实一点帮助也没有,真的没什么意义。
买一栋大房子,从短期来看,可以让后半生都住的舒舒服服,非常有意义;但从长远来看,人住什么房子,死后都一样被埋掉(烧掉),死后能有什么区别呢,真是没啥意义。
写一本技术书籍,从短期来看,可以帮助很多人改善工作效率,非常有意义;可是从长远来看,人类早晚有一天灭亡,多本书少本书又怎么样呢?就好像当年某个恐龙发现肉比草好吃,从而改变了整个族群的饮食习惯,恐龙们觉得很有意义。不过今天,恐龙都已经死绝了,从我们的角度看过去,它们是吃肉的还是吃草的,其实完全无所谓。

哲学家大多极度悲观,有的还疯了。恐怕就是因为想的太长远,非要寻求什么人生的终极意义。所以,我平时总还是刻意不去考虑太遥远的事情,也不去寻求过多的意义。无论做什么事,如果能对我有近期的帮助也就可以了,免得越想越没劲。

如何购买《我和LabVIEW》

签名

最近一想起签名就头疼,因为我写字实在太难看了。一般人就算写字难看,自己的名字总还是写得不错的,毕竟这几个字练得最多。可是我却连名字也写不好看。其实我上学的时候也曾经正儿八经练过毛笔和钢笔书法的,可就是没什么长进。毕业之后,几乎都用不到写字了,就更不可能有进步了。

因为不是领导,我一般也就在刷信用卡时用得着签名,所以我以前还从未担心过签名难看的问题。不过上个周末,出版社给我寄来一摞书的扉页要我在上面签名,我才真切的意识到写字难看的严重性。看样子将来有人会得到有我亲笔签名的书,希望他们打开书的时候不要笑话我,我其实还是认认真真签了名的。

下面这幅图中手写的几个字就是我的亲笔签名。由于我的手比一般人抖得厉害,所以写出来的字稳定性比较差,每个签名都有所不同,各有各的丑法,不过神韵都是一致的:)。

《我和LabVIEW》的写作过程

下一个期待突破的产业

这几天我躺在床上的时候就在想,啥行业最有潜力呢,下一个吸引最多目光和投资的领域是啥呢?

追求自由是人类的天性,这有两层含义,一是指个人的自由,二是指整个人类的自由。(此处删去xx字)整个人类的自由的提高是靠生产力的发展来获得的,以出行的自由为例:人类早期只能在家附近几公里以内活动;能够驾驭大型运输工具比如船舶之后,就可以迁移新的大陆上去;而现在人类的脚步已经踩在了月球上;将来,生产力进一步提高,人类肯定还会探访更遥远的星球。

生产力的提高有两个途径:一是控制新能源;二是靠分工合作,减少不必要的重复劳动。我觉得人类历史上的几次重大生产力提高是这样的:
首先是发明语言,有了语言,大家就可以交流经验。一只猴子,要把整片树林的果子都尝一遍才知道哪棵树上的最好吃。另一只猴子必须重复同样的工作才能得到答案。有了语言就不一样了,一个人尝试过所有的果子之后可以把经验告诉别人,当然,更有效的方法是每个人负责尝试一小部分,然后大家交流心得,这样很快就找到了最好的果实。省下来的时间可以用作其它生产。之后是使用工具,利用工具优化了自身能量的使用。之后是利用畜力,人类终于可以突破自身力量的限制了。再之后是文字的发明,这样就可以传播的更广泛,更久远,也避免了口口相传中产生的误差。再之后是工业革命,来自化石燃料和水利的能量远远超过生物体所能够提供的能量。人们建造大型工程,运输物资的效率大大提高。

时下发展最快的产业是信息产业,并且据我估计,它再红火个几十年也是不成问题的。放在以前,知识的获取都是被动的。比如有人或书籍传授了我某些经验,我之后就可以在生活过做中应用它们。但是,我如果不曾学习过某些问题,我几乎没有途径可以得知是否这些问题即便已经有人解决过了。因此,我很难主动的去获取某一知识,遇到这类问题总还是要自己亲自研究一遍的。而现在,借助强大的网络,若别人已经研究过某问题,我就可以把重复研究的工作省下来了。我的工作是编程序,在开发一个新功能前,上网一查,就知道别人是否已经研究过类似问题,研究成果如何。把别人已有的成果拿来(有些需要付费才能拿来),再此基础上再继续工作,效率就高多了。

信息产业的发展在很多方面给人们带来的高效率还不仅体现在科研开发上。我前两天刚买了个高压锅,在网上查好物品的特性,下单,第二天快递就把东西送来了。这让我想起了中学时代的一篇英语课文,大意是讲在未来,可以足不出户,就通过可视电话选购自行车。那时候还是把它当科幻文章读,没想到才过了几年它就已经成为寻常生活很自然的一部分了。

有时候我在想,等信息产业充分发展后,人们亟待解决的问题又会是什么呢?有些事情单靠通讯的改善还是无法做到的,比如说改变某地区的气候、移民外星球等。信息传递的问题解决到一定程度,制约生产力发展的瓶颈就变成能量了:不能改变气候是因为没有足够的能量和大自然风力、水力抗衡;不能飞到外星球是因为没有足够的能量为飞船进一步加速。所以我想下一个最具吸引力的产业一定是新能源产业。比常规能源多几个数量级的大概就只有核能了,等到人们掌握了常温核聚变技术,肯定会再一次给生活带来翻天覆地的变化。那时候的汽车,只要一颗电池就可以跑一辈子,就像现在的电子表一样。

核能进入家庭生活应该还早呢,不过很可能另一项能源将会迎来民用发展的小高潮,这就是风能。最近几年,太阳能热水器在中国的北方地区非常兴盛。经常是一栋大楼的楼顶被密密麻麻的热水器都占满。但是,像上海这种阴雨天特别多的地方,太阳能利用率是非常低的;或者天气一直炎热的地区,热水用途不大。相比之下,风能发电在这些地区会更有前途。制约家庭使用风力发电机的最大问题大概就是风车的占地面积太大。以前风力发电机主要是水平轴的,就是看上去像螺旋桨风车那种,本来它的风叶转起来就要占很大面积,而它的转动方向又要根据风向来调整,占用了更大的地方,这就注定了它们只能被安装在人烟稀少的空旷地区。不过随着计算机计算能力的提高,近年来已经在垂直轴风力发电机的设计上取得了突破。垂直轴风力发电机的形状有点像走马灯,它的最大好处是占地小。占地和太阳能热水器差不多的风电机就可以为普通家电提供能量了。等风电机的成本降低到和太阳能热水器差不多的时候,说不定家家楼顶上都会竖起一个风车了。