目录
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 数据结构
typedefstruct { charCMD[CMDLen]; unsignedchar(*cmd_operate)(char*data); }Usart_Tab;
1.2 指令、函数映射表
staticconstUsart_TabInstructionList[CMDMax]= { {"PWON",PowOn}, {"PWOFF",PowOff}, {"HDCP",HdcpOnOff}, {"/V",QueryKaVersion}, {"EDIDUpgrade",UpdataEDID}, {"Psave",Psave}, {"Precall",Precall}, {"Pclear",Pclear}, };
1.3 串口解析函数实现
unsignedcharDataAnalysis(char*buf) { unsignedchari,Result; char*NEXT=NULL; for(i=0;i2 映射表在UI设计中的应用
2.1 数据结构
菜单枚举:
typedefenum { stage1=0, stage2, stage3, stage4, stage5, stage6, stage7, stage8, stage9, }SCENE;数据结构:
typedefstruct{ void(*current_operate)();//当前场景的处理函数 SCENEIndex;//当前场景的标签 SCENEUp;//按下Up键跳转的场景 SCENEDown;//按下Down键跳转的场景 SCENERight;//按下Left键跳转的场景 SCENELeft;//按下Right键跳转的场景 }STAGE_TAB;2.2 函数映射表
STAGE_TABstage_tab[]={ #.operateIndexUpDownLeftRight {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 定义两个变量保存当前场景和上一个场景
charcurrent_stage=stage1; charprev_stage=current_stage;2.4 按下Up按键 跳转到指定场景current_stage的值根据映射表改变
current_stage =stage_tab[current_stage].Up;
2.5 场景改变后 根据映射表执行相应的函数Handler
if(current_stage!=prev_stage) { stage_tab[current_stage].current_operate(); prev_stage=current_stage; }审核编辑:黄飞
-
嵌入式开发
+关注
关注
18文章
1021浏览量
47505 -
函数
+关注
关注
3文章
4303浏览量
62411 -
串口数据
+关注
关注
0文章
33浏览量
13867 -
数据结构
+关注
关注
3文章
573浏览量
40087
原文标题:嵌入式开发的一个骚操作!你用过吗?
文章出处:【微信号:knifewheat,微信公众号:小麦大叔】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论