/****************************************************************************** 版权所有: 深圳市金宏威实业发展有限公司 文件名称: menudesc.h 文件版本: 01.01 创建作者: 钟务贵 创建日期: 2014-12-16 功能说明: 菜单结构 其它说明: 修改记录: */ #ifndef _MENUDESC_H #define _MENUDESC_H /*------------------------------- 头文件 -------------------------------------- */ /*------------------------------- 宏定义 -------------------------------------- */ #define INFO_ERR_QUERY 8 #define INFO_DEBUG_QUERY 9 #define INFO_GPRS_QUERY 16 #define INFO_EQU_QUERY 10 //每屏显示最大行数 #define MAX_LINE_PER_PAGE 10 //每屏显示最大行数 // 页面类型 enum { MENU_TYPE, // 菜单类型 (2个汉字) MENU_TYPE_CH8, // 菜单类型2 (4个汉字) SET_TYPE, // 设置类型 QUERY_PAGE_TYPE, // 查询页面类型 QUERY_1LINE_TYPE, // 查询1行类型 ACTION_TYPE, // 动作类型 }; // 查询类型 enum { QUERY_PUB_KR, // 公共开入 QUERY_SW_KR, // 开关开入 QUERY_PUB_AC, // 公共测量 QUERY_SW_AC, // 开关测量 QUERY_FLAG, // 标志 QUERY_VER, // 1页面显示:SOE、信息 QUERY_CFG, // 配置文件 QUERY_TIME, // 时间 QUERY_SJSOE, // 事件记录 QUERY_CZSOE, // 操作记录 QUERY_ERR, // 错误信息 QUERY_DEBUG, // 调试信息 QUERY_GPRS, // GPRS信息 QUERY_PASSERR, // 密码错误 QUERY_SAVERESULT,// 保存结果 QUERY_SETRANGE, // 定值范围 QUERY_ADJUSTRESULT,//xj 2015.5.9校准结果 QUERY_EVENT, // 突发事件 QUERY_RMTPAIR, // 遥控器配对 QUERY_DELPAIR, // 遥控器清除配对 QUERY_EQU, // 查询装置信息 QUERY_COMM_PARA,// 查询通讯参数 QUERY_YX, // 查询遥信点表 QUERY_YC, // 查询遥测点表 QUERY_CHZ_FLAG, // 重合闸标志 QUERY_NUM, }; enum { ACTION_TEST_KC, ACTION_TEST_LCD, ACTION_TEST_LED, ACTION_BAT, ACTION_ADJUST_AC, ACTION_ADJUST_DC10, ACTION_ADJUST_DC50, ACTION_CLR_SOE, ACTION_SAVE, ACTION_RMT_PAIR, ACTION_DEL_PAIR, ACTION_NUM, }; // 固定菜单定义 enum { MENU_NULL=0, // 无效菜单 MENU_MAIN, // 主菜单 MENU_RUNSTU, // 工况 MENU_SET, // 设置 MENU_SOE, // 事件 MENU_DEBUG, // 调试 MENU_INFO_PARA, // 信息参数 MENU_TABLE_INFO, // 点表信息 MENU_KR, // 开入 MENU_AC, // 测量 MENU_FLAG, // 标志 MENU_TIME, // 时间 MENU_FIX, // 定值 MENU_PARA, // 装置参数 MENU_TIMESET, // 时间设置 MENU_BAT, // 电池 MENU_RUN_PARA, // 运行参数(远动参数) MENU_FAULT_RESET, //故障复归 #if SWITCH_NUM_MAX == 16 MENU_FIX_PUB, // 公共定值 MENU_FIX_SW1, // 开关定值 MENU_FIX_SW2, MENU_FIX_SW3, MENU_FIX_SW4, MENU_FIX_SW5, MENU_FIX_SW6, MENU_FIX_SW7, MENU_FIX_SW8, MENU_FIX_SW9, MENU_FIX_SW10, MENU_FIX_SW11, MENU_FIX_SW12, MENU_FIX_SW13, MENU_FIX_SW14, MENU_FIX_SW15, MENU_FIX_SW16, #elif SWITCH_NUM_MAX == 6 MENU_FIX_PUB, // 公共定值 MENU_FIX_SW1, // 开关定值 MENU_FIX_SW2, MENU_FIX_SW3, MENU_FIX_SW4, MENU_FIX_SW5, MENU_FIX_SW6, #elif SWITCH_NUM_MAX == 8 MENU_FIX_PUB, // 公共定值 MENU_FIX_SW1, // 开关定值 MENU_FIX_SW2, MENU_FIX_SW3, MENU_FIX_SW4, MENU_FIX_SW5, MENU_FIX_SW6, MENU_FIX_SW7, MENU_FIX_SW8, #elif SWITCH_NUM_MAX == 4 MENU_FIX_PUB, // 公共定值 MENU_FIX_SW1, // 开关定值 MENU_FIX_SW2, MENU_FIX_SW3, MENU_FIX_SW4, #elif SWITCH_NUM_MAX == 1 MENU_FIX_PUB, // 公共定值 MENU_FIX_SW1, // 开关定值 #endif MENU_SJSOE, // 事件 MENU_CZSOE, // 操作 MENU_INFO_EQU, // 装置信息 (固有参数) MENU_COMM_PARA, // 通讯参数 MENU_INFO_YX, // 遥信信息 MENU_INFO_YC, // 遥测信息 MENU_TEST, // 测试 MENU_ADJUST, // 校准 MENU_RMT, // 遥控器 MENU_INFIX, // 内部定值 MENU_CODE, // 密码 MENU_CLR, // 清除记录 MENU_INFO, // 信息 MENU_TEST_KC, // 开出测试 MENU_TEST_HMI, // 人机测试 MENU_ADJUST_AC, // 交流校准 MENU_ADJUST_DC, // 直流校准 MENU_INFO_VER, // 版本信息 MENU_INFO_CFG, // 配置信息 MENU_INFO_ERR, // 错误信息 MENU_INFO_DEBUG,// 调试信息 MENU_INFO_GPRS, // GPRS信息 MENU_BH_STATUS, //保护状态 MENU_GLBH, //过流保护 MENU_LXBH, //零序保护 MENU_JDBH, //接地保护 MENU_RECLOSE, //重合闸 MENU_HJS, //后加速 MENU_DLYX, //电流越限 MENU_PUB_YX, //公共遥信 MENU_SW_YX, //开关遥信 MENU_PUB_YC, //公共遥测 MENU_SW_YC, //开关遥测 MENU_CHZ_FLAG, //重合闸标志 MENU_OTHERS_FLAG, //其它标志 MENU_PASSWORD, // 输入密码 MENU_PASSERR, // 密码错误 MENU_SAVE, // 退出保存 MENU_SAVE_RESULT,// 保存的结果 MENU_SET_RANGE, // 定值范围 MENU_ADJUST_RESULT, // xj 2015.5.8校准结果38 MENU_EVENT, // 突发事件 MENU_RMT_PAIR, // 遥控器配对 MENU_DEL_PAIR, // 遥控器配对清除 MENU_NUM, }; // 固定实体定义 enum { ITEM_VER=0, // 版本信息 ITEM_CRC, // CRC ITEM_EQU, // 装置资源 ITEM_BRD, // 板卡资源 ITEM_CFG, // 通道配置 ITEM_IECTABLE, // 转发点表 ITEM_SETDESC, // 定值描述 ITEM_SETDATA, // 定值数据 ITEM_TEST_LCD, // LCD测试 ITEM_TEST_LED, // LED测试 ITEM_CLR_SJ, // 清除事件记录 ITEM_CLR_CZ, // 清除操作记录 ITEM_ADJUST_AC, // 交流校准 ITEM_ADJUST_DC10, // DC10V校准 ITEM_ADJUST_DC50, // DC50V校准 ITEM_SAVE, // 保存 ITEM_SAVE_OK, // 确认保存 ITEM_SAVE_NOK, // 取消保存 ITEM_RMT_A, ITEM_RMT_B, ITEM_RMT_C, ITEM_RMT_D, // ITEM_CHZ_CD, // 重合闸充电标志 ITEM_RMT_PAIR, // 遥控器配对 ITEM_DEL_PAIR, // 清除配对 // ITEM_XDL_CHZ_CD, // 小电流重合闸充电标志 ITEM_NUM, }; // 定值显示顺序定义 enum { SET_NAME, // 第一行定值名称 SET_DATA, // 第二行定值数据 SET_UNIT, // 定值后面打印单位 SET_STR_NUM, }; // 液晶的规格 enum { SMALL=1, MID, MID1, BIG, SIZE_NUM, }; // 特殊类型 enum { DISP_NULL=0, DISP_IP, // IP类型 DISP_YMD, // 年月日型 DISP_HMS, // 时分秒型 DISP_SPCL_NUM }; /*------------------------------ 类型结构 ------------------------------------- */ // 实体描述结构 struct item { u8 type; // 类型 u8 no; // u8 x; // 坐标 u8 y; }; // 页面描述结构,以层级为一页面单位 struct page_st { u8 menu_cur; // 当前菜单表索引 u8 menu_m; // 指向上一个节点(父节点)的指针 u8 pagetype; // 当前页面类型 u16 item_num; // 页面的实体数量 u8 wnd_num; // 根据实际分配的屏数 u8 wnd_item; // 每屏可容纳的最多实体数 u8 cur_wnd_item; // 当前屏分配的实体数 u8 cur_wnd; // 当前屏号 u8 cur_focus; // 当前屏中的当前聚焦点 u8 title; // 当前屏是否有标题 u8 time; // 当前屏是否有时间 struct item *page_item; // 页面实体 void (*DispFun)(u8, u8, u8, struct item *); }; // 固定菜单,以“行”为单位定义 struct menu_table { char *name; // 名称的内容 u8 code; // 0x00 无,0x01 用户密码,0x02 超级密码 u8 save; // 是否保存: 0 无,1 退出时提示保存 }; // 实体定义 struct item_table { char *name; u8 unit; u8 *fstdata; }; // 液晶尺寸 struct lcdsize { u8 x; // 液晶宽尺寸,以点为单位 u8 y; // 液晶高尺寸,以点为单位,但必须为8的倍数 }; struct slave { u8 menu_m; // 主菜单 u8 menu_s[17]; // 子菜单 }; // 实体更新标志 struct item_update { u8 title; u8 time; u8 autoback; u8 name[10]; u8 data[10]; u8 flash[10]; u32 flash_dly; u32 time_dly; u32 title_dly; u32 autoback_dly; u32 kr_dly[10]; u32 ac_dly[10]; u32 zf_dly[10]; u32 name_dly[10]; }; // 页面查询显示结构 struct page_dis { u16 no_cur; // 当前序号 u16 no_num; // 序号总数 u16 no_index; // 序号索引,用于SOE读取 u8 str_num; // 需显示总数 // u8 str[16][18]; // 显示内容 u8 str[16][20]; // 显示内容 //2021-06-15 }; // 页面设置显示结构 struct set_dis { u8 x; // 起始显示横坐标 u8 list; // 列表类型 u8 type; // 定值类型,区别于定值定义的类型,针对显示 u8 spcl_type; // 特殊类型 int modify; // 当前项是否进入编辑模式 u8 lenth; // 需设置的数据字符长度 u8 len; // 单位的长度 u8 cursor; // 光标位置 u8 point_mdf; // 小数点可编辑 void *pdata; // 定值数据 void *pdata1; // 定值数据 void *pdata2; // 定值数据 void *pdata3; // 定值数据 void *pdata4; // 定值数据 void *pdesc; u8 desc[16]; // 存放定值描述 u8 str[3][21]; // 显示内容 u8 list_str[21]; //list定值显示 }; struct cfg_index { u8 pub_di[PUB_DI_NUM]; u8 sw_di[SWITCH_NUM_MAX * SW_DI_NUM + SWITCH_NUM_MAX*9];//+SWITCH_NUM_MAX*9 //填充补偿 u8 kc[PUB_DO_NUM + SW_DO_NUM * SWITCH_NUM_MAX][2]; u8 ac[PUB_AC_NUM_ALL]; }; struct action { u8 action[10]; }; struct disp_flag { u32 chz_cd; u32 xdl_chz_cd; }; /*------------------------------ 变量声明 ------------------------------------- */ extern const struct menu_table menu_base_table[MENU_NUM]; extern struct page_st g_page_cur; extern struct item_update g_item_update; extern struct page_st page_table[]; extern const struct slave slave_table[]; extern struct page_dis g_page_dis; // 用于页面类查询显示 extern struct set_dis g_set_dis[5]; extern const int slave_menu_num; extern struct lcdsize g_lcdsize; extern struct cfg_index g_cfg_index; extern struct action g_action; extern int lcdtype; // 液晶尺寸类型 extern int g_hmi_type; extern struct disp_flag g_disp_flag; // 菜单内的标志 extern const u8 sw_menu_num; // zhl add start extern u8 bPubSetMenuShow[SET_PUB_NUM]; extern u8 bSwSetMenuShow[SET_NUM]; extern u8 bParaSetMenuShow[PARA_NUM]; extern u8 bCstSetMenuShow[CSTSET_NUM]; extern bool g_bVipSoe_show; // zhl add end //当前页面 /*------------------------------ 函数声明 ------------------------------------- */ int menudesc_init(u8 lcd_size); int menudesc_exit(void); int menu_disp(void); void reset_update_flag(void); #endif //_MENUDESC_H /*------------------------------ 文件结束 ------------------------------------- */