做vi设计的网站,如何建设自己的网站,武威市凉州区建设局网站,建立平台型组织第一步需要做什么项目背景
本次的水墨屏幕项目需要做一个多级菜单的显示#xff0c;所以写出来一起学习#xff0c;本篇文章不单单适合于水墨屏#xff0c;像0.96OLED屏幕也适用#xff0c;区别就是修改显示函数。
设计思路
多级菜单的实现#xff0c;一般有两种实现的方法 1.通过双向…项目背景
本次的水墨屏幕项目需要做一个多级菜单的显示所以写出来一起学习本篇文章不单单适合于水墨屏像0.96OLED屏幕也适用区别就是修改显示函数。
设计思路
多级菜单的实现一般有两种实现的方法 1.通过双向链表实现 2.通过数组查表实现 两种方法的思路都是把所有的界面连接在同一个连接中上级菜单跳转下级菜单。 数组查表比较简单此次的项目就用数组查表的方法。
实现代码
1.确定好菜单的逻辑也就是菜单的显示关系。
在开机的时候显示开机界面然后按下任意按键就跳转到菜单显示可以通过上按键下按键和确认按键选择相对应的显示。 2.代码逻辑实现。 首先定义一个结构体分别为上按键下按键和确认按键当前页面索引号当前页面索引号执行的函数。
typedef struct
{uchar current;//当前页面索引号uchar up; //向上翻索引号uchar down; //向下翻索引号uchar enter; //确认索引号void (*current_operation)(); //当前页面索引号执行的函数,指针函数
} key_table;数组方法实现多级菜单的原理就是把每一个显示界面编上一个号码称为当前页面索引号。比如开机显示界面为0菜单显示为1。每当选择到一个号码就去运行前页面索引号函数也就是显示相对应的界面。例如下面的数组key_table table【】当选择到0编码就去运行(*fun_0)这个指针函数把要显示的开机界面写在(*fun_0)就可以。
key_table table[30]
{//第0层{0,1,1,1,(*fun_0)},//开机界面//第1层{1,2,2, 2,(*fun_a1)},//主菜单界面{2,6,3, 7,(*fun_b1)},//显示WIFI下划线{3,2,4, 8,(*fun_c1)},//显示万年历下划线{4,3,5, 9,(*fun_d1)},//显示时钟下划线{5,4,6, 10,(*fun_e1)},//显示小说下划线{6,5,2, 0,(*fun_f1)},//显示返回下划线//第2层{7,7,7,1,(*fun_a21)}, //连接WIFI{8,8,8,1,(*fun_b21)}, //显示时间{9,9,9,1,(*fun_c21)}, //倒计时};//开机界面
void fun_0()
{u2_printf(hello world\r\n);Refresh();//刷新屏幕EPD_ShowString(125,55,Hello,24,BLACK); EPD_PartDisplay(Image_BW);delay_ms(20);
}那么是怎么实现上级菜单跳转到下级菜单的尼比如初始显示欢迎界面的状态下按下不同按键后通过数组查表确定要跳转到的索引号然后根据索引号通过函数指针执行索引号对应的显示函数即实现了一次页面切换。然后就是在新的页面状态收到下一个按钮指令再切换到下一个显示状态。 我们看下key_table table[30]数组里面的元素。 //第0层{0,1,1,1,(*fun_0)},//开机界面//第1层{1,2,2, 2,(*fun_a1)},//主菜单界面{2,6,3, 7,(*fun_b1)},//显示WIFI下划线{3,2,4, 8,(*fun_c1)},//显示万年历下划线{4,3,5, 9,(*fun_d1)},//显示时钟下划线{5,4,6, 10,(*fun_e1)},//显示小说下划线{6,5,2, 0,(*fun_f1)},//显示返回下划线//第2层{7,7,7,1,(*fun_a21)}, //连接WIFI{8,8,8,1,(*fun_b21)}, //显示时间{9,9,9,1,(*fun_c21)}, //倒计时元素是一开始我们定义好的结构体依次为当前页面索引号上按键下按键确认按键执行的函数。当我们在索引号1的主菜单界面按上按键下按键确认按键都会跳转到索引号2的显示WIFI下划线界面然后按上按键就去跳转到索引号6的显示返回下划线界面或者按下按键跳转到索引号3的显示WIFI下划线界面,按确认键就跳转到第2层的连接WIFI。在索引号7的连接WIFI界面中按上按键和下按键都是跳到当前索引号7从而显示按键按下不跳其他界面的功能只有按确认按键才会跳到当前索引号1的主菜单界面。 通过分析不难发现这些数组在空间上的关系 菜单界面的切换。比如初始显示欢迎界面的状态下按下不同按键后通过数组查表确定要跳转到的索引号然后根据索引号通过函数指针执行索引号对应的显示函数即实现了一次页面切换。 然后就是在新的页面状态收到下一个按钮指令再切换到下一个显示状态。
效果可以看看视频 多级菜单演示 代码链接https://pan.baidu.com/s/1XddINn6Qos5-4r5XtIuwXQ?pwdz754 提取码z754