OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8103|回复: 35

关于按键和屏幕显示函数模块之间的痛苦,求一种能方便移植和扩展的程序架构!有图~

[复制链接]

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
发表于 2013-5-12 20:02:26 | 显示全部楼层 |阅读模式



        我的安排是这样的,我的矩阵键盘是4*4的,但里面只用了14个键,其中10个键表示0~9这10个数;剩余4个分别是:开始键、上方向键、下方向键、屏幕画面切换键。
        操作流程是:先按下开始键,再按上或下方向键,然后按0~9这10个数字键调节屏幕上相应位置上的数值!
我遇到的麻烦是我的按键扫描程序和屏幕显示间是用好多全局变量通信的,当然我也没有做专门的显示菜单,都是哪里要显示什么 就在代码里写点显示代码,很散乱。我的介于按键和屏幕显示函数之间的过渡函数既没入口参数也没出口参数,全是通过标志位(全局变量)来连接的(当然我很想写那种有接口的函数,但我没思路……)。  有高人能给点建议我吗?我需要一个好的程序架构——为了方便以后的扩展和移植。虽然我的功能已经实现了,但我对自己的代码架构很不满意!

 
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-12 22:41:47 | 显示全部楼层
回复【楼主位】可乐虎:
---------------------------------
全局变量尽量少用.
按键输入是在不需要多少全局变量啊,我们的GSM模块有虚拟键盘,一个全局变量也没用到.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-5-13 19:14:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那肯定是我的方法有问题了。除了用按键来控制标志位,然后屏幕根据标志位的状态来动作外,还有什么可行的好方法啊?说下大概思路呀,谢谢啊
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-13 20:28:25 | 显示全部楼层
回复【3楼】可乐虎:
---------------------------------
把所有的按键处理做成一个函数,你外部APP程序要用到按键的时候,不停的扫描就是了,哪里需要那么多变量做标记?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-5-14 23:41:19 | 显示全部楼层
回复【楼主位】可乐虎:
---------------------------------
要想好移植,就去看看菜单结构。
1、按键任务
2、菜单显示任务


3、应用层,读当前按键给菜单显示任务,菜单做相应的处理。
菜单其实就是一个类似状态机的东西,他能提供不同状态(显示位置不同)的标志,解决了你所说的全局变量多的问题。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-5-16 20:03:14 | 显示全部楼层
回复【5楼】zyw19987:
---------------------------------
嗯 多谢!我以实现一种菜单的功能,不晓得和你说的是否是一样的??
就是这种,请看:
KEY tbl[10] =

     {0,1,0,0,5,display0},//名字       
    {1,4,2,3,1,display1},//开始
    {2,4,2,3,2,display2},//上
    {3,4,2,3,3,display3},//下
    {4,1,4,4,0,display4},//就绪
    {5,0,0,6,0,display5},//说明
    {6,0,5,7,0,display6},//亮度说明
    {7,0,6,5,0,display7}//亮度说明续
}; //KEY是个结构体变量

要是有更好的方法,请赐教呢
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-5-17 20:47:49 | 显示全部楼层
回复【6楼】可乐虎:
---------------------------------
//1、返回键处理函数通用
//2、向上、向下键处理函数通用
//--------按键索引
KeyFuncStruct KeyTab[]=

//  |-------------------------------------------------> Index
// |    |--------------------------------------------> Set
//  |    |   |----------------------------------------> Esc
//  |    |   |    |-----------------------------------> Enter 长按进入拨号器
//  |    |   |    |   |-------------------------------> Up 布防
//  |    |   |    |   |   |---------------------------> Down 撤防 进入密码撤防菜单
//  |    |   |    |   |   |     |---------------------> 功能函数
  { 0,   1,  9, 147,  9,146,(DisMenuAppInit)},   //待机层
  { 1,   0,  0,   0,  0,  0,(DisMenuAppSet)},  //待机层设置键

  { 2,   3,  4,   5,  6,  7,(DisMenuIconInit)},  //图标层 
  { 3,   0,  0,   0,  0,  0,(DisMenuEsc)}, //设置键fake
  { 4,   0,  0,   0,  0,  0,(DisMenuEsc)}, //图标层返回键
  { 5,   0,  0,   0,  0,  0,(DisMenuIconEnter)}, //图标层确认键 
  { 6,   0,  0,   0,  0,  0,(DisMenuUp)}, //图标层向上键
  { 7,   0,  0,   0,  0,  0,(DisMenuDown)}, //图标层向下键

  { 8,   9, 10,  11, 12, 13,(DisMenuPhoneInit)}, //号码设置
  { 9,   0,  0,   0,  0,  0,(fake)},    //(DisMenuSet)
  { 10,  0,  0,   0,  0,  0,(DisMenuEsc)}, //返回键
  { 11,  0,  0,   0,  0,  0,(DisMenuPhoneEnter)}, //回车键   
  { 12,  0,  0,   0,  0,  0,(DisMenuUp)}, //(DisMenuUp)
  { 13,  0,  0,   0,  0,  0,(DisMenuDown)}, //(DisMenuDown)

