腱鞘炎挂什么科室| 输血前常规检查是什么| 南宁晚上有什么好玩的地方| 嘴里有粘液是什么原因| 怀孕后为什么会生化| 户籍所在地是什么| 意外是什么意思| 小月子吃什么好| 缺锌有什么症状| 羊水穿刺是查什么的| 死库水是什么| 68岁属什么生肖| ot是什么| 敛肺是什么意思| 皮赘用什么药膏去除| 狗篮子什么意思| 绿意盎然是什么意思| 喉咙有痰是什么原因| sakose是什么牌子| 阑尾是干什么用的| hp检查是什么意思| 女人来月经有血块是什么原因| 双侧乳腺腺病是什么意思| 用什么水和面烙饼最软| 7.1什么星座| 凉茶是什么茶| 白带带血丝是什么原因| 曜字五行属什么| 枸杞加什么泡水喝壮阳| 什么是kpi| 照看是什么意思| 揽子是什么意思| 落下帷幕什么意思| 为什么有的人皮肤黑| 为什么眼睛会肿而且痛| 苍耳是什么东西| 梦见办酒席是什么意思| 女人气血不足吃什么补| 苏轼的弟弟叫什么| 龙骨是什么动物的骨头| 什么的温度| 敌是什么生肖| 什么都不放的冬瓜清汤| 59是什么意思| 气管炎咳嗽吃什么药最有效| 保鲜卡是什么原理纸片| 头疼吃什么药好| 梦见打老婆是什么预兆| 柠檬茶喝了有什么好处| 何炅的老婆叫什么名字| 植树节是什么时候| 2039年是什么年| 身在其位必谋其职是什么意思| 小青蛙吃什么| 冈本是什么| 一九四六年属什么生肖| 痤疮用什么药膏最有效| 一什么边| vans属于什么档次| 拉肚子可以吃什么| 小脑的功能是什么| 梦见猫咬我是什么意思| 反应性细胞改变是什么意思| 9五行属什么| 黄昏是什么时辰| 白细胞酯酶阳性是什么意思| 胡人是什么民族| 阴虱有什么症状| 5月23日是什么日子| 黑吃黑是什么意思| 坐骨神经痛吃什么药好得快| 画龙点睛是什么意思| 1981年五行属什么| 肾素活性高是什么原因| 领养孩子需要什么条件| 戒色是什么意思| 时兴是什么意思| 路程等于什么| 筋头巴脑是什么肉| cd56阳性是什么意思| 复合维生素b片主治什么病| hr医学上是什么意思| 胃有问题挂什么科| 纤维硬结灶是什么意思| 上海五行属什么| 羡慕的什么| 一天什么时候最热| 杞子配什么增强性功能| 慢性病是什么意思| 今天突然拉稀拉出血什么原因| basic是什么意思| 看胰腺挂什么科| 维多利亚是什么意思| 检查眼睛挂什么科| 儿童测骨龄挂什么科| 日行一善是什么意思| 吃知柏地黄丸有什么副作用| 脚底抽筋是什么原因引起的| 淋巴细胞降低说明什么| 老年人尿血是什么原因| 海绵是什么材料做的| 背部疼痛挂什么科| 美女是指什么生肖| 疫苗是什么| 脾肾阳虚吃什么药最好| 浮粉是什么原因引起的| 油菜花什么时候开| 清炖排骨放什么调料| 丁丁是什么| 内痔疮吃什么药最好| 祝好是什么意思| 接盘是什么意思| 核磁共振什么时候出结果| 检查是否怀孕挂什么科| 桃花依旧笑春风什么意思| 猫喜欢什么样的人| 肠胀气是什么原因引起的怎么解决| 金匮肾气丸主治什么病| 葛根粉有什么功效和作用| 史铁生为什么瘫痪| 突然全身抽搐是什么病| 惊厥是什么病| 白细胞低吃什么药可以增加白细胞| 部分导联st段改变是什么意思| 新生儿嘴唇发紫是什么原因| 草字头的字和什么有关| 腿老是抽筋是什么原因| 什么的绽放| 十月23日是什么星座| 梦见别人结婚是什么征兆| 百合和什么搭配最好| 高半胱氨酸是什么意思| fdp偏高是什么原因| 寒凝血瘀吃什么中成药| 腿抖是什么病的预兆| 游戏hp是什么意思| 冰袋里面装的是什么| 夏占生女是什么意思| 李白被人们称为什么| 子衿什么意思| 麸皮是什么| 嗓子咽口水疼吃什么药| 何方神圣是什么意思| pc是什么单位| 世界上最长的英语单词是什么| 喝什么茶去火| 步步高升是什么意思| 鸡飞狗跳的意思是什么| 刚拔完牙需要注意什么| 更年期出汗多是什么原因| 望梅止渴是什么梅| 12月27号是什么星座| 脱皮缺什么维生素| 缺锌吃什么| 可喜可贺是什么意思| 屋尘螨是什么东西| 为什么一吃东西就拉肚子| rv是什么品牌| 蘖是什么意思| 人乳头病毒是什么意思| 中位数是什么| 俄罗斯信仰什么教| 碟中谍是什么意思| 扦脚是什么意思| 术前四项检查是什么| 石斛主治什么| 皮下男是什么意思| 手抖看什么科| 象牙有什么作用与功效| 菠萝蜜是什么季节的水果| 三金片有什么副作用| 慢热是什么意思| 棋字五行属什么| 三焦湿热吃什么中成药| 经常流鼻血是什么原因| 杠杆炒股是什么意思| 瘟疫是什么意思| 出痧的颜色代表什么| 心肌缺血吃什么药最好| 粉瘤挂什么科| 太上皇是什么意思| 膝盖疼用什么药| 什么是童子命| 6月3号是什么星座| 冻感冒了吃什么药| 右下眼皮跳是什么预兆| 耳耵聍是什么东西| 婴儿奶粉过敏有什么症状| aupres是什么牌子化妆品| 高三吃什么补脑抗疲劳| 粉盒和硒鼓有什么区别| 翠是什么颜色| pc什么意思| 吃维生素b有什么好处| 吸毒什么感觉| 一个月一个寸读什么| 氯化钾是什么| 诺如病毒吃什么药好得快一点| 何弃疗是什么意思| 什么时候做nt| 太后是皇上的什么人| 大舅哥是什么意思| 辽宁古代叫什么| 胃底腺息肉是什么意思| 男鸡配什么属相最好| 太安鱼是什么鱼| 什么是三界五行| 铁线虫是什么| 榴莲什么味道| 平扫是什么意思| 阳历5月20日是什么星座| 痛风为什么要禁欲| 老年人经常头晕是什么原因造成的| 子宫发炎是什么原因引起的| 吃生红枣有什么好处| 什么是提肛运动| 搬家送什么礼物最好| 什么的早晨| 吹空调喉咙痛什么原因| 晚上经常做梦是什么原因| 煎牛排用什么油| 结扎什么意思| 百合花是什么颜色的| 四月十四日是什么节日| pr是什么意思医学| 县人民医院是什么级别| 平板撑有什么作用| 内分泌失调吃什么药好| 壮丁是什么意思| bv是什么| 早上起来心慌是什么原因| 指甲长得快是什么原因| 左腰疼痛是什么原因男性| 枕神经痛吃什么药| 喝什么茶去湿气最好| 什么是一二三级医院| 师奶是什么意思| 沙僧为什么被贬下凡间| 肝癌是什么症状| pde是什么意思| 男性尿道感染吃什么药| 未时左眼跳是什么预兆| 1975年属什么生肖| kelly是什么意思| 病退需要什么条件| 植入是什么意思| 心率低于60说明什么| 银屑病为什么会自愈| mark是什么牌子| 姑姑的孩子叫什么| 顾问是什么意思| 鱼的尾巴有什么作用| 汉武帝是什么朝代| 龙筋是什么| 欲盖弥彰是什么意思| 满城尽带黄金甲是什么意思| 18年属什么生肖| 政府是干什么的| 巨人观是什么意思| 女人吃鹅蛋有什么好处| 皮脂腺囊肿是什么原因引起的| 海参和辽参有什么区别| 什么品牌油烟机好| 用盐水洗脸有什么效果| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? 转帖: 分享一个自己写的菜单架构测试小程序,GOOD!

