LcdComm.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. #ifndef _LCDCOMM_H_DEF
  2. #define _LCDCOMM_H_DEF
  3. /*------------------------------- 头文件 --------------------------------------
  4. */
  5. /*------------------------------- 宏定义 --------------------------------------
  6. */
  7. enum
  8. {
  9. MAIN, // 主板
  10. FACE, // 面板
  11. GPRS, // GPRS
  12. PDA, // PDA
  13. PDA_MAINTAIN, // PDA维护
  14. HMI_COMM_TYPE,
  15. };
  16. enum
  17. {
  18. TEST_LED, // LED测试
  19. TEST_LCD, // LCD测试
  20. TEST_NUM,
  21. };
  22. enum
  23. {
  24. RMT_PAIR, // 遥控器配对
  25. RMT_CLRPAIR, // 遥控器清除配对
  26. RMT_SUM,
  27. };
  28. // H:横向,V:竖向,P:正序,N:负序
  29. enum
  30. {
  31. LCD_HP, // 横向正序
  32. LCD_HN, // 横向负序
  33. LCD_VP, // 竖向正序
  34. LCD_VN, // 竖向负序
  35. LCD_DISP_NUM,
  36. };
  37. #define FRAME_NUMBER 5 // 接收、发送帧缓冲区列表总数:5条
  38. #define UART_FRAME_LEN 256 // 单帧总长度
  39. #define HMI_RECV_EN() {GPIO_R485_OE1_OFF();}
  40. #define HMI_SEND_EN() {GPIO_R485_OE1_ON();}
  41. #define HMI_EN_INIT() {GPIO_R485_OE1_INIT();}
  42. #define SCREEN_LINE_BYTES 20 //屏幕每行字节数
  43. #define SCREEN_ROWS 5 //屏幕的共多少行
  44. #define SCREEN_BYTES (SCREEN_LINE_BYTES*SCREEN_ROWS)
  45. /*按键定义*/
  46. #define HA_KEY_ENTER 1
  47. #define HA_KEY_ESC 2
  48. #define HA_KEY_UP 3
  49. #define HA_KEY_DOWN 4
  50. #define HA_KEY_LEFT 5
  51. #define HA_KEY_RIGHT 6
  52. #define HA_KEY_ADD 7
  53. #define HA_KEY_SUB 8
  54. #define HA_KEY_RST 9 //区号
  55. #define NO_KEY 0xff
  56. #define KE_KEY_LONG_BIT (0x80)
  57. #define KE_KEY_MASK 0x7f
  58. /*hmi发来的命令*/
  59. #define HMI_CMD_POLL 0x00 /*查询命令*/
  60. #define HMI_CMD_INIT_LCD 0x01/*初始化lcd*/
  61. #define HMI_CMD_CLEAR_SCREEN 0x02/*清全屏*/
  62. #define HMI_CMD_WRITE_SINGLE 0x03/*写数据*/
  63. #define HMI_CMD_WRITE_DATAS 0x04/*写连续数据*/
  64. #define HMI_CMD_BLIGHT 0x08/*背光控制*/
  65. #define HMI_CMD_LED 0x09/*面板灯状态*/
  66. #define HMI_CMD_RATE 0x0A/*对比度设置*/
  67. #define HMI_CMD_WIRELESS 0x0B/*遥控器*/
  68. #define HMI_CMD_LEDRUN 0x0C/*跑马灯*/
  69. #define HMI_CMD_LCDRUN 0x0D/*LCD测试*/
  70. #define HMI_CMD_GPRS 0x0E /*GPRS*/
  71. #define HMI_CMD_DOWN 0x0F/*数据下载*/
  72. #define HMI_CMD_RESPOND 0x20// 响应面板帧
  73. #define DRV_CMD_TEMP 0x18 /*lcd驱动板上电报文*/
  74. #define DRV_CMD_POWERON 0x19 /*lcd驱动板上电报文*/
  75. #define DRV_CMD_KEY 0x1A /*lcd驱动板上送按键状态*/
  76. #define DRV_CMD_YX 0x1B /*遥信*/
  77. #define DRV_CMD_SET 0x1C /*定值*/
  78. #define DRV_CMD_YKQ 0x1D /*遥控器*/
  79. #define DRV_CMD_GPRS 0x1E/*GPRS*/
  80. #define DRV_CMD_DOWN 0x1F /*下载报文应答*/
  81. #define UART_FRAME_TYPE_Wireless 0x24 //遥控器运行模式
  82. #define UART_FRAME_TYPE_RM_TEST 0x25//遥控器测试
  83. #define LIGHT_ON 1
  84. #define LIGHT_OFF 0
  85. #define LCD_INTRUST_ADD 1
  86. #define LCD_INTRUST_SUB 0
  87. // #define LCD_KEY_MASK 0x07
  88. #define LCD_KEY_MASK 0x7f // modify by zhy 20201103 增加按键缓存个数
  89. #define LCD_KEY_MAX (LCD_KEY_MASK+1)
  90. /*发给驱动板的指令缓冲区*/
  91. // #define LCD_MAX_INST_MASK 0x07 //发给驱动板的指令最大缓冲个数
  92. #define LCD_MAX_INST_MASK 0x7f //发给驱动板的指令最大缓冲个数 modify by zhy 20201103 增加缓存命令个数
  93. #define LCD_MAX_INST_BUFS (LCD_MAX_INST_MASK+1) //发给驱动板的指令最大缓冲个数
  94. /*发给驱动板的数据定义*/
  95. #define LCD_MAX_CONTINUE_MASK 0x7f
  96. #define LCD_MAX_CONTINUE_BUFS (LCD_MAX_CONTINUE_MASK+1)
  97. #define UART_FRAME_MAXCNT 8 //最大帧数
  98. /*------------------------------ 类型结构 -------------------------------------
  99. */
  100. typedef struct LCD_KEY
  101. {
  102. BYTE tail;
  103. BYTE head;
  104. BYTE keybuf[LCD_KEY_MAX];
  105. }LCD_KEY_DEF;
  106. typedef struct INST //单个数据结构
  107. {
  108. BYTE cmd;
  109. BYTE len;
  110. BYTE para[UART_FRAME_LEN];
  111. }INST_DEF;
  112. typedef struct LCD_INST_BUF
  113. {
  114. BYTE tail;
  115. BYTE head;
  116. INST_DEF tInst[LCD_MAX_INST_BUFS];
  117. }LCD_INST_BUF_DEF;
  118. typedef struct CONTINUE_DATA //连续数据结构
  119. {
  120. BYTE x;
  121. BYTE y;
  122. BYTE attrib;
  123. BYTE dat[24];
  124. }CONTINUE_DATA_DEF;
  125. typedef struct CONTINUE_DATA_BUF //连续数据结构缓冲区
  126. {
  127. BYTE tail;
  128. BYTE head;
  129. BYTE index;
  130. CONTINUE_DATA_DEF tBuf[LCD_MAX_CONTINUE_BUFS];
  131. }CONTINUE_DATA_BUF_DEF;
  132. /*初始化状态定义*/
  133. typedef struct INIT_DATA
  134. {
  135. bool flag;
  136. BYTE para[10];
  137. }INIT_DEF;
  138. /*背光灯状态缓冲区*/
  139. typedef struct LIGHT
  140. {
  141. bool flag;
  142. BYTE light;
  143. }LIGHT_DEF;
  144. typedef struct LCDINTRUST
  145. {
  146. bool flag;
  147. BYTE byAddOrSub;
  148. }LCDINTRUST_DEF;
  149. typedef struct TELE
  150. {
  151. bool flag;
  152. BYTE cmd;
  153. }TELE_DEF;
  154. typedef struct LCD_COMM
  155. {
  156. bool bRecv;
  157. BYTE wait;
  158. BYTE ReSend;
  159. bool bClrScreen;
  160. bool bClrflag;
  161. bool b_init_OK;
  162. bool bVirLcd;
  163. bool bErrComm;
  164. bool bTestLed;
  165. bool bTestLcd;
  166. bool bTeleMatch;
  167. bool bTeleClrMatch;
  168. bool bLcdUpdate;
  169. bool bLedUpdate;
  170. BYTE ExtraCommNo; //外部通信端口
  171. DWORD dwTemprate;
  172. DWORD dWaitT;
  173. INIT_DEF tInit;
  174. LIGHT_DEF tLight;
  175. LCDINTRUST_DEF tLcdIntrust;
  176. LCD_INST_BUF_DEF tInstBuf;
  177. CONTINUE_DATA_BUF_DEF tContinue;
  178. LCD_KEY_DEF tKey;
  179. TELE_DEF tTele;
  180. bool bGps;
  181. BYTE arrGpsData[64];
  182. bool bCall;
  183. }LCD_COMM_DEF;
  184. struct hmi
  185. {
  186. u8 tail[2]; //接收、发送缓冲区存入帧位置
  187. u8 head[2]; //接收、发送缓冲区取出帧位置
  188. u8 num[2]; //接收、发送缓冲区有效帧数量
  189. u8 sendlen[FRAME_NUMBER]; //发送帧长度
  190. u8 recvbuf[FRAME_NUMBER][UART_FRAME_LEN];
  191. u8 sendbuf[FRAME_NUMBER][UART_FRAME_LEN];
  192. //考虑通道强占的情况
  193. };
  194. typedef struct UART_COMM
  195. {
  196. u8 cTypeCounter; //接受帧类型
  197. u8 cRecvLenth; //通道A 接收到数据计数器
  198. u8 cRecvCnt; //有效数据记数
  199. u8 cSendLenth;
  200. u8 cSendCnt;
  201. u8 sum;
  202. u8 recvsum;
  203. u8 bSend;
  204. u32 dTWait;
  205. u8 bData;
  206. u8 s_head;
  207. u8 s_tail;
  208. u8 s_buf[UART_FRAME_MAXCNT][UART_FRAME_LEN];
  209. u8 r_head;
  210. u8 r_tail;
  211. u8 r_buf[UART_FRAME_MAXCNT][UART_FRAME_LEN];
  212. }UART_COMM;
  213. /*------------------------------ 变量声明 -------------------------------------
  214. */
  215. extern DWORD dHMIDiStatus;
  216. extern LCD_COMM_DEF g_tLcdComm;
  217. extern UART_COMM g_tUartHMI;
  218. extern char m_TzCount[12];
  219. extern char m_HzCount[12];
  220. /*------------------------------ 函数声明 -------------------------------------
  221. */
  222. void Add_Continue_Data(BYTE x,BYTE y,BYTE *pdat,BYTE len,BYTE mode);
  223. void Add_Clear_Screen(void);
  224. void add_led_test(u8 test_no);
  225. BYTE Get_Key(void);
  226. void InitLcdComm(void);
  227. void HMI_Comm_App(void);
  228. void HMI_Board_Recv(int len,BYTE *para);
  229. void add_rmt_pair(u8 pair);
  230. int hzk_exit(void);
  231. #endif