思路差不多,但还可以更加整齐。每一层都有对应的几个功能键操作函数,操作函数执行后,回到当前层起点。
也就是说同一层按键操作的起点都是一样的。这样做就和我这个一样整齐了。
这样做的好处是接下来你的动态输入内容好做,另一个就是,当要移植的时候就是整层移植,不会牵扯太多东西。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-5-17 21:18:46 | 显示全部楼层
回复【7楼】zyw19987:
---------------------------------
嗯 要的就是你这个效果,太感谢了啊!!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-18 00:31:57 | 显示全部楼层
回复【7楼】zyw19987:
---------------------------------
做智能家居防盗的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-5-18 04:38:39 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子果然见多识广啊。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-18 10:06:18 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-4 20:35:14 | 显示全部楼层
回复【7楼】zyw19987:
---------------------------------
多个级别的菜单里的数据输入应该怎么办呀?每个具有要输入数字的屏幕界面都得对应一个按键解释函数吗?有没有什么思路呢?
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-8 09:44:32 | 显示全部楼层
回复【12楼】可乐虎:
---------------------------------
对于某一层动态输入项内容不会太多(一般就是一些数字,或数字对应的其他文字信息显示)的情况下,我是使用一个公共的缓存区,缓存大小就是所有层中需要缓存内容最大的层所需缓存数据空间的大小。
然后就是对这个公共缓存用共用体进行分割。
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-8 09:45:57 | 显示全部楼层
动态显示内容只有一个显示函数,这个显示函数就是对上面分割好的缓存区里的内容按指定格式显示到屏上就可以了。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-8 21:24:38 | 显示全部楼层
回复【14楼】zyw19987:
---------------------------------
我用不同页面对应的索引号 和 相应 按键值 这两个参数 搞定了哦
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-9 08:48:02 | 显示全部楼层
回复【15楼】可乐虎:
---------------------------------
只是想搞点你现在的东西,没必要纠结前面所说的代码结构,要的是一劳永逸的效果。刚写代码的是很累,写个几年后,就应该只是搬墙而已。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-9 10:11:45 | 显示全部楼层
回复【16楼】zyw19987:
---------------------------------
嗯 其实 我也是就是要那种一劳永逸的效果的,你说的方法可以吗?
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-10 10:22:52 | 显示全部楼层
回复【17楼】可乐虎:
---------------------------------
我的算勉强可以,层与层间互不相干,动态显示只有一个函数。增加层或消减层不影响其他。
存在的问题:动态显示内容布局单一。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-10 21:56:37 | 显示全部楼层
回复【18楼】zyw19987:
---------------------------------
我现在被用菜单索引做的显示界面 困住了哦,我要在某些显示页面间再添加新的页面,但要改好多东西啊!怎么办呢?急急啊
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-14 15:04:05 | 显示全部楼层
回复【19楼】可乐虎:
---------------------------------
菜单结构体没有封装好吧,菜单内核通用性不强?
方便就把你的代码放出来,让各位了会诊一下。哈哈
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-14 22:25:01 | 显示全部楼层
回复【20楼】zyw19987:
---------------------------------
typedef struct
{
 u8 current;//函数索引号
 u8 start;  //开始索引号
 u8 up;     //上翻索引号
 u8 down;   //下翻索引号
 u8 cut;    //切换索引号
 void (*current_operation)(void); //函数指针(与函数索引号对应)
} KEY_TABLE;