共6条 1/1 1 跳转至

转帖: 分享一个自己写的菜单架构测试小程序,GOOD!

工程师
2025-08-04 18:17:32     打赏
百度 第二十二条违反本办法的规定,未在其网站主页上标明其经营许可证编号或者备案编号的,由省、自治区、直辖市电信管理机构责令改正,处5000元以上5万元以下的罚款。

//首先贴出使用到的结构体 menu.h
#ifndef _MENU_H
#define _MENU_H

//菜单索引ID
typedef enum {
        id_main,
        id_set,
        id_test,
        id_set_date,
        id_total,
        id_invoid = 0xff,
}MENU_E;

//菜单子项结构体

typedef struct MenuItem 
{    
    char *displayStr; 
    MENU_E childrenMenuId;
}MenuItem_T;

//一个菜单页结构体

typedef struct MenuFrame

        MENU_E ownMenuId;
        int  maxIndex;
        MENU_E parentMenuId;
        MenuItem_T* pMenuItems;
}MenuFrame_T;

//菜单控制结构体

typedef struct MenuContorl 

        short currtIndex;
        MenuFrame_T* pCurrtMenu;
        void (*handle)(struct MenuContorl* currt); 
}MenuContorl_T;

#endif
//下面是具体的测试使用部分 menu.c

#define ITERMS_LENGHT(a)   {sizeof(a)/sizeof(a[0])}

MenuItem_T setDateMenusItem[] = {

{"set year",id_invoid},
{"set mon",id_invoid},
{"set day",        id_invoid},
{"set hour", id_invoid},
{"set min", id_invoid},
{"set sec", id_invoid},

};
MenuItem_T setMenusItem[] = {

{"set1",        id_invoid        },
{"set2",        id_set_date        }
};


