独闷闷网

 找回密码
 立即注册
搜索
查看: 2751|回复: 0
收起左侧

[原创] 鸿哥通过修改曹健的程序,告诉你如何把不能即刻完成的按键任务传递到外面来处理。

[复制链接]
发表于 2014-10-31 13:37:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 jianhong_wu 于 2014-10-31 13:42 编辑

今天曹健的程序虽然可以把原来按一次蜂鸣器响1声的程序改成了按一下响2声的程序,但是那样改把我的按键框架打乱了,思路也乱。他的代码:
  1. void key_service()
  2. {
  3.     switch(ucKeySec)
  4.     {
  5.         case 1:
  6.             {
  7.         uiVoiceCnt=20;
  8.         ucKeySec=2;
  9.         break;
  10.             }
  11. //跟鸿哥的程序主要不同的在这里。当uiBeepTimeCnt加到6000
  12. //让蜂鸣器再响一次。这个程序能实现响两次
  13.         case 2:
  14.             {
  15.             if(0==uiVoiceCnt)
  16.                     {
  17.                 uiBeepTimeCnt++;
  18.                 if(6000<=uiBeepTimeCnt)
  19.                         {
  20.                     uiBeepTimeCnt=0;
  21.                     uiVoiceCnt=20;
  22.                         ucKeySec=0;
  23.                         }
  24.                 }        
  25.             break;
  26.             }
  27.     }
  28. }
复制代码
经过鸿哥修改后:



  1. void key_service()
  2. {
  3.     switch(ucKeySec)
  4.     {
  5.         case 1:
  6.             
  7.              ucBeepFlag=1; //多增加这个标志变量,把不能即刻完成的任务传递到外面来处理
  8.              uiVoiceCnt=20;
  9.              //ucKeySec=2;注意,这个毕竟是按键程序,只做按键的事情,做完就即时清零。
  10.              ucKeySec=0;
  11.              break;
  12.     }
  13. }


  14. void ucBeepFlagService() //多响一声的处理程序  放在主函数的while(1)循环里
  15. {
  16.    if(ucBeepFlag==1)  //判断是否有消息响应
  17.    {
  18.        uiBeepTimeCnt++;
  19.        if(6000<=uiBeepTimeCnt)
  20.        {
  21.           uiBeepTimeCnt=0;
  22.           uiVoiceCnt=20;
  23.           ucBeepFlag=0; //及时把标志清零,等于处理完了这次消息。避免一直进来处理。
  24.        //   ucKeySec=0;
  25.        }

  26.    }

  27. }
复制代码

fyt57889681-东莞:
鸿哥,这样的话不是把蜂鸣器声音独立一个子函数会更好吗?

鸿哥--深圳:
一般的蜂鸣器声音是做按键声音的,就可以直接放在按键服务里。如果要额外编写不同节奏的声音,那么就把它的消息导出到外面来处理。

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-12-4 14:11 , Processed in 0.395891 second(s), 18 queries .

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