hur.cn - 华软网

 热门搜索

请教,外部变量的问题

  作者:未知    来源:网络    更新时间:2011/5/17
之前我在论坛上发帖请教问题,原先的问题是:
从串口不断的返回一组字符串:7E 01 02 03 84 我现在以返回字符串的第二个字节作为判断条件去触发一个函数。
表达式如下:
       if(rxdata[1]==0x01)//如果返回的第二个字节为01
       {
         OnButton1();//去触发函数
       }

如果按上面的方式写程序,串口每返回一次字符串,只要条件符合,就会去触发一次函数。
我不想每次都去触发函数,于是就按下面方法做:

添加一个静态变量或外部变量作为判断,如下
       bool can_act(true);//外部变量
       ……
       if(can_act && (0x01==rxdata[1]))
       {     
         OnButton1();
         can_act = false;
       } 

这样是可以只去触发一次函数,但在后面的程序中,我又想重新去触发OnButton1()函数,应该怎么写代码
试着这么写can_act = true;但并没反应。


---华软 网友回答---
直接调用不行么?要不把这个函数封装起来调用吧:
GetButton(bool &Flag)
{
  if( Flag && (0x01 == rxdata[1]))
  {
     OnButton();
     Flag = !Flag;
  }
}
---华软网友回复---
引用 1 楼 sxqinge 的回复:
直接调用不行么?要不把这个函数封装起来调用吧:
GetButton(bool &Flag)
{
  if( Flag && (0x01 == rxdata[1]))
  {
  OnButton();
  Flag = !Flag;
  }
}


我的意思是不想改变原来的方式。
原来的方式运行后,由于can_act = false;
所以 if(can_act && (0x01==rxdata[1]))
     {   
       OnButton1();
       can_act = false;
     }  
这段程序再想重新运用时,就由于不满足条件而无法运行if后面的代码了。
我的意思是有什么方法可以让其符合条件来运行if后面的代码




---华软网友回复---
can_act = true;后没有再调用判断的语句吧?要再次触发它才行
---华软网友回复---
引用 3 楼 leiyingecho 的回复:
can_act = true;后没有再调用判断的语句吧?要再次触发它才行


对了,就是这个原因      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。