加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS福建省南平市 西门子代理商——西门子华南一级总代理

更新时间
2024-11-16 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍

1 多级菜单

多级菜单的实现,大体分为两种设计思路:

  • 通过双向链表实现
  • 通过数组查表实现
  • 总体思路都是把菜单的各个界面联系起来,可以从上级菜单跳到下级菜单,也可从下级菜单返回上级菜单。

    数组查表的方式比较简单,易于理解,本篇就来使用数组查表发在RVB2601上实现多级菜单的显示。

    2 代码实现

    2.1 数组查表

    首先需要定义一个结构体

    typedefstruct
    {
    uchar current;
    uchar up;//向上翻索引号
    uchar down;//向下翻索引号
    uchar enter;//确认索引号
    void (*current_operation)();
    } key_table;
  • current:当前页面的索引号
  • up:按下“向上翻“按钮后要跳转到的页面索引号
  • down:按下“向下翻“按钮后要跳转到的页面索引号
  • enter:按下“确认“按钮后要跳转到的页面索引号
  • current_operation:当前页面的索引号要执行的显示函数,这是一个函数指针
  • 注意:对于菜单显示的操作,用到了3个按键,分别是向下、向下和确认,如果单片机上的IO资源较为紧张,还可以把“向上翻”按钮省去,只通过“向下翻”按钮来实现循环访问,对应的结构体也可以去掉该成员。

    然后定义一个表,用来定义各个页面间如何跳转

    key_table table[30]=
    {
    //第0层
    {0,0,0,1,(*fun_0)},

       //第1层
    {1,4,2, 5,(*fun_a1)},
    {2,1,3, 9,(*fun_b1)},
    {3,2,4,13,(*fun_c1)},
    {4,3,1, 0,(*fun_d1)},

       //第2层
    {5,8,6,17,(*fun_a21)},
    {6,5,7,18,(*fun_a22)},
    {7,6,8,19,(*fun_a23)},                
    {8,7,5, 1,(*fun_a24)},

    { 9,12,10,20,(*fun_b21)},
    {10, 9,11,21,(*fun_b22)},
    {11,10,12,22,(*fun_b23)},                
    {12,11, 9, 2,(*fun_b24)},

    {13,16,14,23,(*fun_c21)},
    {14,13,15,24,(*fun_c22)},                
    {15,14,16,25,(*fun_c23)},                
    {16,15,13, 3,(*fun_c24)},

       //第3层
    {17,17,17,5,(*fun_a31)},                
    {18,18,18,6,(*fun_a32)},                
    {19,19,19,7,(*fun_a33)},

    {20,20,20, 9,(*fun_b31)},                
    {21,21,21,10,(*fun_b32)},                
    {22,22,22,11,(*fun_b33)},

    {23,23,23,13,(*fun_c31)},                
    {24,24,24,14,(*fun_c32)},                
    {25,25,25,15,(*fun_c33)},
    };

    这里解释一下该表是如何工作的:

  • 此表,表示了4级菜单的显示关系(注意第0层其实只是一个欢迎界面)
  • 第一层菜单,只有4个选项,因此这里只列了4行(注意Zui后一个选项用作返回上一级,无实际内容含义)
  • 第二层菜单,就是对第一层菜单中的3个实际的选项进行进一步的介绍,每种介绍又有4个子项(注意Zui后一个选项也是用作返回上一级,无实际内容含义),因此,这里的第二层菜单列了3x4=12行
  • 第三层菜单,又是对第二层菜单中的子项进行进一步的介绍(3个分类,每类有3个子项),所以第三层菜单列了9行
  • 注意数组中每一行的第1个数组,是索引号,先列举一个实际的例子进行分析:

  • 相关产品

    联系方式

    • 电  话:15903418770
    • 联系人:张经理
    • 手  机:15915421161
    • 微  信:15915421161