| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖
标题:功能机实例
只看楼主 加入收藏
liaocao2014
Rank: 2
等 级:论坛游民
帖 子:16
专家分:14
注 册:2014-4-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
功能机实例
功能机实例
代码太多调用,我就简单把编程思想写在下面吧

EVENT代表信号强度,有1 - 4 ,4个值
move代表手机在移动,移动的越远,信号越低

if(move)
{
    switch(EVENT)
    {
        case 1:显示信号一格;break;
        case 2:显示信号两格;break;
        case 3:显示信号三格;break;
        case 4:显示信号四格;break;
    }
}

我现在要做的就是在每降一格信号的时候,发生报警提示,也就是下面这样
ant_fun()是报警音

if(move)
{
    switch(EVENT)
    {
        case 1:显示信号一格;ant_fun();break;
        case 2:显示信号两格;ant_fun();break;
        case 3:显示信号三格;ant_fun();break;
        case 4:显示信号四格;break;
    }
}

但是现在问题出来了,因为这段代码在机器启动后一直在调用,所以一旦响起来了就会一直响,而且不分

减弱或者增强
后来我就试了试静态变量
static int i = 3;
因为这段代码一直在被调用,我就加上while(1)吧,改后如下


while(1)
{
  static int i = 3;
   if(move)
  {
    switch(EVENT)
    {
        case 1:
        {
            显示信号一格;
            if(i == 1)
            {
                ant_fun();
                i--;
            }
            break;
        case 2:显示信号两格;
            if(i == 2)
            {
                ant_fun();
                i--;
            }
            break;
        case 3:显示信号三格;
            if(i == 3)
            {
                ant_fun();
                i--;
            }
            break;
        case 4:显示信号四格;break;
    }
  }
}

这样只会响一次,因为静态变量只能定义一次,所以下次调用这段代码就不会改变i的值,但还是有问题

,就是从4格信号到3格信号会响一次,而且只会响一次,后面信号增强到4格后,如果减弱到3格又不会响



能力有限,下面怎么改才完美呢,
这段代码对我而言的难点如下

1.这段代码是反复调用的,所以改不改铃声的函数都一样,只要铃声函数响,就必然在每次调用的时候都

一直响,这样也就不能实现例如只响一声或者两声的意义

2.信号减弱回响,但是信号恢复正常了,再减弱也要响,那就必须某个条件变量跟着节奏走,这个条件变

量怎么写呢?


忘高人前辈能花点时间不吝赐教!

万分感激!

如果我有表述不清的地方,无论严厉还是婉转的指出,我都会悉心改正!



我再CDSN也发帖了,这样没问题吧
搜索更多相关主题的帖子: 手机 
2014-08-08 09:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
const 鬼叫初始值 = 10;

for( int 当前信号强度=EVENT, 鬼叫值=0; !请求退出; 延时(值) )
{
    if( 当前信号强度 < EVENT )
    {
        当前信号强度 = EVENT;
        鬼叫值 = 鬼叫初始值; // 从新开始鬼叫
    }
    else if( 当前信号强度 > EVENT )
    {
        当前信号强度 = EVENT;
        鬼叫值 = 0; // 停止鬼叫
    }
    else if( 鬼叫值 > 0 )
    {
        --鬼叫值; // 减弱鬼叫强度
    }

    鬼叫( 鬼叫值 );
}

void 鬼叫( int 鬼叫值 )
{
    以“鬼叫值”强度进行鬼叫。// 如果 鬼叫值==0 的话,当然就是不叫了
}
2014-08-08 10:31
liaocao2014
Rank: 2
等 级:论坛游民
帖 子:16
专家分:14
注 册:2014-4-27
收藏
得分:0 
回复 2 楼 rjsp
大哥,你好大的怨气啊!非常感谢,祝你每天生活愉快!
2014-08-08 17:43
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
收藏
得分:0 
太给力了
2014-08-09 08:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用rjsp在2014-8-8 10:31:17的发言:

const 鬼叫初始值 = 10;

for( int 当前信号强度=EVENT, 鬼叫值=0; !请求退出; 延时(值) )
{
    if( 当前信号强度 < EVENT )
    {
        当前信号强度 = EVENT;
        鬼叫值 = 鬼叫初始值; // 从新开始鬼叫
    }
    else if( 当前信号强度 > EVENT )
    {
        当前信号强度 = EVENT;
        鬼叫值 = 0; // 停止鬼叫
    }
    else if( 鬼叫值 > 0 )
    {
        --鬼叫值; // 减弱鬼叫强度
    }

    鬼叫( 鬼叫值 );
}

void 鬼叫( int 鬼叫值 )
{
    以“鬼叫值”强度进行鬼叫。// 如果 鬼叫值==0 的话,当然就是不叫了
}
鬼叫值 是啥
2014-08-09 20:27
快速回复:功能机实例
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016379 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved