多按键多界面二维数组表驱动设计

简介: 多按键多界面二维数组表驱动设计

键盘是我们经常能在嵌入式产品上看到的输入设备之一。

640.png

一般情况下,键盘通常会有指定的按键码。根据用户按下的按键来执行一些用户想要执行的功能。因此,这种模式就可以通过switch语句来进行处理。但是,如果当我们设计的应用程序上拥有很多个界面的时候,有些按键只有在特定的界面上才生效的情况下,这时候使用函数指针则会比switch语句更为优雅。在这种情况下,推荐使用函数指针的二维数组的形式来实现,以下是一个很好的例子:

#define PAGE_NUMBER 12
#define KEY_NUMBER  5
int function_f1_op(void);
int function_f2_op(void);
int function_f3_op(void);
int function_f4_op(void);
...
int function_null_op(void);
int function_menu_op(void);
/*跳转表定义*/
static int (*const jump_table[page][key])(void) = 
{
    {function_f1_op, function_f2_op, function_f3_op, function_f4_op},
    {function_f5_op, function_f6_op, function_f7_op, function_f8_op},
 ...
    {function_esc_op, function_enter_op, function_menu_op ..., function_tab_op}
};
/*按键处理函数*/
int key_handler(uint8_t page,uint8_t key)
{
    assert (key  < KEY_NUMBER);
    assert( page < PAGE_NUMBER);
    return (*jump_table[page][key])(); 
}


目录
相关文章
|
5月前
LabVIEW 在运行时初始化数组并允许用户编辑值
LabVIEW 在运行时初始化数组并允许用户编辑值
168 0
|
2月前
|
开发框架 前端开发 JavaScript
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
|
5月前
|
Windows
MyKeymap按键映射工具
MyKeymap能减少键鼠切换、实现全键盘操作,让「编辑文字」和「窗口管理」更快捷。提升工作学习中写代码、编辑文字、整理笔记、管理窗口的效率,掌握MyKeymap后,能让使用Windows的日常,拥有流畅、舒适、顺滑的操作体验。
218 2
MyKeymap按键映射工具
|
5月前
LabVIEW对多个同一类型控件进行操作
LabVIEW对多个同一类型控件进行操作
34 0
|
5月前
LabVIEW在运行时调整表控件列宽
LabVIEW在运行时调整表控件列宽
49 0
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能第二章
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能第二章