#ifndef _UPPER_COMMUNICATION_PROTOCOL_H
|
#define _UPPER_COMMUNICATION_PROTOCOL_H
|
#include <stm32f10x.h>
|
#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
|