KEY_TABLE   menu[30] =
{
//      开 上 下 切 显示函数
  {0 ,1 ,0 ,0 ,5 ,display0 },    
    {1 ,4 ,2 ,3 ,1 ,display1 },
    {2 ,4 ,3 ,3 ,2 ,display2 },
    {3 ,4 ,2 ,2 ,3 ,display3 },
    {4 ,1 ,4 ,4 ,0 ,display4 },     
    {5 ,9 ,8 ,6 ,0 ,display5 },
    {6 ,14,5 ,7 ,0 ,display6 },
    {7 ,16,6 ,8 ,0 ,display7 },
    {8 ,27,7 ,5 ,0 ,display8 },
    {9 ,0 ,5 ,10,5 ,display9 },
    {10,0 ,9 ,11,5 ,display10},
    {11,12,10,12,5 ,display11},
    {12,0 ,11,13,5 ,display12},
    {13,0 ,12,13,5 ,display13},
    {14,0 ,6 ,15,6 ,display14},
    {15,16,14,15,6 ,display15}, 
};
太长了,只贴了一部分,比如说我要在display1和display2间插入一个新的显示页面。那么从display2之后的所有菜单索引值就都得调整啊,太痛苦了,怎么办?谢谢
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2013-6-14 22:36:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-15 09:54:19 | 显示全部楼层
回复【22楼】nonplus:
---------------------------------
嗯 先谢了。 明白你的意思。不过 这样显得有点乱啊。能不能设计一个更好更方便的结构呢?网上有多级菜单的改进方法,不过看不懂~~也不晓得能不能达到我的目的。
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-15 10:01:33 | 显示全部楼层
回复【21楼】可乐虎:
---------------------------------
 { 8,   9, 10,  11, 12, 13,(DisMenuPhoneInit)},  //号码设置 
  { 9,   0,  0,   0,  0,  0,(fake)},      //(DisMenuSet) 
  { 10,  0,  0,   0,  0,  0,(DisMenuEsc)},  //返回键 
  { 11,  0,  0,   0,  0,  0,(DisMenuPhoneEnter)},  //回车键    
  { 12,  0,  0,   0,  0,  0,(DisMenuUp)},  //(DisMenuUp) 
  { 13,  0,  0,   0,  0,  0,(DisMenuDown)},  //(DisMenuDown)

我这个会很痛苦吗?

每一层都有6个,没有的写一个空函数在那待着。

将8,14,20,........做成枚举其他的9,10,11,12,13就是   枚举成员+1 +2  +3 同样的偏移量。


还觉得难吗?

不过要提醒的是代码的通用性是要空间来换的。












回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-15 10:07:26 | 显示全部楼层
回复【21楼】可乐虎:
---------------------------------
你这的别说让我去改痛苦,我看着不改都痛苦哈哈哈
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2013-6-15 12:32:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-15 19:58:58 | 显示全部楼层
回复【24楼】zyw19987:
---------------------------------
{ 8,   9, 10,  11, 12, 13,(DisMenuPhoneInit)},  //号码设置 
  { 9,   0,  0,   0,  0,  0,(fake)},      //(DisMenuSet) 
  { 10,  0,  0,   0,  0,  0,(DisMenuEsc)},  //返回键 
  { 11,  0,  0,   0,  0,  0,(DisMenuPhoneEnter)},  //回车键    
  { 12,  0,  0,   0,  0,  0,(DisMenuUp)},  //(DisMenuUp) 
  { 13,  0,  0,   0,  0,  0,(DisMenuDown)},  //(DisMenuDown)

问题1:我发现你的这种写法 会不会造成操作上显得有点“不人性化”呢?比如没法直接从11状态转到12状态,而必须先从11状态转到0状态。
问题2:还有在9、10、11、12、13这几个状态下,按任意键都会转到0状态,是吧?这有点不合适吧?
问题3:你说的“每层都有6个,没有的写一个空函数在那待着”这个6是怎么来的呢?因为有5个按键?
望继续解答,谢谢!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-16 13:38:45 | 显示全部楼层
回复【27楼】可乐虎:
---------------------------------
问题一:8永远是号码设置层的起点,所有11动作结束后,更新后回到起点8,但回到的意思只是索引号而已,显示内容并没有回到8,这样也保证了12的起点又是8,对于人机交互没有影响,从编程者来讲这“更人性化”,因为你在同一层下所有的动作都是同一个起点,不需考虑更多的状态不同处理。
问题二:问题一中已经回答了,号码设置层的起点永远是8,并不会停在9,10,11,12,13,这几个只是一个过场,所以那写0还是其他任意值都是一样,只是为了对齐。
问题三:5个按键,加一个初始化层(起点层)就是6。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-16 20:59:23 | 显示全部楼层
回复【28楼】zyw19987:
---------------------------------
谢了,大概明白你的意思了。不过还是有点困惑:
1、你的索引号可以和显示界面不同步吗?因为你说“但回到的意思只是索引号而已,显示内容并没有回到8”。我的显示界面和索引号始终是同步的,每一个页面都会对应一个索引号。
2、你的显示函数比如:DisMenuPhoneInit、fake、DisMenuEsc这些,难道它们里面还有操作索引号的代码吗?

