forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

周巍
2024-04-11 91ef77c00ed797b1048c5187f416e351e646a009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
#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;// Ä³ÖÖÀàÐÍÈÕÖ¾µÄ´æ´¢¿Õ¼ä¶¨ÒåµÄÊý¾Ý×ÜÌõÊý£¬±ÈÈçÆô¶¯±¨¾¯µÄ¼Ç¼×ÜÌõÊýΪ20Ìõ¡£
    u16     log_type_length;// Ä³ÖÖÀàÐÍÈÕÖ¾µÄµ¥ÌõÊý¾Ý³¤¶È
    u16     log_type_count;// Ä³ÖÖÀàÐÍÈÕÖ¾µ±Ç°´æÓеÄÊýÁ¿
    
    
    
    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