MenuItem_T mainMenuItem[] = {
{"SET",         id_set                },
{"TEST",        id_test                },        
{"EXE",                id_invoid        }
};

MenuItem_T testMenusItem[] = {

{"test1",        id_invoid},
{"test2",        id_invoid}
};

void menuHandle(MenuContorl_T* currt)
{
        printf("menuHandle: menu id:%d item:%d\n",currt->pCurrtMenu->ownMenuId,currt->currtIndex);
}


MenuFrame_T sysMenu[id_total] = {
{id_main,ITERMS_LENGHT(mainMenuItem),        id_invoid,                mainMenuItem                        },
{id_set,ITERMS_LENGHT(setMenusItem),        id_main,                setMenusItem                        },
{id_test,ITERMS_LENGHT(testMenusItem),        id_main,                testMenusItem                        },
{id_set_date,ITERMS_LENGHT(setDateMenusItem),id_set,        setDateMenusItem                 }
};

MenuContorl_T menuControl = {
        0,
        sysMenu,
        menuHandle
};

void menu_Frame_init(MenuContorl_T* pMenu)
{
        int i;
        int len = pMenu->pCurrtMenu->maxIndex;
        printf("***********menu********** \n");
        for(i=0;i<len;i++)
        {
                printf("%d.%s\n",i+1,pMenu->pCurrtMenu->pMenuItems[i].displayStr);
        }
        pMenu->currtIndex = 0;
}
//测试部分,我这边是使用串口接收字符控制
if(ch == '+')  //菜单下移
{
        if(menuControl.currtIndex  < menuControl.pCurrtMenu->maxIndex)
                menuControl.currtIndex++;
        if(menuControl.currtIndex == menuControl.pCurrtMenu->maxIndex)
                menuControl.currtIndex = 0;
        printf("***currt:%s***\n",menuControl.pCurrtMenu->pMenuItems[menuControl.currtIndex].displayStr);
        
}
else if (ch == '>') //菜单进入子项
{
        if(id_invoid != menuControl.pCurrtMenu->pMenuItems[menuControl.currtIndex].childrenMenuId)
        {
                menuControl.pCurrtMenu = &sysMenu[menuControl.pCurrtMenu->pMenuItems[menuControl.currtIndex].childrenMenuId];
                menu_Frame_init(&menuControl);
        }
}
else if (ch == '<') //菜单返回上一级
{
        if(id_invoid != menuControl.pCurrtMenu->parentMenuId)
        {
                menuControl.pCurrtMenu = &sysMenu[menuControl.pCurrtMenu->parentMenuId];
                menu_Frame_init(&menuControl);
        }
}
else if (ch == '=') //菜单对应项处理函数
{
                menuControl.handle(&menuControl);
}




关键词: 菜单     GUI    

工程师
2025-08-04 18:41:11     打赏
2楼

好像短小精悍的样子,有空试试这个菜单GUI!


工程师
2025-08-04 18:43:43     打赏
3楼

谢谢分享,又可以学学结构体了!


工程师
2025-08-04 18:46:14     打赏
4楼

标记,学习一下,等我学到这个地方,再借鉴一下


工程师
2025-08-04 18:51:58     打赏
5楼

这次菜单就是用在一般的16x2 LCD 或128x64 这种屏幕吧?



高工
2025-08-04 13:22:42     打赏
6楼

谢谢分享!


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
什么东西解酒最好最快 小孩子上户口需要什么证件 痔疮吃什么药好得快 五月二十六是什么星座 阉割什么意思
九十岁老人称什么 卵泡不破是什么原因 心脏支架不能吃什么 心慌是什么原因 一天当中什么时候血压最高
与君共勉是什么意思 娃儿发烧用什么方法退烧快 粉红色泡沫痰见于什么病 吃燕窝有什么好处 女人的逼是什么意思
皴是什么意思 滑膜炎吃什么药好 练深蹲有什么好处 怕什么来什么 去湿气喝什么茶
什么是激素类药物gangsutong.com 甲状腺结节挂什么科室hcv9jop3ns1r.cn 乳房结节是什么原因引起的hcv8jop3ns5r.cn 为什么感冒吃冰棒反而好了sanhestory.com 猴年马月什么意思hcv9jop7ns5r.cn
言音读什么hcv8jop2ns3r.cn 杜比全景声是什么意思hcv9jop6ns1r.cn 口腔溃疡吃什么药好使hcv8jop2ns6r.cn 梅核气吃什么药好得快hcv9jop7ns3r.cn sp是什么面料hcv9jop0ns3r.cn
湿热重吃什么药hcv8jop4ns5r.cn sds是什么hcv9jop8ns3r.cn 牙齿痛吃什么药hcv7jop9ns3r.cn 91是什么hcv8jop3ns4r.cn 三个马念什么hcv8jop1ns9r.cn
医药代表是做什么的hcv8jop1ns0r.cn 奶奶的弟弟叫什么hcv8jop2ns3r.cn 天下之奇是什么生肖travellingsim.com 内分泌科属于什么科fenrenren.com 非那雄胺片是什么药tiangongnft.com
百度