前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式开发的一个骚操作!

嵌入式开发的一个骚操作!

作者头像
李肖遥
发布2024-04-18 13:09:42
630
发布2024-04-18 13:09:42
举报

目录

  • 1 映射表在串口数据解析中的应用
    • 1.1 数据结构
  • 1.2 指令、函数映射表
    • 1.3 串口解析函数实现
  • 2 映射表在UI设计中的应用
    • 2.1 数据结构
    • 2.2 函数映射表
    • 2.3 定义两个变量保存当前场景和上一个场景
    • 2.4 按下Up按键 跳转到指定场景current_stage的值根据映射表改变
    • 2.5 场景改变后 根据映射表执行相应的函数Handler

1 映射表在串口数据解析中的应用

1.1 数据结构

代码语言:javascript
复制
typedef struct 
{
    char CMD[CMDLen];
    unsigned char (*cmd_operate)(char *data);
}Usart_Tab;

1.2 指令、函数映射表

代码语言:javascript
复制
static const Usart_Tab InstructionList[CMDMax]=
{
    {"PWON",PowOn},
    {"PWOFF",PowOff},
    {"HDCP",HdcpOnOff},
    {"/V",QueryKaVersion},
    {"EDIDUpgrade",UpdataEDID},
    {"Psave",Psave},
    {"Precall",Precall},
    {"Pclear",Pclear},
};

1.3 串口解析函数实现

代码语言:javascript
复制
unsigned char DataAnalysis(char *buf)
{
  unsigned char i,Result;
  char *NEXT=NULL;
  for(i=0;i<CMDMax;i++)
  {
    NEXT=StrCmp(buf,(char*)InstructionList[i].CMD);
    if(NEXT!=NULL)
    {
      usartfuncp=InstructionList[i].cmd_operate;
      Result=(*usartfuncp)(NEXT);
    }
  }
  return Result;
}

2 映射表在UI设计中的应用

2.1 数据结构

菜单枚举:

代码语言:javascript
复制
typedef enum
{
  stage1=0,
  stage2,
  stage3,
  stage4,
  stage5,
  stage6,
  stage7,
  stage8,
  stage9,
}SCENE;

数据结构:

代码语言:javascript
复制
typedef struct {
  void (*current_operate)(); //当前场景的处理函数
  SCENE Index;               //当前场景的标签
  SCENE Up;                  //按下Up键跳转的场景
  SCENE Down;                //按下Down键跳转的场景
  SCENE Right;               //按下Left键跳转的场景
  SCENE Left;                //按下Right键跳转的场景
}STAGE_TAB;

2.2 函数映射表

代码语言:javascript
复制
STAGE_TAB stage_tab[]={
  #.    operate       Index    Up     Down    Left   Right   
  {Stage1_Handler,  stage1,  stage4,  stage7,  stage3, stage2},
  {Stage2_Handler,  stage2,  stage5,  stage8,  stage1, stage3},
  {Stage3_Handler,  stage3,  stage6,  stage9,  stage2, stage1},
  {Stage4_Handler,  stage4,  stage7,  stage1,  stage6, stage5},
  {Stage5_Handler,  stage5,  stage8,  stage2, stage4,  stage6},
  {Stage6_Handler,  stage6,  stage9,  stage3, stage5,  stage4},
  {Stage7_Handler,  stage7,  stage1,  stage4, stage9,  stage8},
  {Stage8_Handler,  stage8,  stage2,  stage5, stage7,  stage9},
  {Stage9_Handler,  stage9,  stage3,  stage6, stage8,  stage7},
};

2.3 定义两个变量保存当前场景和上一个场景

代码语言:javascript
复制
char current_stage=stage1;
char prev_stage=current_stage;

2.4 按下Up按键 跳转到指定场景current_stage的值根据映射表改变

代码语言:javascript
复制
current_stage =stage_tab[current_stage].Up;

2.5 场景改变后 根据映射表执行相应的函数Handler

代码语言:javascript
复制
if(current_stage!=prev_stage)
{
  stage_tab[current_stage].current_operate();
  prev_stage=current_stage;
}

文章来源:物联网IoT技术

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术让梦想更伟大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 映射表在串口数据解析中的应用
    • 1.1 数据结构
    • 1.2 指令、函数映射表
      • 1.3 串口解析函数实现
      • 2 映射表在UI设计中的应用
        • 2.1 数据结构
          • 2.2 函数映射表
            • 2.3 定义两个变量保存当前场景和上一个场景
              • 2.4 按下Up按键 跳转到指定场景current_stage的值根据映射表改变
                • 2.5 场景改变后 根据映射表执行相应的函数Handler
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档