#ifndef _UPPER_COMMUNICATION_PROTOCOL_H #define _UPPER_COMMUNICATION_PROTOCOL_H #include #include "datatype.h" #include "sys.h" #include "RS485.h" #include "BT.h" #define COM_FRAME_VERSION 0x0001 #define PC_RS485BT_CON_EN_PIN_NUM GPIO_Pin_2 //02-019 #define PC_RS485BT_CON_EN_PIN_GROUP GPIOE #define PC_RS485__POWER_EN_PIN_NUM GPIO_Pin_1 #define PC_RS485__POWER_EN_PIN_GROUP GPIOD #define BT_RS485_TX_PIN_NUM GPIO_Pin_10 #define BT_RS485_TX_PIN_GROUP GPIOB #define BT_RS485_RX_PIN_NUM GPIO_Pin_11 #define BT_RS485_RX_PIN_GROUP GPIOB #define BT_RS485_RESET_PIN_NUM GPIO_Pin_8 #define BT_RS485_RESET_PIN_GROUP GPIOE #define PC_RS485_EN PEout(2) //485 mode control.0,receive;1,send. #define BT__POWER_ON PEout(7) = 1; #define BT__POWER_OFF PEout(7) = 0; #define PC_RS485__POWER_ON PDout(1) = 1; #define PC_RS485__POWER_OFF PDout(1) = 0; #define BT_RS485_RESET_HIGH PEout(8) = 1; #define BT_RS485_RESET_LOW PEout(8) = 0; #define BT_RS485_RX_LENGTH BT_RX_LENGTH #define BT_RS485_USARTNUM USART3 #define BT_RS485_DMARX_CH DMA1_Channel3 #define BT_RS485_DMATX_CH DMA1_Channel2 #define COM_FRAME_HEAD_CODE 0x68 #define COM_FRAME_UP_TYPE_PC 0x00 #define COM_FRAME_UP_TYPE_APP 0x01 #define COM_FRAME_HEAD_LENGTH 12 //Êý¾ÝÓò֮ǰµÄ×Ü×Ö½ÚΪ12 #define COM_FRAME_FIRST_DATA_INDEX 14 //Êý¾ÝÓòµÚÒ»¸öÊý¾ÝµÄË÷Òý£¬IDÖ®ºóµÄµÚÒ»¸öÓÐЧÊý¾Ý #define COM_FRAME_CONTROL_CODE_LOGIN 0x11 #define COM_FRAME_CONTROL_CODE_LOGOUT 0x12 #define COM_FRAME_CONTROL_CODE_WRITE_PARA 0x42 #define COM_FRAME_CONTROL_CODE_READ_PARA 0x52 #define COM_FRAME_CONTROL_CODE_READ_LOG_NUM 0x82 #define COM_FRAME_CONTROL_CODE_READ_LOG_BY_TIME 0x83 //Êý¾ÝÀà±ðIDÁбí #define EQUIPMENT_BASIC_INF_ID 1 //É豸»ù´¡ÐÅÏ¢²ÎÊý #define MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_ID 2 //É豸ÈíÓ²¼þÐÅÏ¢¡ªÖ÷°å #define LCD_EQUIPM_HARDWARE_SOFTWARE_INF_ID 3 //É豸ÈíÓ²¼þÐÅÏ¢¡ªLCD°å #define WIRELESS_EQUIPM_HARDWARE_SOFTWARE_INF_ID 4 //É豸ÈíÓ²¼þÐÅÏ¢¡ªÎÞÏß°å #define PRE_EQUIPM_HARDWARE_SOFTWARE_INF_ID 5 //É豸ÈíÓ²¼þÐÅÏ¢¡ªÑ¹Á¦±äËÍÆ÷ #define TEM_EQUIPM_HARDWARE_SOFTWARE_INF_ID 6 //É豸ÈíÓ²¼þÐÅÏ¢¡ªÎ¶ȱäËÍÆ÷ #define SONIC_SENSOR_EQUIPM_HARDWARE_SOFTWARE_INF_ID 7 //É豸ÈíÓ²¼þÐÅÏ¢¡ª³¬Éù²¨´«¸ÐÆ÷ #define REALTIME_DATA_ID 8 //ʵʱ²ÎÊý #define STATISTICAL_DATA_ID 9 //ͳ¼ÆÊý¾Ý #define DEVICE_SIZE_INF_ID 10 //̽ͷÉùËÙУ׼²ÎÊý #define ULTRASONIC_SENSOR_TRIGE_LEVEL_ID 11 //´¥·¢ÏßÉèÖà #define ULTRASONIC_SENSOR_TRIGE_LEVEL_REAL_ID 12 //ÕæÊµ´¥·¢Ïß²éѯ #define POSITIVE_FLOW_POINT_CORRECT_ID 13 //ÕýÏòÁ÷Á¿±ê¶¨ÐÞÕý²ÎÊý #define POSITIVE_REAL_FLOW_POINT_CORRECT_ID 14 //ÕýÏòʵ¼ÊÁ÷Á¿±ê¶¨ÐÞÕý²ÎÊý #define POSITIVE_FLOW_POINT_SECOND_ID 15 //ÕýÏòÁ÷Á¿¶þ´ÎÐÞÕý²ÎÊý #define POSITIVE_REAL_FLOW_POINT_SECOND_ID 16 //ÕýÏòʵ¼ÊÁ÷Á¿¶þ´ÎÐÞÕý²ÎÊý #define POSITIVE_FLOW_POINT_OTHER_ID 17 //ÕýÏòÁ÷Á¿ÆäËûÐÞÕý²ÎÊý #define REVERSE_FLOW_POINT_CORRECT_ID 18 //·´ÏòÁ÷Á¿±ê¶¨ÐÞÕý²ÎÊý #define REVERSE_REAL_FLOW_POINT_CORRECT_ID 19 //·´Ïòʵ¼ÊÁ÷Á¿±ê¶¨ÐÞÕý²ÎÊý #define REVERSE_FLOW_POINT_SECOND_ID 20 //·´ÏòÁ÷Á¿¶þ´ÎÐÞÕý²ÎÊý #define REVERSE_REAL_FLOW_POINT_SECOND_ID 21 //·´Ïòʵ¼ÊÁ÷Á¿¶þ´ÎÐÞÕý²ÎÊý #define REVERSE_FLOW_POINT_OTHER_ID 22 //·´ÏòÁ÷Á¿ÆäËûÐÞÕý²ÎÊý #define FLOW_LIMIT_ID 30 //Á÷Á¿ÅäÖòÎÊý #define PRESSURE_PARA_ID 31 //ѹÁ¦ÅäÖòÎÊý #define TEMPERATURE_PARA_ID 32 //ζÈÅäÖòÎÊý #define LOW_PULSE_PARA_ID 33 //µÍƵÂö³å²ÎÊý #define ELECTRIC_CURRENT_LOOP_ID 34 //µçÁ÷»·ÅäÖòÎÊý #define DEVICE_MODBUS_BTL_ID 35 //RS485ÅäÖòÎÊý #define DEVICE_PASSWORD_ID 36 //ÉÏλ»ú/APPÃÜÂë #define MEASURE_FREEZ_PARA_ID 37 //¼ÆÁ¿¶³½á²ÎÊý #define NETWORK_COM_PARA_ID 38 //˼ÖþÍøÂçÅäÖòÎÊý #define BATTERY_PARA_ID 39 //µç³ØÅäÖòÎÊý #define ULTRASONIC_SENSOR_ABNORMAL_PARA_ID 40 //̽ͷÒì³£Åж¨²ÎÊý #define HIGH_PLUSE_PARA_ID 41 //¸ßƵÂö³å²ÎÊý #define DEVICE_REAL_TIME_ID 45 //ʱ¼ä #define USER_PASSWORD_MODIFY_ID 46 //Óû§ÃÜÂëÐÞ¸Ä #define DEBUG_STATE_SET_ID 60 //µ÷ÊÔ״̬ÉèÖà #define DEBUG_PARA_SET_ID 61 //µ÷ÊÔ²ÎÊýÉèÖà #define ORIGINAL_WAVEFORM_DATA_READ_ID 62 //ԭʼ²¨ÐζÁÈ¡ #define PARA_INIT_ID 65 //²ÎÊý³õʼ»¯ #define NETWORK_COM_APN_INFO_ID 66 //APN //×éºÏ²ÎÊý #define FLOW_TEM_PRE_ID 0x1001 //Á÷Á¿ÎÂѹ×éºÏÅäÖà #define SYNTHESIZE_FUN_1_ID 0x1002 //×ۺϹ¦ÄÜÅäÖÃ1 #define INTERVAL_FREEZ_LOG_ID 0x0101 //¼ä¸ôÊý¾Ý¼Ç¼ #define HOURLY_FREEZ_LOG_ID 0x0111 //СʱÊý¾Ý¼Ç¼ #define DAYLY_FREEZ_LOG_ID 0x0112 //ÈÕÊý¾Ý¼Ç¼ #define MONTHLY_FREEZ_LOG_ID 0x0113 //ÔÂÊý¾Ý¼Ç¼ //#define SYSTEM_ALARM_SYSTEM_START_LOG_ID 0x0201 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_BAT_POWER_LOG_ID 0x0202 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_PRE_LOG_ID 0x0203 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_TEM_LOG_ID 0x0204 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_FLOW_LOG_ID 0x0205 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_EX_POWER_LOG_ID 0x0206 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_COVER_OPEN_LOG_ID 0x0207 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_FLOW_START_STOP_LOG_ID 0x0208 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_AMBIENT_TEM_LOG_ID 0x0209 //ϵͳ±¨¾¯¼Ç¼ //#define SYSTEM_ALARM_LCD_LOG_ID 0x020A //ϵͳ±¨¾¯¼Ç¼ #define SYSTEM_ALARM_LOG_ID 0x0201 #define VALVE_ACTION_LOG_ID 0x0401 #define FLOW_MEASURE_ALARM_LOG_ID 0x0250 //²âÁ¿Òì³£¼Ç¼ #define CUMULAT_MODIFY_LOG_ID 0x0301 //ÀÛ»ýÁ¿Ð޸ļǼ #define FLOW_CORRECT_PARAM_MODIFY_LOG_ID 0x0302 //Á÷Á¿ÐÞÕý²ÎÊýÐ޸ļǼ #define PRE_CONFIG_PARAM_MODIFY_LOG_ID 0x0303 //ѹÁ¦ÅäÖòÎÊýÐ޸ļǼ #define TEM_CONFIG_PARAM_MODIFY_LOG_ID 0x0304 //ζÈÅäÖòÎÊýÐ޸ļǼ #define FLOW_CONFIG_PARAM_MODIFY_LOG_ID 0x0305 //Á÷Á¿ÅäÖòÎÊýÐ޸ļǼ #define LOW_PULSE_CONFIG_PARAM_MODIFY_LOG_ID 0x0306 //µÍƵÂö³å²ÎÊýÐ޸ļǼ #define CURRENT_LOOP_CONFIG_PARAM_MODIFY_LOG_ID 0x0307 //µçÁ÷»·ÅäÖòÎÊýÐ޸ļǼ #define SONIC_SENSOR_CALIBRATION_PARAM_MODIFY_LOG_ID 0x0308 //̽ͷУ׼²ÎÊýÐ޸ļǼ #define SONIC_SENSOR_ABNORMAL_PARAM_MODIFY_LOG_ID 0x030C //̽ͷÒì³£Åж¨Ð޸ļǼ #define SYSTEM_FUNCTION_CONTROL_WORD_MODIFY_LOG_ID 0x030D //ϵͳ¹¦ÄÜ¿ØÖÆ×ÖÐ޸ļǼ //#define BALANCE_LOW_ALARM_VALUE_ID 0x1211 //Óà¶î±¨¾¯¶î¶ÈÅäÖà //#define SYSTEM_VALVE_CTRL_ID 0x1212 //·§¿ØÉèÖà //#define SYSTEM_STATUS_WORD_ID 0x2005 //ϵͳ״̬×Ö //#define SYSTEM_FUNCTION_CTRL_WORD_ID 0x2006 //ϵͳ¹¦ÄÜ¿ØÖÆ×Ö //#define SYSTEM_ALARM_CTRL_WORD_ID 0x2007 //ϵͳ±¨¾¯¿ØÖÆ×Ö //#define SYSTEM_ALARM_REPORT_CTRL_WORD_ID 0x2008 //ϵͳ±¨¾¯Éϱ¨¿ØÖÆ×Ö //#define SYSTEM_CLOSE_VALVE_CTL_ID 0x2009 //¹Ø·§¿ØÖÆ×Ö #define CUMULANT_MODIFY_ID 0x0508 //ÀÛ»ýÁ¿ÐÞ¸Ä #define SYSTEM_STATUS_WORD_ID 0x0509 //ϵͳ״̬×Ö #define SYSTEM_FUNCTION_CTRL_WORD_ID 0x050A //ϵͳ¹¦ÄÜ¿ØÖÆ×Ö #define SYSTEM_ALARM_CTRL_WORD_ID 0x050B //ϵͳ±¨¾¯¿ØÖÆ×Ö #define SYSTEM_CLOSE_VALVE_CTRL_WORD_ID 0x050C //¹Ø·§¿ØÖÆ×Ö #define SYSTEM_VALVE_CTRL_ID 0x050D //·§ÃÅ¿ØÖÆ #define CONDITION_CLOSE_VALVE_ID 0x0603 //Ìõ¼þ¹Ø·§ÅäÖà #define SUPPER_ADMIN 100 //³¬¼¶¹ÜÀíÔ± #define MANAGE_USER 1 //¹ÜÀíÔ± #define ADVANCED_USER 2 //¸ß¼¶Óû§ #define GENERAL_USER 3 //ÆÕͨÓû§ #pragma pack(1) typedef struct com_frame_inf { u8 frame_head; //Ö¡Í· u8 type_of_up_com;//ÉÏλ»úÀàÐÍ u8 operation_level;//²Ù×÷¼¶±ð u8 manufacturer_code[2];// ³§¼Ò´úÂë,2×Ö½ÚBCD u8 use_password[2];//ÃÜÂë,2×Ö½ÚBCD u16 random_number;//Ëæ»úÂë,ʹÓõÄʱºò×¢Òâ¸ßµÍ×Ö½Ú u8 control_code;//¿ØÖÆÂë u16 data_field_length;//Êý¾ÝÓò³¤¶È u16 data_category_ID; //Êý¾ÝÀà±ðID u16 crc; }COM_FRAME_INF_T; #define NO_INTERACTION_TIMEOUT_TIME 7200 //³¬Ê±Í˳öʱ¼ä typedef struct up_com_run_para_t { u16 no_interaction_timeout_cnt; }UP_COM_RUN_PARA_T; typedef struct flow_device_special_function_inf { u8 table256_special_function_flag; u8 table_file_send_flag; u8 table_para_log_send_flag; }FLOW_DEVICE_SPECIAL_FUNCTION_INF_T; //#define LOG_READ_ONE_FRAME_MAXIMUM typedef struct log_sizhu_pc_run_t { u16 log_all_num; //¶ÁÈÕÖ¾ËÑË÷µ½µÄ×ÜÌõÊý u16 log_rest_num;//Ê£ÏÂÌõÊý£¬ÓÃÓÚÌõÊýÌ«¶à£¬ÐèÒª¶à´ÎÐø´« u32 data_search_addr; //»ñÈ¡Êý¾ÝµÄµØÖ·£¬ÓÃÓÚËÑË÷Íê³ÉÖ®ºóÔÙÈ¥¸ÃµØÖ·¶ÁÈ¡Êý¾Ý u32 data_search_first_addr; //Êý¾ÝÊ×´ÎËÑË÷µÄµØÖ· u32 data_start_addr; //ijÈÕÖ¾´æ´¢µÄÆðʼµØÖ· u32 data_end_addr; //ijÈÕÖ¾´æ´¢µÄ½ØÖ¹µØÖ· u16 log_type_EEprom_length; //´æ´¢Êý¾ÝµÄ³¤¶È£¬ºÍlog_type_lengthչʾÊý¾ÝµÄ³¤¶È²»Ò»¶¨µÈ³¤£¬Èç¹ûÒ»Ñù³¤¾ÍËæ±ãÓÃÒ»¸ö£¬Èç¹û²»Ò»Ñù³¤ÐèÒª·Ö¿ªÊ¹Óà u16 log_type_all_num;// ijÖÖÀàÐÍÈÕÖ¾µÄ´æ´¢¿Õ¼ä¶¨ÒåµÄÊý¾Ý×ÜÌõÊý£¬±ÈÈçÆô¶¯±¨¾¯µÄ¼Ç¼×ÜÌõÊýΪ20Ìõ¡£ u16 log_type_length;// ijÖÖÀàÐÍÈÕÖ¾µÄµ¥ÌõÊý¾Ý³¤¶È u16 log_type_count;// ijÖÖÀàÐÍÈÕÖ¾µ±Ç°´æÓеÄÊýÁ¿ uint8_t per_log_read_log_type; uint16_t per_log_read_set_count; /*log¶ÁÈ¡²ÎÊýÉ趨*/ uint32_t per_log_read_addr; uint16_t per_log_read_count; uint16_t per_log_have_count; uint32_t per_log_array_addr; }LOG_SIZHU_PC_RUN_T; #pragma pack() #define SEND_BUFFER_LENGTH 1000 extern u8 BT_RS485_HANDLE_RX_BUFF[BT_RS485_RX_LENGTH]; extern u8 log_send_buffer[SEND_BUFFER_LENGTH]; extern FLOW_DEVICE_SPECIAL_FUNCTION_INF_T flow_device_special_function_g; extern LOG_SIZHU_PC_RUN_T log_run_para_pc_g; #define OLD_PARA_BUFFER_LENGTH 100 extern uint8_t para_log_old_data_buffer[OLD_PARA_BUFFER_LENGTH]; #define NEW_PARA_BUFFER_LENGTH 100 extern uint8_t para_log_new_data_buffer[NEW_PARA_BUFFER_LENGTH]; //extern u8 First_send_flag; extern COM_FRAME_INF_T com_frame_inf_g; extern UP_COM_RUN_PARA_T up_com_run_para_g; //void read_para_log_test(void); void PC_RS485__POWER_Init(void); u8 BT_RS485_RECEIVE_PROCESS( u16 * Rcv_data_len ); void sizhu_rv_hard_init(void); u8 sizhu_rv_handle(void); void up_com_run_para_init(void); u8 TimeCompara(u8* TimeBCD1, u8* TimeBCD2) ;//6×Ö½ÚBCDʱ¼äÓ뵱ǰʱ¼ä±È½Ï£¬µ±Ç°Ê±¼ä´ó·µ»Ø0£¬ÏàµÈ·µ»Ø1£¬µ±Ç°Ê±¼äС·µ»Ø2¡£ ´ËÍ⣬ËÑË÷µÄʱ¼ä¸ñʽÎÞЧҲ·µ»Ø0£¬¼ÌÐøËÑË÷¡£ #endif