打印
[应用相关]

老是执行 WRN_IDL()

[复制链接]
723|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qiangweii|  楼主 | 2016-12-18 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老是执行 WRN_IDL();

WHILE(1)

{
       if(b_I1A &&b_I1B&& b_I2A && b_I2B)
      {
            if((b_A1A==0)||(b_A1B==0))
             {
               ALM();
               }
             else
            {
                    if((b_W1A==0)||(b_W1B==0))
                      {
                       WRN();
                          }
                         else
                        RUN();
                 }
   }
        else  
        {
             if((b_A1A==0)||(b_A1B==0))
                {
               ALM_IDL();
                 }
              else
             {
                          if((b_W1A==0)||(b_W1B==0))
                                  {
                               WRN_IDL();
                                }
                             else
                            RUN_IDL();
               }
   }

}
沙发
litengg| | 2016-12-18 15:41 | 只看该作者
看不懂,应该是逻辑错误了。

使用特权

评论回复
板凳
androidbus| | 2016-12-18 15:45 | 只看该作者

b_I1A等表示空闲,
b_W1A等表示警告,
b_A1A等表示报警。
多台设备,现在要有报警出报警ALM(),没报警有警告出警告WRN(),没报警和警告出正常运行RUN();

使用特权

评论回复
地板
feiqi1| | 2016-12-18 15:48 | 只看该作者
如果有空闲,则运行相应的ALM_IDL(), WRN_IDL(), IDL();

使用特权

评论回复
5
xia00| | 2016-12-18 15:51 | 只看该作者
总执行那个肯定是满足执行它的条件:b_I1A ,b_I1B,_I2A ,b_I2B不全为1;b_A1A和b_A1B都为1;
b_W1A,b_W1B中有一个为0。

使用特权

评论回复
6
hfdy01| | 2016-12-18 15:54 | 只看该作者
我感觉你的第一层if else语句条件存在语法错误。

使用特权

评论回复
7
CallReceiver| | 2016-12-18 15:58 | 只看该作者
是的,第一层if else语句条件条件不明确。

使用特权

评论回复
8
boy1990| | 2016-12-18 16:00 | 只看该作者
那么是只能执行else语句了!

使用特权

评论回复
9
sourceInsight| | 2016-12-18 16:04 | 只看该作者

if((b_W1A==0)||(b_W1B==0)) { WRN_IDL();}看下你的条件的吧

使用特权

评论回复
10
mintspring| | 2016-12-18 17:29 | 只看该作者
说明总是符合执行该函数的条件。

使用特权

评论回复
11
598330983| | 2016-12-18 20:44 | 只看该作者
C语言基础不行吧 ?

使用特权

评论回复
12
迪卡| | 2016-12-19 20:35 | 只看该作者
条件满足,就会一直执行的;检查一下寄存器,还有编程逻辑有没有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

1521

帖子

3

粉丝