要不然怎么会有你说的“所有11动作结束后,更新后回到起点8,但回到的意思只是索引号而已”?
之所以这样问,是因为我的显示函数比如display里面仅仅只有显示内容。如{0 ,1 ,0 ,0 ,5 ,display }里的函数内容如下:

void display(void)  
{
lcd12864_display_string(1,1,"至此亮度调节完毕");
lcd12864_display_string(2,1,",再按切换键返回");
lcd12864_display_string(3,1,"首页。整个调节过");
lcd12864_display_string(4,1,"程结束!HAVE FUN!");
}

3、能不能提供下你的显示函数(如:DisMenuPhoneInit等等)的具体内容我看看呢?估计看了 我就彻底明白了呢!
4、你的这种方法看起来应该很不错的,但能解决要在某页面间插入新页面的问题吗?
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-16 23:26:42 | 显示全部楼层
回复【29楼】可乐虎:
---------------------------------
菜单是有堆栈的概念的,我上面的函数很多都是通用的,DisMenuPhoneInit这种是这一层的初始化,里面是对这一层重要的变量进行初始化,比如他的成员个数,动态输入量的宽度,等等。而我上面说的回到原来的起点并不意味着我就一定会执行DisMenuPhoneInit,这个函数只有在进入改层或从子层返回这个层的时候会执行。本层内部的按键操作时不会触发他的执行。另外显示函数也都是通用的,显示函数只有三个:图标显示,文字显示,和动态输入显示。采用枚举的方式可以解决你想做的插入新页面问题。
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-16 23:33:05 | 显示全部楼层
回复【29楼】可乐虎:
---------------------------------
/***************************号码设置层显示信息**************************/
   // |-----------> 语言种类
   // |    |------> 菜单项目条数 
DisplayStruct const honeItem[LANGNUM][2]=
{
{ //{x,y,width,height,size,content}
//Chinese
{15,55,112,32, Str_SIZE16, (u8*)"1.用户接警号码"}, //用户接警号码
{15,75,112,32, Str_SIZE16, (u8*)"2.用户短信号码"}, //用户短信号码
},
{ //{x,y,width,height,size,content}
//English
{15,55,216,32, Str_SIZE16, (u8*)"1.Calling receiving numbers"}, //用户接警号码
{15,75,184,32, Str_SIZE16, (u8*)"2.SMS receiving numbers"}, //用户短信号码
}
};
显示内容在这里就封装好了。

//菜单结构体数组
const LXMenu MenuS[MenuLayers]=
{
MenuWhat(0x88, 8,  honeHelpT, honeItem),
}
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-17 21:29:04 | 显示全部楼层
回复【31楼】zyw19987:
---------------------------------
这位大哥,看了你的菜单 我发现自己写的太低级了。  而且你的菜单思想应该能解决我遇到的所有问题啊,比如在多个不同页面输入不同长度的数据等问题,虽然我也实现了,肯定没你的好。在此  小弟恳请能不能把你的菜单代码完整的给份给我参考下呢?我主要是想了解里面的设计思想。方便的话 直接发我邮箱吧(QQ1982211588),不方便的话 能推荐点资料也行,实在感谢~~
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-11-21
在线时间
1 小时
发表于 2013-6-18 08:39:25 | 显示全部楼层
回复【32楼】可乐虎:
---------------------------------
工程代码没法公开,准备有时间写一个菜单开源文件。
参考资料可以去阿莫那里找,有不少好的思路,我也是参考多个开源的,结合自己的想法和需求写的。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-6-18 08:54:11 | 显示全部楼层
回复【33楼】zyw19987:
---------------------------------
嗯 多谢了,期待你的菜单开源文件!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

86

主题

984

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2013-4-15
在线时间
163 小时
发表于 2014-5-28 14:23:42 | 显示全部楼层
回复【33楼】zyw19987:
---------------------------------
期待开源,不知道啥时候能开源
合肥-文盲
回复 支持 反对

使用道具 举报

86

主题

984

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2013-4-15
在线时间
163 小时
发表于 2014-8-15 15:46:15 | 显示全部楼层
回复【7楼】zyw19987:
---------------------------------
这不就是那个《一个占用内存极少的菜单系统》里面的思路吗
合肥-文盲
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-3 17:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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