一、映射表在串口数据解析中的应用
1、数据结构
typedef struct { char CMD[CMDLen]; unsigned char (*cmd_operate)(char *data); }Usart_Tab;
2、指令、函数映射表
static const Usart_Tab InstructionList[CMDMax]= { {"PWON",PowOn}, {"PWOFF",PowOff}, {"HDCP",HdcpOnOff}, {"/V",QueryKaVersion}, {"EDIDUpgrade",UpdataEDID}, {"Psave",Psave}, {"Precall",Precall}, {"Pclear",Pclear}, };
3、串口解析函数实现
unsigned char DataAnalysis(char *buf) { unsigned char i,Result; char *NEXT=NULL; for(i=0;i
二、映射表在UI设计中的应用
1、数据结构
菜单枚举:
typedef enum { stage1=0, stage2, stage3, stage4, stage5, stage6, stage7, stage8, stage9, }SCENE;
数据结构:
typedef struct { void (*current_operate)(); //当前场景的处理函数 SCENE Index; //当前场景的标签 SCENE Up; //按下Up键跳转的场景 SCENE Down; //按下Down键跳转的场景 SCENE Right; //按下Left键跳转的场景 SCENE Left; //按下Right键跳转的场景 }STAGE_TAB;
2、函数映射表
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}, };
3、定义两个变量保存当前场景和上一个场景
char current_stage=stage1; char prev_stage=current_stage;
4、按下Up按键 跳转到指定场景current_stage的值根据映射表改变
current_stage =stage_tab[current_stage].Up;
5、场景改变后 根据映射表执行相应的函数Handler
if(current_stage!=prev_stage) { stage_tab[current_stage].current_operate(); prev_stage=current_stage; }
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136486 -
串口
+关注
关注
14文章
1549浏览量
76332 -
数据结构
+关注
关注
3文章
573浏览量
40112
原文标题:C语言映射表在串口数据解析中的应用
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
imx6ul开发板的静态地址映射表在哪几个文件中
在驱动编程的时候想了解一下静态地址映射表在哪几个文件中,网上查询了解到在内核文件的arch/arm中但是进去imx6平台查找出来的文件不确定,在
发表于 01-10 06:00
STM32H7 DMA请求映射表记录在哪里可以找到呢?
STM32H7 DMA 请求映射表记录在哪里?我们想在 USART1 RX 和 TX 上使用 DMA。在 STM32H7 的 STm32Cube 中,例如
发表于 01-04 08:04
labview串口数据解析
本文主要对labview串口数据解析进行了分析。首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分
发表于 01-15 15:21
•5.8w次阅读
51单片机(STC15W408AS)映射printf函数 串口收发实现
前提:实现串口收发数据/************************************************* *函数名称:char putchar(char c
发表于 11-20 17:51
•8次下载
评论