想实现一个类似设置模式的设计,求指点思路。

2019-08-14 07:37发布

想实现一个设计模式,实现的功能就是 按set键进入设置模式,按上下键调节值的大小,再按set键完成参数设置,并进入下一个参数的设置。
我的思路是这样的:
主架构分为三部分:
1、管理函数:
     只调用switch(x)    x初始值为0
               case 0: 设置参数1的函数;break;
               case 1: 设置参数2的函数;break ;
               default: x=0 ;
2、设置参数1的函数:
     while(1)循环
          {
            显示要设置的数据;
            等待键值;
            判断键值进行操作;
                  上下键设置值的大小;
                  set键完成设置并调用 管理函数且x的值+1;
           }
2、设置参数2的函数:
     主体和设置参数1的函数一致,不做赘述;

以上是我写的代码的思路,但是发现无法实现,仅仅切换就有问题,具体现象是,切换到设置参数2后,按set键并没有回到设置函数1的函数,而是卡在这,但是x值已经变了,也调用了管理函数,为什么回不去呢?求指点,或者给指引一条其他的思路都可以。。拜托各位!!!已经多次修正测试好几天了,依旧无果。。想看代码的留言,怕大家看不下去,遂暂时不留代码。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
bayga456
2019-08-15 05:26
void Keys(void)                        //按键
{
        uchar temp;
        temp=KEY_Scan(0);
        switch(YeMian)
        {
                case 0:                                        //主页面
                        if(temp==3)
                        {
                                num_10=num_1;
                                YeMian++;
                        }
                        break;
                case 1:                                        //页面 1  
                        if(temp==3)
                        {
                                if(num_10!=num_1) Num_Change();
                                num_20=num_2;
                                YeMian++;       
                        }
                        else if(temp==2) num_10--;
                        else if(temp==1) num_10++;
                        break;
                case 2:                                        //页面 2
                        if(temp==3)
                        {
                                if(num_20!=num_2) Num_Change();
                                num_30=num_3;
                                YeMian++;       
                        }
                        else if(temp==2) num_20--;
                        else if(temp==1) num_20++;
                        break;
                case 3:                                        //页面 3
                        if(temp==3)
                        {
                                if(num_30!=num_3) Num_Change();
                                num_40=num_4;
                                YeMian++;       
                        }
                        else if(temp==2) num_30--;
                        else if(temp==1) num_30++;
                        break;
                case 4:                                        //页面 4  
                        if(temp==3)
                        {
                                if(num_40!=num_4) Num_Change();
                                num_50=num_5;
                                YeMian++;       
                        }
                        else if(temp==2) num_40--;
                        else if(temp==1) num_40++;
                        break;
                case 5:                                        //页面 5
                        if(temp==3)
                        {
                                if(num_50!=num_5) Num_Change();
                                YeMian=0;       
                        }
                        else if(temp==2&&num_50>2) num_50--;
                        else if(temp==1&&num_50<20) num_50++;
                        break;
                default : YeMian=0;        break;        //返回主页面
        }
}
以上是已经测试过的程序:
每个页面都有各自的显示内容和数据。

一周热门 更多>