想实现一个设计模式,实现的功能就是 按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值已经变了,也调用了管理函数,为什么回不去呢?求指点,或者给指引一条其他的思路都可以。。拜托各位!!!已经多次修正测试好几天了,依旧无果。。想看代码的留言,怕大家看不下去,遂暂时不留代码。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
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; //返回主页面
}
}
以上是已经测试过的程序:
每个页面都有各自的显示内容和数据。
switch(key_value)
{
case set: flag++;if(flag==x)flag=0;break;
case up:
switch(flag)
{
case 0: break;
case 1: break;
..........
}
break ;
case down:
switch(flag)
{
case 0: break;
case 1: break;
..........
}
break ;
default: x=0 ;
}
3、把你的获取按键的函数与这个一起放在大循环就可以了!
好我试着顺着你的思路写一下试试看。
那个flag==x这个x是你有多少个界面切换,后面那个default: x=0 ;我是照你的程序修改,不记得改了,这个没用
一周热门 更多>