30 thoughts on “《我和LabVIEW – 一个NI工程师的十年编程经验》

  1. 阮老师:您好!我在看您第一版的《我和LABVIEW》,记得当年毕业论文用LABVIEW和数据采集仪用了一个简单设计蒙混过关,以后因为工作原因一直没有再碰。最近,有些闲暇就再学习一下LABVEIW。有一件有趣的事情:我父亲的老单位有一台非常非常老旧的英国INSTRON力学测定的仪器,应该是1978年引进的。这台仪器配备一个DAS接口,使用当时HP的计算器(还不是计算机)来控制与交换数据。接口是IEEE488,好在单位里面还保留当时的用户手册。通过这本用户手册,可以获取一些指令。它不同于IEEE488.2 用的是通用的指令,这些通过IEEE488发送的指令并不是ASCII码的,而是16位0101的数字。
    我的问题是我手头有一块NI的GPIB PCI卡,我也查看了LABVIEW关于GPIB操作的一些案例。我想利用MAX使PC和这台设备进行握手和交流不成问题。但是要控制这台机器,需要发送指令,但GPIB READER函数发送的似乎是”ASCII“的指令,那我把这16位的”010101“转换成2个字节的ASCII码,通过GPIB READER函数发送出去,GPIB卡是否会按照”010101…“对应的顺序传递给那台老旧的仪器呢?十分好奇中。可能我说得不太明白,也许实地去试一试会获得结果。

    • 最近都没有来看博客,不知道给你的回复是不是太晚了。LabVIEW的GPIB既可以发送字符串命令,也可以发送二进制命令。
      很老的仪器有些是使用寄存器来进行控制的,所谓命令就是设置每个寄存器为1 或0。LabVIEW控制这些仪器没问题的,使用GPIB函数中发送二进制数据的函数就行了。

  2. 你好,这本书非常不错,希望能加入关于LabVIEW里面Class的讲解,这个不是特别能理解,希望老师能有机会详细讲解一下用法。谢谢!

  3. Pingback引用通告: 《我和LabVIEW》补充内容和注释 第2版 | 凡人琐忆

  4. Pingback引用通告: [转][cited]凡人琐忆 – 《我和LabVIEW – 一个NI工程师的十年编程经验》 « 仰望天空_hover_in_the_sky

  5. Hi,
    继续:
    P99 3,7.4第四段 “可以明显地区分出一个事件是过滤事型件还是通知型事件。” 应该是“过滤型事件”
    P101 第一段第三行“程序所作的….工作都是无效的。” 这个“作”貌似应该是“做”,“做工作”嘛。

    提个建议, 3.7.6的内容好像有些复杂,插些截图效果更好点。
    3.8 定时结构中,好像一直没有解释定时结构,倒数第二段 “最后改用定时结构”,反倒提到了应用,这个读起来有点糊涂。
    还是先解释一下更好一点。

    Br.
    Yan

  6. Hi,

    P72 : 2.5.2第二段第一行后半部分 “只允许出现0~9、A~E中的字符“中的” E“应该是”F“。
    P92 : 3.5.3第一段第三行”分别位于循环元结构的左右两侧“ 这个 ”元“字是多余的吧?

    另外请教个问题:
    P83 3.2.2中提到”最好还是设置默认分支“,我记得 LabVIEW for Everyone 中时建议大家不要设置默认分支的。
    设置默认分支会让我们的失误成为程序的非致命错误,不设置默认分支可以让失误成为致命错误。
    相对于非致命错误,我们更喜欢致命错误。这样不会让程序迷迷糊糊的运行下去。(这一段忘了从哪里看到的了)
    这跟C语言中case语句几乎必须要加default是不一样的。
    我觉得 LabVIEW for Everyone 的建议更有道理一些。

    另外3.2.4中提到的:解决了这一问题的方案之一是把输入隧道设置为”未连线时使用默认值“。 —–这个跟上面的基本思想一致。

    这本书很不错,看得很愉快。

    Br.
    Yan

    • 感谢夸奖。
      我非常钦佩你的认真细致,很少有人看书可以看得这么仔细的。你帮了我很大的忙。
      你找到的错误我会加到勘误中。

      你提到的,致命错误比非致命错误好,的确有道理。所以像你说的,3.2.2这里还是没有默认分支更安全。

      隧道设置为“未连线时使用默认值”理论上也是一样的。不过实际操作中,我自己还是使用了很多默认值。因为大多数情况下,选择框只有某个分支里的输出数据是有意义的,给其它的分支一个一个去添加相应的输出值太麻烦了。所以用不用默认值还要具体编程时看:如果只有一个分支的输出数据有意义,就用默认值;如果没个分支都可能输出不同数据,就不要默认值,避免失误。

      • 其实你也有足够的理由夸夸自己了。
        也不是所有的作者都像你这样认真的挑自己书中的错误,哪怕是错字这样的小错也不放过。
        人要接受批评挺不容易的,我就有这样的感觉。毕竟,认错的感觉不是很爽。
        记得上回给一本书指了个错误,是书上自己举了一个例子,进行判断,可惜结论是错误的。
        我指出来以后,作者只是不咸不淡的回了一下,连勘误表都没有。

        (这可是一本四星半的好书哦~~~~其实这书确实还不错,是我换工作时的主要参考书。)
        这么好的书的作者,要认错都很难的。

        你做的很好了。
        (看看勘误表,感觉国内的出版系统还真是不严谨)

        • 我觉得生了孩子后,会更理解作者的感觉。自己辛辛苦苦写出来的书,就像自己养的孩子一样,左看右看都那么完美。听见别人说自己宝贝嘎达的坏话,难免心中不平。 不过,我做程序员多年,早已接受了“软件必有bug”这一结论了,心态就不一样了,所以丝毫不会抵触别人对自己作品提供的反馈。

          相反,因为大家都知道“人要接受批评不容易”,所以愿意指出我书中错误的读者非常有限,像你这么认真的就跟难得了。希望咱们以后更多交流,把我把这本书改到最好。

  7. Hi,
    那就再说两个。
    P56,
    “时间有两种:…… 相对时间表示…… 绝对时间指的是……。也就是说,绝对时间记录的实际上是一个特殊的相对时间。”
    这中间是不是删过东西?“也就是说”的前面和后面应该是同一回事,用在这里有些不妥,读起来有点“颠簸”。改成“其实”可能好一点。
    第一遍读的时候能感觉出这个问题,越读越不明显。这个问题不是个问题,相信大家也都能理解。
    其实时间这一段只写”应当注意的是,LabVIEW中记录的秒数是指从格林威治时间1904年1月1日12:00 am到当前时刻的总秒数。“应该就差不多了。

    说真正的问题:
    图2.48:U8上面的*(类型 *)&x 2是不是应该是*(U8 *)&x 2,TF上面的*(类型 *)&x是不是应该是 *(BOOL *)&x ?

    ”图2.48跟图2.38所完成的功能是完全相同的“,如果输入值是I16的话,结果是不同的。按照图2.48,只有输入大于255,输出才为真。
    我认为这是LabVIEW的bug,不信你试试。
    LabVIEW for Everyone中Type Casting.vi中已经指出了这个问题。Pretty strange, eh?

    有苛刻的消费者,才有放心的产品;有苛刻的读书者,才有经典的好书。

    祝你这本书成为经典吧!

    Br.
    Yan

    • 我希望自己书中的语言也尽量流畅,所以关于你提到的第56页那段,我会再理顺一下。
      图2.48控件上面的标签是默认生成的,不过看来这里容易引起误解,所以我也会进行修改。
      “图2.48跟图2.38所完成的功能是完全相同的”这句话确实不严谨,多谢你的提示。这里的说法我也会进行修正。

      再次感谢你帮我向“经典”迈进了一小步:)

  8. Hi (想不到合适的称呼),
    书刚到货,翻着看了看,本着有问题就说出来的原则,提两个问题,都是第4页的。

    “LabVIEW的第一个版本是在Macintosh机(苹果个人计算机)上实现的,后来才移植到了PC机上”
    —这个说法可能欠妥,因为Macintosh机本身就是PC的一种。wikipedia如是说:The Macintosh (play /ˈmækɨntɒʃ/ mak-in-tosh),[1] or Mac, is a series of personal computers (PC) designed, developed, and marketed by Apple Inc.

    “高地址位存高位数据(big-ending)”
    —big-ending??没见过,应该是big-endian吧?大端模式

    欢迎提意见不?刚刚开始看,不欢迎就不说了,呵呵

    Br.
    Yan

    • 非常欢迎提意见。这两处是我的疏忽,我会把它们加到勘误中去,然后在后续的版本中修正。
      如果能继续帮我挑毛病,我会更加感激:)

  9. 阮老师,我算是初学者,之前也了解过一点LABVIEW;现在订购了您的书,想好好学习下,也正好工作需要。请问有没有什么建议,可以更快的掌握主labview的知识?
    谢谢。

  10. 阮师好!我刚从当当定了您的书,目录我浏览了一下,没有怎么涉及『总线技术』和『网络通信』部分,正好我在用这部分的东西(多串口、TCP/IP等),所以想认真看一些这部分的内容。作为资深NI工程师,您能否推荐一些著作或文章,谢谢。

    • 我没涉及这两部分内容是因为我对他们了解不深,我也只能写一些我擅长的内容。因为不了解,所以也没法推荐资料了。

  11. 阮老师,您好,我今天拿到了你的书,我看书是先看目录,我发现书里关于各种接口的采集卡的DAQ涉及并不是太多,希望在以后的学习中可以借助这个平台跟您讨教相关问题,谢谢!

    • 阮老师,我最近正在拜读你的书自学LabVIEW,在学习过程中发现P85页的图3.23程序运行有点问题;当A>B时,程序执行完会显示A<B。还请阮老师有空看看是不是这样的?

      • 这个程序确实有点问题,参考一下勘误表里的修改:https://ruanqizhen.wordpress.com/2009/11/29/%E3%80%8A%E6%88%91%E5%92%8Clabview%E3%80%8B%E5%8B%98%E8%AF%AF/

  12. 阮老师,我刚买了您出的书,正在学习,顺便来拜访下您,希望以后有问题时能得到您的指导。祝您工作顺利,生活幸福!Carol

  13. 高手写的书看起来很舒服,总是知道读者会在哪里遇到难题
    很希望阮大侠能再出个FPGA专题的书

    • 多谢赞扬。目前LabVIEW在FPGA上的应用挺热门的,但是我对于FPGA没有啥研究。我还是专注写自己熟悉的话题,否则质量就没法保证了。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s