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

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

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

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])(); 
}


目录
相关文章
|
C语言
实现一个简单的事件驱动处理框架
实现一个简单的事件驱动处理框架
325 0
|
JSON 人工智能 自然语言处理
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
情感理论模型
情感理论模型
1229 0
|
存储 固态存储
用阿里云“无影”搭建《黑神话:悟空》电脑环境
《黑神话:悟空》是一款高质国风游戏,对硬件有一定要求,例如64位系统、Intel Core i5-8400或AMD Ryzen 5 1600处理器、NVIDIA GeForce GTX 1060 6GB或AMD Radeon RX 580 8GB显卡以及16GB RAM等。阿里云无影是一种云电脑服务,用户可通过无影盒子连接云端电脑实现远程办公或娱乐,主要面向企业用户降低成本并提供便捷方案。无影云电脑提供含基本配置与功能的试用版,允许用户免费体验一个月,以便评估产品适用性。试用涉及的具体步骤包括访问阿里云免费试用页面、配置相关信息如时长用尽策略及分配用户邮箱等,配置完成后可立即购买开始体验。
1722 3
用阿里云“无影”搭建《黑神话:悟空》电脑环境
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
895 3
|
iOS开发
iOS 15后设置导航控制器的导航条背景色无效的问题处理
iOS 15后设置导航控制器的导航条背景色无效的问题处理
677 0
|
传感器 安全 物联网
一个非常优秀的跨平台物联网开发常用的网络请求库libcurl
一个非常优秀的跨平台物联网开发常用的网络请求库libcurl
393 1
|
存储 算法 物联网
MCU串口命令解析器的实现
MCU串口命令解析器的实现
376 1
|
消息中间件 物联网 Linux
开源项目: 造一系列常用的Linux应用API轮子
开源项目: 造一系列常用的Linux应用API轮子
243 0
开源项目: 造一系列常用的Linux应用API轮子