menudesc.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. /******************************************************************************
  2. 版权所有: 深圳市金宏威实业发展有限公司
  3. 文件名称: menudesc.h
  4. 文件版本: 01.01
  5. 创建作者: 钟务贵
  6. 创建日期: 2014-12-16
  7. 功能说明: 菜单结构
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _MENUDESC_H
  12. #define _MENUDESC_H
  13. /*------------------------------- 头文件 --------------------------------------
  14. */
  15. /*------------------------------- 宏定义 --------------------------------------
  16. */
  17. #define INFO_ERR_QUERY 8
  18. #define INFO_DEBUG_QUERY 9
  19. #define INFO_GPRS_QUERY 16
  20. #define INFO_EQU_QUERY 10 //每屏显示最大行数
  21. #define MAX_LINE_PER_PAGE 10 //每屏显示最大行数
  22. // 页面类型
  23. enum
  24. {
  25. MENU_TYPE, // 菜单类型 (2个汉字)
  26. MENU_TYPE_CH8, // 菜单类型2 (4个汉字)
  27. SET_TYPE, // 设置类型
  28. QUERY_PAGE_TYPE, // 查询页面类型
  29. QUERY_1LINE_TYPE, // 查询1行类型
  30. ACTION_TYPE, // 动作类型
  31. };
  32. // 查询类型
  33. enum
  34. {
  35. QUERY_PUB_KR, // 公共开入
  36. QUERY_SW_KR, // 开关开入
  37. QUERY_PUB_AC, // 公共测量
  38. QUERY_SW_AC, // 开关测量
  39. QUERY_FLAG, // 标志
  40. QUERY_VER, // 1页面显示:SOE、信息
  41. QUERY_CFG, // 配置文件
  42. QUERY_TIME, // 时间
  43. QUERY_SJSOE, // 事件记录
  44. QUERY_CZSOE, // 操作记录
  45. QUERY_ERR, // 错误信息
  46. QUERY_DEBUG, // 调试信息
  47. QUERY_GPRS, // GPRS信息
  48. QUERY_PASSERR, // 密码错误
  49. QUERY_SAVERESULT,// 保存结果
  50. QUERY_SETRANGE, // 定值范围
  51. QUERY_ADJUSTRESULT,//xj 2015.5.9校准结果
  52. QUERY_EVENT, // 突发事件
  53. QUERY_RMTPAIR, // 遥控器配对
  54. QUERY_DELPAIR, // 遥控器清除配对
  55. QUERY_EQU, // 查询装置信息
  56. QUERY_COMM_PARA,// 查询通讯参数
  57. QUERY_YX, // 查询遥信点表
  58. QUERY_YC, // 查询遥测点表
  59. QUERY_CHZ_FLAG, // 重合闸标志
  60. QUERY_NUM,
  61. };
  62. enum
  63. {
  64. ACTION_TEST_KC,
  65. ACTION_TEST_LCD,
  66. ACTION_TEST_LED,
  67. ACTION_BAT,
  68. ACTION_ADJUST_AC,
  69. ACTION_ADJUST_DC10,
  70. ACTION_ADJUST_DC50,
  71. ACTION_CLR_SOE,
  72. ACTION_SAVE,
  73. ACTION_RMT_PAIR,
  74. ACTION_DEL_PAIR,
  75. ACTION_NUM,
  76. };
  77. // 固定菜单定义
  78. enum
  79. {
  80. MENU_NULL=0, // 无效菜单
  81. MENU_MAIN, // 主菜单
  82. MENU_RUNSTU, // 工况
  83. MENU_SET, // 设置
  84. MENU_SOE, // 事件
  85. MENU_DEBUG, // 调试
  86. MENU_INFO_PARA, // 信息参数
  87. MENU_TABLE_INFO, // 点表信息
  88. MENU_KR, // 开入
  89. MENU_AC, // 测量
  90. MENU_FLAG, // 标志
  91. MENU_TIME, // 时间
  92. MENU_FIX, // 定值
  93. MENU_PARA, // 装置参数
  94. MENU_TIMESET, // 时间设置
  95. MENU_BAT, // 电池
  96. MENU_RUN_PARA, // 运行参数(远动参数)
  97. MENU_FAULT_RESET, //故障复归
  98. #if SWITCH_NUM_MAX == 16
  99. MENU_FIX_PUB, // 公共定值
  100. MENU_FIX_SW1, // 开关定值
  101. MENU_FIX_SW2,
  102. MENU_FIX_SW3,
  103. MENU_FIX_SW4,
  104. MENU_FIX_SW5,
  105. MENU_FIX_SW6,
  106. MENU_FIX_SW7,
  107. MENU_FIX_SW8,
  108. MENU_FIX_SW9,
  109. MENU_FIX_SW10,
  110. MENU_FIX_SW11,
  111. MENU_FIX_SW12,
  112. MENU_FIX_SW13,
  113. MENU_FIX_SW14,
  114. MENU_FIX_SW15,
  115. MENU_FIX_SW16,
  116. #elif SWITCH_NUM_MAX == 6
  117. MENU_FIX_PUB, // 公共定值
  118. MENU_FIX_SW1, // 开关定值
  119. MENU_FIX_SW2,
  120. MENU_FIX_SW3,
  121. MENU_FIX_SW4,
  122. MENU_FIX_SW5,
  123. MENU_FIX_SW6,
  124. #elif SWITCH_NUM_MAX == 8
  125. MENU_FIX_PUB, // 公共定值
  126. MENU_FIX_SW1, // 开关定值
  127. MENU_FIX_SW2,
  128. MENU_FIX_SW3,
  129. MENU_FIX_SW4,
  130. MENU_FIX_SW5,
  131. MENU_FIX_SW6,
  132. MENU_FIX_SW7,
  133. MENU_FIX_SW8,
  134. #elif SWITCH_NUM_MAX == 4
  135. MENU_FIX_PUB, // 公共定值
  136. MENU_FIX_SW1, // 开关定值
  137. MENU_FIX_SW2,
  138. MENU_FIX_SW3,
  139. MENU_FIX_SW4,
  140. #elif SWITCH_NUM_MAX == 1
  141. MENU_FIX_PUB, // 公共定值
  142. MENU_FIX_SW1, // 开关定值
  143. #endif
  144. MENU_SJSOE, // 事件
  145. MENU_CZSOE, // 操作
  146. MENU_INFO_EQU, // 装置信息 (固有参数)
  147. MENU_COMM_PARA, // 通讯参数
  148. MENU_INFO_YX, // 遥信信息
  149. MENU_INFO_YC, // 遥测信息
  150. MENU_TEST, // 测试
  151. MENU_ADJUST, // 校准
  152. MENU_RMT, // 遥控器
  153. MENU_INFIX, // 内部定值
  154. MENU_CODE, // 密码
  155. MENU_CLR, // 清除记录
  156. MENU_INFO, // 信息
  157. MENU_TEST_KC, // 开出测试
  158. MENU_TEST_HMI, // 人机测试
  159. MENU_ADJUST_AC, // 交流校准
  160. MENU_ADJUST_DC, // 直流校准
  161. MENU_INFO_VER, // 版本信息
  162. MENU_INFO_CFG, // 配置信息
  163. MENU_INFO_ERR, // 错误信息
  164. MENU_INFO_DEBUG,// 调试信息
  165. MENU_INFO_GPRS, // GPRS信息
  166. MENU_BH_STATUS, //保护状态
  167. MENU_GLBH, //过流保护
  168. MENU_LXBH, //零序保护
  169. MENU_JDBH, //接地保护
  170. MENU_RECLOSE, //重合闸
  171. MENU_HJS, //后加速
  172. MENU_DLYX, //电流越限
  173. MENU_PUB_YX, //公共遥信
  174. MENU_SW_YX, //开关遥信
  175. MENU_PUB_YC, //公共遥测
  176. MENU_SW_YC, //开关遥测
  177. MENU_CHZ_FLAG, //重合闸标志
  178. MENU_OTHERS_FLAG, //其它标志
  179. MENU_PASSWORD, // 输入密码
  180. MENU_PASSERR, // 密码错误
  181. MENU_SAVE, // 退出保存
  182. MENU_SAVE_RESULT,// 保存的结果
  183. MENU_SET_RANGE, // 定值范围
  184. MENU_ADJUST_RESULT, // xj 2015.5.8校准结果38
  185. MENU_EVENT, // 突发事件
  186. MENU_RMT_PAIR, // 遥控器配对
  187. MENU_DEL_PAIR, // 遥控器配对清除
  188. MENU_NUM,
  189. };
  190. // 固定实体定义
  191. enum
  192. {
  193. ITEM_VER=0, // 版本信息
  194. ITEM_CRC, // CRC
  195. ITEM_EQU, // 装置资源
  196. ITEM_BRD, // 板卡资源
  197. ITEM_CFG, // 通道配置
  198. ITEM_IECTABLE, // 转发点表
  199. ITEM_SETDESC, // 定值描述
  200. ITEM_SETDATA, // 定值数据
  201. ITEM_TEST_LCD, // LCD测试
  202. ITEM_TEST_LED, // LED测试
  203. ITEM_CLR_SJ, // 清除事件记录
  204. ITEM_CLR_CZ, // 清除操作记录
  205. ITEM_ADJUST_AC, // 交流校准
  206. ITEM_ADJUST_DC10, // DC10V校准
  207. ITEM_ADJUST_DC50, // DC50V校准
  208. ITEM_SAVE, // 保存
  209. ITEM_SAVE_OK, // 确认保存
  210. ITEM_SAVE_NOK, // 取消保存
  211. ITEM_RMT_A,
  212. ITEM_RMT_B,
  213. ITEM_RMT_C,
  214. ITEM_RMT_D,
  215. // ITEM_CHZ_CD, // 重合闸充电标志
  216. ITEM_RMT_PAIR, // 遥控器配对
  217. ITEM_DEL_PAIR, // 清除配对
  218. // ITEM_XDL_CHZ_CD, // 小电流重合闸充电标志
  219. ITEM_NUM,
  220. };
  221. // 定值显示顺序定义
  222. enum
  223. {
  224. SET_NAME, // 第一行定值名称
  225. SET_DATA, // 第二行定值数据
  226. SET_UNIT, // 定值后面打印单位
  227. SET_STR_NUM,
  228. };
  229. // 液晶的规格
  230. enum
  231. {
  232. SMALL=1,
  233. MID,
  234. MID1,
  235. BIG,
  236. SIZE_NUM,
  237. };
  238. // 特殊类型
  239. enum
  240. {
  241. DISP_NULL=0,
  242. DISP_IP, // IP类型
  243. DISP_YMD, // 年月日型
  244. DISP_HMS, // 时分秒型
  245. DISP_SPCL_NUM
  246. };
  247. /*------------------------------ 类型结构 -------------------------------------
  248. */
  249. // 实体描述结构
  250. struct item
  251. {
  252. u8 type; // 类型
  253. u8 no; //
  254. u8 x; // 坐标
  255. u8 y;
  256. };
  257. // 页面描述结构,以层级为一页面单位
  258. struct page_st
  259. {
  260. u8 menu_cur; // 当前菜单表索引
  261. u8 menu_m; // 指向上一个节点(父节点)的指针
  262. u8 pagetype; // 当前页面类型
  263. u16 item_num; // 页面的实体数量
  264. u8 wnd_num; // 根据实际分配的屏数
  265. u8 wnd_item; // 每屏可容纳的最多实体数
  266. u8 cur_wnd_item; // 当前屏分配的实体数
  267. u8 cur_wnd; // 当前屏号
  268. u8 cur_focus; // 当前屏中的当前聚焦点
  269. u8 title; // 当前屏是否有标题
  270. u8 time; // 当前屏是否有时间
  271. struct item *page_item; // 页面实体
  272. void (*DispFun)(u8, u8, u8, struct item *);
  273. };
  274. // 固定菜单,以“行”为单位定义
  275. struct menu_table
  276. {
  277. char *name; // 名称的内容
  278. u8 code; // 0x00 无,0x01 用户密码,0x02 超级密码
  279. u8 save; // 是否保存: 0 无,1 退出时提示保存
  280. };
  281. // 实体定义
  282. struct item_table
  283. {
  284. char *name;
  285. u8 unit;
  286. u8 *fstdata;
  287. };
  288. // 液晶尺寸
  289. struct lcdsize
  290. {
  291. u8 x; // 液晶宽尺寸,以点为单位
  292. u8 y; // 液晶高尺寸,以点为单位,但必须为8的倍数
  293. };
  294. struct slave
  295. {
  296. u8 menu_m; // 主菜单
  297. u8 menu_s[17]; // 子菜单
  298. };
  299. // 实体更新标志
  300. struct item_update
  301. {
  302. u8 title;
  303. u8 time;
  304. u8 autoback;
  305. u8 name[10];
  306. u8 data[10];
  307. u8 flash[10];
  308. u32 flash_dly;
  309. u32 time_dly;
  310. u32 title_dly;
  311. u32 autoback_dly;
  312. u32 kr_dly[10];
  313. u32 ac_dly[10];
  314. u32 zf_dly[10];
  315. u32 name_dly[10];
  316. };
  317. // 页面查询显示结构
  318. struct page_dis
  319. {
  320. u16 no_cur; // 当前序号
  321. u16 no_num; // 序号总数
  322. u16 no_index; // 序号索引,用于SOE读取
  323. u8 str_num; // 需显示总数
  324. // u8 str[16][18]; // 显示内容
  325. u8 str[16][20]; // 显示内容 //2021-06-15
  326. };
  327. // 页面设置显示结构
  328. struct set_dis
  329. {
  330. u8 x; // 起始显示横坐标
  331. u8 list; // 列表类型
  332. u8 type; // 定值类型,区别于定值定义的类型,针对显示
  333. u8 spcl_type; // 特殊类型
  334. int modify; // 当前项是否进入编辑模式
  335. u8 lenth; // 需设置的数据字符长度
  336. u8 len; // 单位的长度
  337. u8 cursor; // 光标位置
  338. u8 point_mdf; // 小数点可编辑
  339. void *pdata; // 定值数据
  340. void *pdata1; // 定值数据
  341. void *pdata2; // 定值数据
  342. void *pdata3; // 定值数据
  343. void *pdata4; // 定值数据
  344. void *pdesc;
  345. u8 desc[16]; // 存放定值描述
  346. u8 str[3][21]; // 显示内容
  347. u8 list_str[21]; //list定值显示
  348. };
  349. struct cfg_index
  350. {
  351. u8 pub_di[PUB_DI_NUM];
  352. u8 sw_di[SWITCH_NUM_MAX * SW_DI_NUM + SWITCH_NUM_MAX*9];//+SWITCH_NUM_MAX*9 //填充补偿
  353. u8 kc[PUB_DO_NUM + SW_DO_NUM * SWITCH_NUM_MAX][2];
  354. u8 ac[PUB_AC_NUM_ALL];
  355. };
  356. struct action
  357. {
  358. u8 action[10];
  359. };
  360. struct disp_flag
  361. {
  362. u32 chz_cd;
  363. u32 xdl_chz_cd;
  364. };
  365. /*------------------------------ 变量声明 -------------------------------------
  366. */
  367. extern const struct menu_table menu_base_table[MENU_NUM];
  368. extern struct page_st g_page_cur;
  369. extern struct item_update g_item_update;
  370. extern struct page_st page_table[];
  371. extern const struct slave slave_table[];
  372. extern struct page_dis g_page_dis; // 用于页面类查询显示
  373. extern struct set_dis g_set_dis[5];
  374. extern const int slave_menu_num;
  375. extern struct lcdsize g_lcdsize;
  376. extern struct cfg_index g_cfg_index;
  377. extern struct action g_action;
  378. extern int lcdtype; // 液晶尺寸类型
  379. extern int g_hmi_type;
  380. extern struct disp_flag g_disp_flag; // 菜单内的标志
  381. extern const u8 sw_menu_num;
  382. // zhl add start
  383. extern u8 bPubSetMenuShow[SET_PUB_NUM];
  384. extern u8 bSwSetMenuShow[SET_NUM];
  385. extern u8 bParaSetMenuShow[PARA_NUM];
  386. extern u8 bCstSetMenuShow[CSTSET_NUM];
  387. extern bool g_bVipSoe_show;
  388. // zhl add end
  389. //当前页面
  390. /*------------------------------ 函数声明 -------------------------------------
  391. */
  392. int menudesc_init(u8 lcd_size);
  393. int menudesc_exit(void);
  394. int menu_disp(void);
  395. void reset_update_flag(void);
  396. #endif //_MENUDESC_H
  397. /*------------------------------ 文件结束 -------------------------------------
  398. */