小尺寸点阵屏多级配置菜单(2按键)

所属分类:单片机开发
开发工具:C/C++
文件大小:31KB
下载次数:1
上传日期:2022-10-11 14:13:00
上 传 者vikey_zhu
说明:  小尺寸点阵屏多级配置菜单(2按键),。。。。。

文件列表:
UI (0, 2021-07-22)
UI\codetab.h (44877, 2021-07-22)
UI\help - 副本.txt (2502, 2021-07-22)
UI\rc_UI.c (40494, 2021-07-22)
UI\rc_UI.h (3816, 2021-07-22)
UI\rc_UI_mainlayer.c (3250, 2021-07-22)
UI\rc_UI_mainlayer.h (914, 2021-07-22)
UI\rc_UIpravite.h (6287, 2021-07-22)
UI\rc_key.c (4458, 2021-07-22)
UI\rc_key.h (725, 2021-07-22)
UI\rc_menudata.h (5052, 2021-07-22)

# oledmenu 小尺寸点阵屏多级配置菜单(2按键) 功能:主屏显示、密码、超级密码、多级菜单、菜单控件类型、按键事件、菜单超时返回、 使用示例: /*menu item 编辑菜单*/ static uint8_t _ui_items_enable[MAX_ITEM_NUM]={0}; static const sUIItemConst _ui_items_c[] = { //id,parent,itemType,textEN,CMD,cnlength,CNaddr1,CNaddr2,CNaddr3,CNaddr4,CNaddr5, {0,0,ITEM_TYPE_PASS_INPUT,"Password",0,2,45,46,12,13,0},//密码 {1,0,ITEM_TYPE_PASS_INPUT,"SuperPass",0,0,0,0,0,0,0},//超级密码,不做显示,仅作为分支节点使用,, /*工厂设置参数*/ {2,-2, ITEM_TYPE_BUTTON,"param backup",7012,4,51,52,73,70,0},//backup--- {3,-2, ITEM_TYPE_MENU_LABLE,"device type",0,4,12,51,25,26,0},//device type--- {4,3, ITEM_TYPE_RADIO,"master",7001,2,***,66,0,0,0},// {5,3, ITEM_TYPE_RADIO,"slave",7002,2,65,66,0,0,},// {6,-2, ITEM_TYPE_MENU_LABLE,"Up ComType",0,4,16,67,82,83,0},//uplink--- {7,6, ITEM_TYPE_RADIO,"RS485",7003,0,0,0,0,0,0},// {8,6, ITEM_TYPE_RADIO,"Lora",7004,0,0,0,0,0,0},// {9,6, ITEM_TYPE_RADIO,"LTE",7005,0,0,0,0,0,0},// {10,6, ITEM_TYPE_RADIO,"WIFI",7016,0,0,0,0,0,0},// {11,-2, ITEM_TYPE_MENU_LABLE,"Slave ComType",0,4,17,67,82,83,0},//slave--- {12,11, ITEM_TYPE_RADIO,"NONE",7006,0,0,0,0,0,0},// {13,11, ITEM_TYPE_RADIO,"RS485",7007,0,0,0,0,0,0},// {14,11, ITEM_TYPE_RADIO,"Lora",7008,0,0,0,0,0,0},// {15,-2, ITEM_TYPE_MENU_LABLE,"show logo",0,4,74,75,40,76,0},//show logo--- {16,15, ITEM_TYPE_RADIO,"hide",7010,2,91,92,0,0,0},// {17,15, ITEM_TYPE_RADIO,"show",7011,2,89,90,0,0,0},// {18,-1, ITEM_TYPE_MENU_LABLE,"COM",0,4,10,43,12,13,0},//com------------------------------ {19,18, ITEM_TYPE_MENU_LABLE,"Uplink",0,2,16,67,0,0,0},//uplink---------- {20,19, ITEM_TYPE_MENU_LABLE,"IP",0,0,0,0,0,0,0},//ip--- {21,20, ITEM_TYPE_NUM,"IPInput",5001,0,0,0,0,0,0},// {22,19, ITEM_TYPE_MENU_LABLE,"PORT",0,2,33,34,0,0,0},//Port--- {23,22, ITEM_TYPE_NUM,"PORTInput",5002,2,33,34,0,0,0},// {24,19, ITEM_TYPE_MENU_LABLE,"Net Number",0,3,68,69,24,0,0},//netnumber-- {25,24, ITEM_TYPE_NUM,"Net Number",5003,3,68,69,24,0,0},// {26,19, ITEM_TYPE_MENU_LABLE,"Baud",0,3,127,128,129,0,0},//baud--- {27,26, ITEM_TYPE_RADIO,"4800",5013,0,0,0,0,0,0}, {28,26, ITEM_TYPE_RADIO,"9600",5014,0,0,0,0,0,0}, {29,26, ITEM_TYPE_RADIO,"57600",5015,0,0,0,0,0,0}, {30,26, ITEM_TYPE_RADIO,"115200",5016,0,0,0,0,0,0}, {31,19, ITEM_TYPE_MENU_LABLE,"Parity",0,3,130,131,20,0,0},//parity-- {32,31, ITEM_TYPE_RADIO,"none",5017,0,0,0,0,0,0},// {33,31, ITEM_TYPE_RADIO,"odd",5018,0,0,0,0,0,0},// {34,31, ITEM_TYPE_RADIO,"even",5019,0,0,0,0,0,0},// {35,18, ITEM_TYPE_MENU_LABLE,"Slave",0,2,17,67,0,0,0},//slave---------- {36,35, ITEM_TYPE_MENU_LABLE,"Net Number",0,3,68,69,24,0,0},//net number--- {37,36, ITEM_TYPE_NUM,"Net Number",5004,3,68,69,24,0,0},// {38,35, ITEM_TYPE_MENU_LABLE,"Baud",0,3,127,128,129,0,0},//baud-- {39,38, ITEM_TYPE_RADIO,"4800",5005,0,0,0,0,0,0}, {40,38, ITEM_TYPE_RADIO,"9600",5006,0,0,0,0,0,0}, {41,38, ITEM_TYPE_RADIO,"57600",5007,0,0,0,0,0,0}, {42,38, ITEM_TYPE_RADIO,"115200",5008,0,0,0,0,0,0}, {43,35, ITEM_TYPE_MENU_LABLE,"Parity",0,3,130,131,20,0,0},//parity-- {44,43, ITEM_TYPE_RADIO,"none",5009,0,0,0,0,0,0},// {45,43, ITEM_TYPE_RADIO,"odd",5010,0,0,0,0,0,0},// {46,43, ITEM_TYPE_RADIO,"even",5011,0,0,0,0,0,0},// {47,35, ITEM_TYPE_MENU_LABLE,"SlaveNumber",0,4,65,66,70,71,0},//slave number--- {48,47, ITEM_TYPE_NUM,"SlaveNumber",5012,4,65,66,70,71,0},// {49,-1, ITEM_TYPE_MENU_LABLE,"SYSTEM",0,4,35,36,12,13,0},//system---------------------------------- {50,49, ITEM_TYPE_MENU_LABLE,"SN",0,4,12,51,44,24,0},//sn--- {51,50, ITEM_TYPE_NUM,"SNInput",6001,4,12,51,44,24,0},// {52,49, ITEM_TYPE_MENU_LABLE,"SlaveID",0,4,65,66,122,123,0},//slaveid--- {53,53, ITEM_TYPE_NUM,"SlaveIDInput",6002,4,65,66,122,123,0},// {54,49, ITEM_TYPE_MENU_LABLE,"Interval",0,4,16,124,125,126,0},//interval--- {55,54, ITEM_TYPE_NUM,"Interval",6003,4,19,20,156,157,0},// {56,49, ITEM_TYPE_MENU_LABLE,"Language",0,2,87,88,0,0,0},//language--- {57,56, ITEM_TYPE_RADIO,"zh-CN",6004,3,84,86,133,0,0},// {58,56, ITEM_TYPE_RADIO,"English",6005,0,85,86,63,0,0},// {59,49, ITEM_TYPE_MENU_LABLE,"modifyPass",0,4,135,136,45,46,0},//pass--- {60,59, ITEM_TYPE_NUM,"Pass",5020,3,134,45,46,0,0},//淇敼瀵嗙爜 {61,49, ITEM_TYPE_BUTTON,"param Recover",6006,4,37,38,39,40,0},//recover--- {62,49, ITEM_TYPE_BUTTON,"Reset",6007,4,12,51,41,42,0}, }; /*key task 按键事件监控*/ static void taskKey(void *pvParameters) { /*key gpio初始化*/ KeyInit(_KeySemaphore); for (;;) { /* 等待所有任务发来事件标志 */ KeyWait(); //获取按键状态、时间 KeyScan(&_KeyStatus, &_Key1HoldingTime, &_Key2HoldingTime); /*互斥访问控制-非阻塞*/ xSemaphoreTake(_KeyBusySemaphore, portMAX_DELAY); if (_KeyStatus != KEY_STATUS_NO_KEY_PRESS) { UIOnKeyPress(_KeyStatus, _Key1HoldingTime, _Key2HoldingTime); } KeyReset(); /*互斥访问控制-释放*/ xSemaphoreGive(_KeyBusySemaphore); } } /*ui task 界面刷新任务*/ static void taskUI(void *pvParameters) { /*init ui*/ UIInit(&GetDataCallback,&DataUpdataCallback); UISetLanguage(_PROJECT_cfg.Language); UIStart(_PROJECT_cfg.ShowLogo); for (;;) { xSemaphoreTake(_KeyBusySemaphore, portMAX_DELAY); /*菜单项目筛选*/ SetUIItemsEnable(); //并刷新主界面显示 UIMainLayerRefersh(2); xSemaphoreGive(_KeyBusySemaphore); delay_tms(40); Wwdt_Feed(); } } /* GetDataCallback 菜单数据读取 */ void GetDataCallback(uint16_t cmd, char *outdata) { //char str[20] = {0}; switch (cmd) { case 0xFFFF: //ITEM_TYPE_PASS_INPUT,UI_ITEM_ENABLE,"Password" strcpy(outdata, "0000"); break; case 5001: sprintf(outdata, "%03d.%03d.%03d.%03d", _PROJECT_cfg.hreg.UP_IP[0]>>8&0xFF, _PROJECT_cfg.hreg.UP_IP[0]&0xFF, _PROJECT_cfg.hreg.UP_IP[1]>>8&0xFF, _PROJECT_cfg.hreg.UP_IP[1]&0xFF); break; //... //... } } /* DataUpdataCallback 菜单元素对应数据更新*/ void DataUpdataCallback(uint16_t cmd, char *indata, char *outdata) { char *str = 0; int indataLen=strlen(indata); switch (cmd) { case 0xFFFF://0,ITEM_TYPE_PASS_INPUT,UI_ITEM_ENABLE,"""Password""//密码", if(strcmp(indata, _PROJECT_cfg.Password) == 0) outdata[0]='1'; else if(strcmp(indata, _PROJECT_cfg.SuperPassword) == 0) outdata[0]='2'; else outdata[0]='0'; break; case 5001://472, ITEM_TYPE_NUM,UI_ITEM_ENABLE,"IPInput""//" str = strtok(indata, "."); //str = strtok(NULL, str); _PROJECT_cfg.hreg.UP_IP[0] = atoi(str)<<8; str = strtok(NULL, "."); _PROJECT_cfg.hreg.UP_IP[0] |= atoi(str); str = strtok(NULL, "."); _PROJECT_cfg.hreg.UP_IP[1] = atoi(str)<<8; str = strtok(NULL, "."); _PROJECT_cfg.hreg.UP_IP[1] = atoi(str); outdata[0] = '1'; _PROJECT_status.UP_CfgChanged=1; break; } //存储参数 SaveProfile((uint8_t *)&_PROJECT_cfg, sizeof(_PROJECT_cfg)); }

近期下载者

相关文件


收藏者