• NI LabVIEW 编程规范


    1. LabVIEW程序编写应该遵循哪些规范?
    2. 遵循这些规范有什么好处?
    3. 具体细节是什么?

    针对上面三个问题一一解答:

    一.LabVIEW程序编写应该遵循哪些规范?

    (1)前面板、后面板控件整齐,尽可能在一个界面内显示所有控件。

    (2)数据连线横平竖直,有长走线,需添加注释。

    (3)程序代码添加注释,尤其是重要功能模块

    (4)VI图标有含义,VI有描述信息

    (5)程序有错误处理机制

    (6)避免过多的属性节点,大数组的强制类型转换。

     

    二.遵循这些规范有什么好处?

    (1)提高可读性

    (2)提高可维护性

    (3)提高程序运行效率

     

    三.具体细节是什么?

    (1)前面板、程序框图中控件的对齐。LabVIEW中提供了控件的对齐工具栏,包括左右居中对齐,控件等间距分布、统一控件的长度和宽度等,利用对齐工具栏,可以将前后面板的控件以非常有序的方式组织起来。如图1中前面板控件采用右对齐并且控件之间等间距放置,程序框图中输入控件右对齐,并尽量保持控件垂直方向等间距。

     

    图1 :控件对齐

    (2)LabVIEW是基于数据流的,框图中的连线表示数据流的走势方向。因此节点间连线应清晰直观,尽量使用从左到右,自上而下的方式进行布局。而且要尽量避免不必要的弯曲连线,避免在结构边框下或重叠的对象之间进行连线,因为这些连线的部分连线段可能会被遮挡而影响程序的可读性。对于长距离的走线,应该添加文字注释。图2为框图走线整理前后对比:

     

    图2:优化框图连线

    图3中为长距离走线加上必要的文字注释:

     

    图3:为长距离走线加上文字注释 

    (3)为每一部分实现特定功能的框图结构添加有意义的注释,如图4所示,While循环、Case结构每一分支对应的使用场合:

    图4:为Case结构每一分支添加注释 

    (4)给每个子VI一个明确的图标,并且在其属性的Documentation一栏描述该VI的用途。图标一般采取文字加图形的方式。图5为一些子VI示范图标:

     

    图5:给每个子VI明确的图标

    给每个VI的Documentation一栏加上描述信息,如下图所示:

     

    图6:给VI添加描述信息

    (5)在程序的适当位置添加错误处理,也可以对可预见的错误进行自定义,这样既增强程序的稳定性,也可以方便问题的快速定位和排查。尽量通过错误输入输出簇来控制代码的先后顺序,而避免使用顺序结构。图7表示在程序的各个不同功能部分添加自动错误处理:

     

    图7:自动错误处理

    图8表示对可预见的错误进行自定义错误处理:

     

    图8 用户自定义错误处理

    图9中用错误簇代替顺序结构来控制数据流的先后顺序:

    图9 用错误簇控制代码执行顺序

    (6)尽量使主VI的框图简洁,当涉及到对主VI的前面板控件多处属性修改而占用较大框图面积时,通过传引用的方式将这一部分代码放在子VI中进行。如图9(a)中将Table控件的引用传入子VI,在子VI中修改Table控件属性如图9(b):

     

    (7)、优化VI运行性能。有几个常用的工具可以分析所编写程序的性能,如VI性能与内存使用工具(VI Performance and Memory)、显示缓冲区分配(Show Buffer allocations)、VI整体评估工具(VI Metrics),使用这些工具使你对编写的程序有一个整体的把握,如内存分配是否合理、前面板控件是否过多、是否使用了过多的属性结点、是否存在大数组的强制类型转换、是否某个子VI存在明显的耗时代码等等。

     

    图10:VI性能与内存使用工具

     

    图11:显示缓冲区分配

     

    图12:VI评估工具

    总结.

    在一开始设计程序的时候就遵循一些良好的编程规范,那么程序的可读性和可维护性就会高得多,这将起到事半功倍的效果

    还有一些LabVIEW编程规范,如簇的使用尽量采用严格自定义类型、避免程序框图过大超过整个屏幕、用条件For循环代替While循环、严格控制局部变量和全局变量的使用、避免GUI轮循等。合理使用这些编程规范,对于编写大型程序,提高程序的可读性和可维护性具有非常重要的意义

  • 相关阅读:
    linux ramdisk
    linux系统灵活运用灯[android课程3]
    linux编译注解
    Linux内核3.0移植并基于Initramfs根文件系统启动
    linux0.11文件分析
    2.2linux内核移植简介
    sudo: ./sd_fusing.sh:找不到命令
    Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]
    Exynos 4412的启动过程分析[2]
    POJ 3009 Curling 2.0 {深度优先搜索}
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13665508.html
Copyright © 2020-2023  润新知