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

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

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

[复制链接]

主题

好友

12万

积分

超级版主

  • TA的每日心情
    奋斗
    昨天 15:02
  • 签到天数: 1170 天

    [LV.10]100FPS

    发表于 2014-11-2 19:26:08 |显示全部楼层
    LabVIEW作为一种编程语言,相对于常规编程语言,有其独特的编程风格.

    / J5 r  t& r- x8 R. ^' J" O3 v# u4 Y6 U. w
    编程语言都具有顺序,条件转移和循环三种基本结构.LV的IF ELSE常常令人很无奈.

    , \' |2 V, J) ]' }& a' U: j0 d. o5 J- k& x7 V7 F1 C
    if (condition1)

    , j; m9 y& g/ N- m
       ........

    5 Q* Q) z# j$ z
    else if (condition2)

    % E. {* t1 j4 e9 ^7 U( f& b" e  e
      r- \7 s) P# Q' x0 U, F
        ........
    5 X( H1 H7 a3 d
    else if (condition3)
    , c8 I7 g: w  {/ D

    1 D, i% L8 b% ]% e$ M; ^& H. D
    类似与上面的条件结构在其他编程语言中很容易实现,在LV中却是个问题.

    ' ?0 u3 F( n( J  \* s
    : j) M; x$ y! t2 {0 P0 R
    1.如果超过三层IF ELSE判断,LV中则很难读懂代码,嵌套太多了
    8 u0 i8 e! y4 l( `% O  V
    2.LV的IF结构必须通过隧道传递数值,即使这个值有时是根本不需要的.
    8 {4 O* `4 r( P, u* K" }1 }
    7 h6 B$ U9 W9 u& Z
    比如:

    3 R+ Y* \/ N5 J+ A+ u
    if (a==1)
    " V' i  v7 `! Z2 y# }' G
       b=2;
    . P) Y1 g& u/ `- z, W/ r5 b
    else
    0 K# e9 i: l: V" A
      c=3;

    : A6 n0 r5 i4 D
    ) f5 W5 e* d) _2 }* t
    当变量a=1时,令变量b=2,当变量a!=1时,令C=3

    $ m; A$ q/ i; e7 o- v7 t
    但是在LV中,当变量a=1时,在令变量b=2的同时,还必须处理C,而此时我们根本不想对C进行任何操作.同理,当a!=1时,我们也不得不处理b的问题.

    8 H$ d/ Y& n  N, E+ Q/ S4 |  c+ e) x! W& D5 d6 L3 {( N
    % L+ \* O, C5 z2 d: k' _1 C6 R8 B
    有网友提问:
    % J1 B! x9 J( ~! r; f- C
    Hi

    ! l* Z6 e2 F, ~7 y# M
    I like to do the following statements in LabVIEW,

    & [3 M7 A: [; c, a; c8 i
    IF AoValue<=0.1 THEN4 N4 N9 ^3 O9 c5 p7 a  F
        AoValue1=(AoValue-0.0060)
    $ N, _. R5 |8 m( T( Z1 Q( {( X    ELSEIF (AoValue >0.1) AND (AoValue<0.2) THEN

    4 e% Z2 [: e2 F- `
         AoValue1=(AoValue-0.0035)3 J: F5 ^% \  d3 r
    ENDIF

      \$ w$ K: C$ `# E( V, ]8 f) \+ o0 ^
    Pls help with this

    ! i) k4 A8 Q2 a' Z2 w/ K5 R
    Thanks
    1 K# ^3 i  a7 R' B9 X( S( O% G

    & s* N/ E; z( r! ]; u3 y1 ?% s
    网友答案:

      ^- B2 O5 z9 C: n0 ]
    , \2 }3 x7 e0 O; e
    3 D$ [7 y) F) G; Q0 X/ b+ h
    这是个两层的IF ELSE结构,如果数据分成10段那,那上面的判断结构将无法实现了.(另外,他的AOVALUE应该是个输入控件)

    : @. X; Q8 c0 W, Y+ N% `. p
    7 T1 V% a( G3 v6 u- X( `, @$ q
    比较好的解决方法:

    " I0 a4 M7 j* d& [

    - Q0 k% B' X2 R  b) N
    2 o8 u8 y- n: t3 b# B  k8 T3 M6 P, p) G, j+ D
    如果是数值类比较,更好的方法是利用公式节点.

    : _9 B0 v7 L. w; ]+ E! z" @

    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

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

    本版积分规则

    淘宝机器视觉商城

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

    GMT+8, 2018-4-22 02:54

    Powered by shixinhua.com X3.2 Licensed

    © 2012-2018 VISIONHOME.CN 浏览量:

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