机器视觉之家VISIONHOME.CN微信公众号:石鑫华视觉网

 找回密码
 注册会员
查看: 728|回复: 0

[转载] 陈树学:labview编程技巧-----令人无奈的IF ELSE

[复制链接]

主题

好友

11万

积分

超级版主

  • TA的每日心情
    慵懒
    昨天 10:10
  • 签到天数: 1096 天

    [LV.10]100FPS

    发表于 2014-11-2 19:26:08 |显示全部楼层
    LabVIEW作为一种编程语言,相对于常规编程语言,有其独特的编程风格.
    7 h7 g" _2 L$ W- ^! V" Y& ?
    ; T  _( F* n1 U
    编程语言都具有顺序,条件转移和循环三种基本结构.LV的IF ELSE常常令人很无奈.
    : ^9 h& w( j4 e

    % D) h, c8 \8 S
    if (condition1)

    + v3 m% T8 s1 u# E! b% e: H
       ........

    # r4 c. G  W. Q: [% v
    else if (condition2)

    - w, y2 ^% X8 O+ q) j7 t6 Q6 I" m0 _+ v4 o; n% f( U* j; R8 Z
        ........
    ) \2 U) H6 S+ I" l% q; f3 P
    else if (condition3)
    ! p5 \+ O* H$ g- N- v. H' k, [
    & {& D. M3 P- U9 f: D$ k" d
    类似与上面的条件结构在其他编程语言中很容易实现,在LV中却是个问题.

    ( H" y9 q% c# t4 _( e# u
    - h2 }2 [" U# f' ?* L( _" a
    1.如果超过三层IF ELSE判断,LV中则很难读懂代码,嵌套太多了

    - Q. ~' H5 T( M3 T8 [0 W' a. E
    2.LV的IF结构必须通过隧道传递数值,即使这个值有时是根本不需要的.

    # D9 o5 H- R2 }6 j- f. j/ j0 s2 l$ e4 T
    比如:
    # D: C, v- r$ v3 R# f
    if (a==1)

    ) O4 r- k4 B. F+ b6 {* Z1 q
       b=2;
    : \! S5 r7 e; l! @8 F0 O: X9 g
    else

    8 o1 K% a5 c. k  ^' c" w
      c=3;
    ! V8 u' g% }6 Q+ u2 a

    + u: m4 n5 @  Q8 c8 D% s7 U9 p
    当变量a=1时,令变量b=2,当变量a!=1时,令C=3

      a( Z- E4 \/ \  m! J
    但是在LV中,当变量a=1时,在令变量b=2的同时,还必须处理C,而此时我们根本不想对C进行任何操作.同理,当a!=1时,我们也不得不处理b的问题.

    $ c4 B# B* n' D, |3 G4 T* B% z- T; ]! W2 P! v
    * M7 m' ]; O6 T& f" _/ Y. T* j
    有网友提问:

    8 O" I) ^" v% B; {  ^3 n' u
    Hi

    . j5 ?. y: t0 C
    I like to do the following statements in LabVIEW,
    ) q9 V, |" {' W: A
    IF AoValue<=0.1 THEN3 h6 J/ V: W# W
        AoValue1=(AoValue-0.0060)( ~1 l- q1 @8 G0 e
        ELSEIF (AoValue >0.1) AND (AoValue<0.2) THEN
    ; h8 K$ r6 m: v$ f
         AoValue1=(AoValue-0.0035)1 B/ C3 i/ O6 }
    ENDIF

    8 ~: Q4 q" H5 h0 t% w# {0 x
    Pls help with this

    - c6 a; [  @+ }- N" @- N$ _# n
    Thanks
    9 ]* K" |# D' l: r; t
    ! W" U$ U: X5 O. X2 L) b
    网友答案:
    : Z) Z. T, B5 p% i# l6 w
    8 f. }; |6 n$ L) e* o

    1 H  [: x: [# B. f% E* v/ [7 ~
    这是个两层的IF ELSE结构,如果数据分成10段那,那上面的判断结构将无法实现了.(另外,他的AOVALUE应该是个输入控件)
    + {+ F, q+ ]" r2 `

    & I8 Z4 \6 X$ L  a1 j
    比较好的解决方法:
    / X. K" E7 Q# s1 y+ h: c2 H
    ! h9 T" Q2 W. V+ W3 e

    6 {. t' x# Y9 ?* p8 l/ d% n
    / r" R1 x2 |4 J$ x  A+ ~
    如果是数值类比较,更好的方法是利用公式节点.

    - s) T. y+ j# [* ~, j1 }1 X

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册会员

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    淘宝机器视觉商城

    Archiver|手机版|小黑屋|视觉之家|东莞市华动智能科技有限公司 ( 粤ICP备17078359号-1 )|网站地图|申请友情链接

    GMT+8, 2018-1-22 04:34

    Powered by shixinhua.com X3.2 Licensed

    © 2012-2018 VISIONHOME.CN 浏览量:

    快速回复 返回顶部 返回列表