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

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

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

详细介绍

上图就是一个实际的4级菜单要显示的内容,每个条目前,标记了索引号(0~25),即对应数组在定义的索引号。

比如数组关于第0层和第1层的定义:

//第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)},
  • 先看第一行:索引是0,显示欢迎界面;后面的两个0表示此时按“上翻”和“下翻”无效,继续显示欢迎界面;再后面的1表示按下“确认”按钮后,跳转到索引1处(即显示第1级目录,且指向第1级的第1个子项);Zui后是此索引要显示的具体内容,fun_0就是控制屏幕显示欢迎界面
  • 再看第二行:索引是1,显示第1级目录,且指向第1级的第1个子项(天气);后面的4表示此时按“上翻”跳转到索引4,即显示第1级目录,且指向第1级的第4个子项(Return);再后面的2表示此时按“下翻”跳转到索引2,即显示第1级目录,且指向第1级的第2个子项(音乐);再后面的5表示按下“确认”按钮后,跳转到索引5处(即显示第2级目录,且指向第2级的第1个子项-杭州);Zui后是此索引要显示的具体内容,fun_a1就是控制屏幕显示第1级目录,且指向第1级的第1个子项(天气)
  • 其它行的含义与之类似
  • 通过分析,不难发现,这些数组在空间上的关系:

    对于菜单的Zui底层,因为没有上翻和下翻的功能需求,因此每行的前3个数字都是当前的索引号:

    //第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)},
    2.2 具体的显示函数

    对于函数要显示的具体内容,根据自己的实现需要显示即可。

    这里我使用的是OLED屏幕,借助U8g2图形库进行内容显示,以下是部分显示示例:

    /*********第1层***********/
    void fun_a1()  
    {
    u8g2_DrawStr(&u8g2,0,16,">");
    u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    u8g2_DrawStr(&u8g2,16,64,"<--");
    }

    void fun_b1()  
    {
    u8g2_DrawStr(&u8g2,0,32,">");
    u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    u8g2_DrawStr(&u8g2,16,64,"<--");
    }

    void fun_c1()    
    {
    u8g2_DrawStr(&u8g2,0,48,">");
    u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    u8g2_DrawStr(&u8g2,16,64,"<--");
    }

    void fun_d1()    
    {
    u8g2_DrawStr(&u8g2,0,64,">");
    u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    u8g2_DrawStr(&u8g2,16,64,"<--");
    }

    /*********第2层***********/
    void fun_a21()    
    {
    u8g2_DrawStr(&u8g2,0,16,">");
    u8g2_DrawStr(&u8g2,16,16,"* HangZhou");
    u8g2_DrawStr(&u8g2,16,32,"* BeiJing");
    u8g2_DrawStr(&u8g2,16,48,"* ShangHai");
    u8g2_DrawStr(&u8g2,16,64,"<--");
    }
    //省略...
    2.3 按键切换页面

    页面的切换,这里里简单的按钮轮询为例,比如初始显示欢迎界面的状态下,按下不同按键后,通过数组查表,确定要跳转到的索引号,然后根据索引号,通过函数指针执行索引号对应的显示函数,即实现了一次页面切换。

    然后,就是在新的页面状态,收到下一个按钮指令,再切换到下一个显示状态。


    相关产品

    联系方式

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