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

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条回答
liurenfu2013
1楼-- · 2019-08-14 13:18
q247341184
2楼-- · 2019-08-14 16:58
魑魅魍魉
3楼-- · 2019-08-14 18:00
其实我也有写这种的想法,只是一直没做。我也不知道你的函数是什么,我就把我的思路说一下吧:
    你是用三个按键吧,我的想法是用四个。首先主函数里面死循环,先设一个变量i,用一个按键控制它的值为1或2,再用switch语句调用这两个函数,和你的一样,不过我感觉不用default。那么这样程序就会在主函数里面不停地检测i的值,从而达到每按一次按键,就切换一种功能的效果。接着说两个调用的子函数,你应该最少先设两个全局变量,用于两个子函数,然后每个函数里面再添加一个按键用于控制键的大小,这样再把设置的参数传回给主函数输出就OK了。
    我明白你是想利用设置参数的子函数里面加死循环,然后保持这样的状态,但是你不妨按我思路试一下,只不过我这种思路弊端就是如果要实现太多功能的话,就要用更多的按键,资源利用率太低。
    我仔细想了一下你的程序思路,我感觉你的程序问题如下:你的x初始值是0,那么马上就调用第一个函数,然后设置完成以后x为1,接着调用管理函数,立马进入第二个函数,再设置好参数以后,x值又变了,猜的没错应该是2,然后default,x变成0,然后函数就执行出去了,所以说在管理函数里面加一个死循环,把switch包含进去就可以了。如下
while(1)
{
.......
switch(x)    x初始值为0
               case 0: 设置参数1的函数;break;
               case 1: 设置参数2的函数;break ;
               default: x=0;
......
}
q247341184
4楼-- · 2019-08-14 22:46
 精彩回答 2  元偷偷看……
q247341184
5楼-- · 2019-08-15 02:14
魑魅魍魉 发表于 2017-8-17 10:11
其实我也有写这种的想法,只是一直没做。我也不知道你的函数是什么,我就把我的思路说一下吧:
    你是用 ...

我分两部分回答你吧;
1、就是你提供的思路,我如果没理解错的话,你的意思就是每一个按键控制一个参数的设置,按1进入参数1的设置,按2进入参数2的设置,对吧?我相信这样是没问题的,但是我觉得按键太多了,不太符合我目前想做的这么个小玩意的思路,我只是想就好像小时候的那个电子表一样,set键设置时间,set键设置日期,set键回归原位。这是我的目标;
2、你提供的思路我也有想到过,但是现象是可以进入死循环,却回不了界面1,两个界面的话问题还不是很大,但是一旦超过两个,假设我有4个界面,就只能在2-4界面来回切换,所以我找不到我哪的逻辑有问题。我之前用c语言编辑模拟了一下也是相同的结果。而且这么写的方式及其不稳定,用c模拟的时候次数达到足够多的数量程序就崩溃了,所以我感觉在stm32上应该也有一样的隐患。所以我才选择看看能不能找一个其他的思路。
魑魅魍魉
6楼-- · 2019-08-15 04:50
q247341184 发表于 2017-8-17 10:24
我分两部分回答你吧;
1、就是你提供的思路,我如果没理解错的话,你的意思就是每一个按键控制一个参数 ...

要不试试中断?

一周热门 更多>