From 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 19 Jun 2024 17:25:45 +0800
Subject: [PATCH] 增加OTA协议

---
 Function/STORAGE/sizhu_history_record.c |  521 +++++++++++++++++++--------------------------------------
 1 files changed, 174 insertions(+), 347 deletions(-)

diff --git a/Function/STORAGE/sizhu_history_record.c b/Function/STORAGE/sizhu_history_record.c
index 09513d9..2edd5f7 100644
--- a/Function/STORAGE/sizhu_history_record.c
+++ b/Function/STORAGE/sizhu_history_record.c
@@ -1,342 +1,21 @@
 #include "sizhu_history_record.h"
 #include "system_mem_para.h"
+#include "rs485_data_analysis_pro.h"
+#include "power_manage.h"
+#include "mbcrc1.h"
+#include "system_flash_mem_manage.h"
+#include "system_eep_mem_manage.h"
 
 
-LOG_SIZHU_HISTORY_RUN_T		log_sizhu_history_run_g;
-LOG_SIZHU_LOG_SAVE_T		ufg620_log_g;
-
-
-
-
-
-
-/*��ʷ��¼������ʼ��eerrom*/
-uint8_t sizhu_historical_eeprom_default_init(void)
-{
-	
-//	/*�洢�ռ�������IJ���5000����ô���ش���ֵ*/
-//	
-//	//
-//	log_sizhu_history_run_g.per_period_log.log_count        = 0;
-//	log_sizhu_history_run_g.per_hour_log.log_count        = 0;
-//	log_sizhu_history_run_g.per_day_log.log_count        = 0;
-//	log_sizhu_history_run_g.per_month_log.log_count        = 0;
-
-//	
-//	EEPROM_data_write_uint16(log_sizhu_history_run_g.per_period_log.log_count, (STRUCT_PER_PERIOD_OFFSET) );
-//	EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, (STRUCT_PER_HOUR_OFFSET) );
-//	EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, (STRUCT_PER_DAY_OFFSET) );
-//	EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, (STRUCT_PER_MONTH_OFFSET) );
-//	
-//	log_sizhu_history_run_g.per_period_log.log_addr_begin   = PER_PERIOD_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_hour_log.log_addr_begin 	  = PER_HOUR_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_day_log.log_addr_begin  		= PER_DAY_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_month_log.log_addr_begin    = PER_MONTH_LOG_OFFSET;
-
-//	log_sizhu_history_run_g.per_period_log.log_addr_save 		= PER_PERIOD_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_hour_log.log_addr_save 		= PER_HOUR_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_day_log.log_addr_save  	= PER_DAY_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_month_log.log_addr_save  	= PER_MONTH_LOG_OFFSET;
-//	
-//	EEPROM_data_write_uint32(log_sizhu_history_run_g.per_period_log.log_addr_save , (STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET) );
-//	EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , (STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET) );
-//	EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save, (STRUCT_DAY_LOG_ADDR_SAVE_OFFSET) );
-//	EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save, (STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET) );
-	
-	return 1;	
-}
-
-
-
-uint8_t sizhu_historical_record_clean(uint32_t epprom_begin_addr, LOG_SIZHU_RUN_T * log_run_ptr)
-{
-	
-	
-	return 1;	
-}
-
-
-/******************************************
- * func: sizhu_historical_record_only_read_init
- * desc: ��ʷ���ݴ洢������ȡ
- * input: none
- * output: none
- * return: none
- *****************************************/
-uint8_t sizhu_historical_record_only_read_init(void)
-{
-//	log_sizhu_history_run_g.per_period_log.log_count 		=  eeprom_data_read_uint16(STRUCT_PER_PERIOD_OFFSET);
-//	log_sizhu_history_run_g.per_hour_log.log_count 			=  eeprom_data_read_uint16(STRUCT_PER_HOUR_OFFSET);
-//	log_sizhu_history_run_g.per_day_log.log_count 			=  eeprom_data_read_uint16(STRUCT_PER_DAY_OFFSET);
-//	log_sizhu_history_run_g.per_month_log.log_count 		=  eeprom_data_read_uint16(STRUCT_PER_MONTH_OFFSET);
-//	
-//	log_sizhu_history_run_g.per_period_log.log_addr_begin   =  PER_PERIOD_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_hour_log.log_addr_begin 	  =  PER_HOUR_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_day_log.log_addr_begin    	=  PER_DAY_LOG_OFFSET;
-//	log_sizhu_history_run_g.per_month_log.log_addr_begin   	=  PER_MONTH_LOG_OFFSET;
-//	
-//	log_sizhu_history_run_g.per_period_log.log_addr_save	=  eeprom_data_read_uint32(STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET);
-//	log_sizhu_history_run_g.per_hour_log.log_addr_save 		=  eeprom_data_read_uint32(STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET);
-//	log_sizhu_history_run_g.per_day_log.log_addr_save 		=  eeprom_data_read_uint32(STRUCT_DAY_LOG_ADDR_SAVE_OFFSET);
-//	log_sizhu_history_run_g.per_month_log.log_addr_save 	=  eeprom_data_read_uint32(STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET);	
-//	
-//	
-//	if((log_sizhu_history_run_g.per_period_log.log_addr_save > PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_period_log.log_addr_save < PER_PERIOD_LOG_OFFSET))
-//	{
-//		log_sizhu_run_g.per_period_log_count        = 0;	
-//		log_sizhu_history_run_g.per_period_log.log_addr_save 		= PER_PERIOD_LOG_OFFSET;		
-//	}
-//	
-//	if((log_sizhu_history_run_g.per_hour_log.log_addr_save > PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
-//	{
-//		log_sizhu_history_run_g.per_hour_log.log_count 					= 0;
-//		log_sizhu_history_run_g.per_hour_log.log_addr_save 			= PER_HOUR_LOG_OFFSET;
-//	}
-//	
-//	if((log_sizhu_history_run_g.per_day_log.log_addr_save > PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
-//	{
-//		log_sizhu_history_run_g.per_day_log.log_count 					= 0;
-//		log_sizhu_history_run_g.per_day_log.log_addr_save 			= PER_DAY_LOG_OFFSET;		
-//	}
-//	
-//	if((log_sizhu_history_run_g.per_month_log.log_addr_save > PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
-//	{
-//		log_sizhu_history_run_g.per_month_log.log_count 					= 0;
-//		log_sizhu_history_run_g.per_month_log.log_addr_save 			= PER_MONTH_LOG_OFFSET;	
-//	}
-	
-	
-	return 1;	
-}
-
-//uint16_t sizhu_historical_period_log(void)
-//{
-//	return log_sizhu_run_g.per_period_log_count;
-//}
-
-//uint16_t sizhu_historical_hour_log(void)
-//{
-//	return log_sizhu_history_run_g.per_hour_log.log_count;
-//}
-
-//uint16_t sizhu_historical_day_log(void)
-//{
-//	return log_sizhu_history_run_g.per_day_log.log_count;
-//}
-//uint16_t sizhu_historical_month_log(void)
-//{
-//	return log_sizhu_history_run_g.per_month_log.log_count;
-//}
-
-
-uint8_t sizhu_historical_read_init(u32 * read_addr, u16 * save_count, uint8_t logtype)
-{
-	 
-//	if(logtype == LOG_SIZHU_PERIOD_TYPE)
-//	{
-//		*read_addr 	= log_sizhu_run_g.per_period_log_addr_save;		
-//		*save_count	= log_sizhu_run_g.per_period_log_count;
-//	}else if(logtype == LOG_SIZHU_HOUR_TYPE)
-//	{
-//		*read_addr 	= log_sizhu_history_run_g.per_hour_log.log_addr_save;		
-//		*save_count	= log_sizhu_history_run_g.per_hour_log.log_count;
-//	}else if(logtype == LOG_SIZHU_DAY_TYPE)
-//	{
-//		*read_addr 	= log_sizhu_history_run_g.per_day_log.log_addr_save;
-//		*save_count	= log_sizhu_history_run_g.per_day_log.log_count;
-//	}else if(logtype == LOG_SIZHU_MONTH_TYPE)
-//	{
-//		*read_addr 	= log_sizhu_history_run_g.per_month_log.log_addr_save;
-//		*save_count	= log_sizhu_history_run_g.per_month_log.log_count;
-//	}
-	return 1;	
-}
-
-void file_data(uint8_t	* ptr_ary)
-{
-//	LOG_SIZHU_LOG_SAVE_T * log_str;
-//	
-//	log_str = (LOG_SIZHU_LOG_SAVE_T *)ptr_ary; 
-//	
-//	
-//	log_str->Sample_year						= 0x19;
-//	log_str->Sample_month						= 0x10;
-//	log_str->Sample_day							= 0x18;
-//	log_str->Sample_hour						= 0x15;
-//	log_str->Sample_min							= 0x33;
-//	log_str->Sample_sec							= 0x12;
-//	
-//	log_str->StandardGasUsageTotal	= 123.12;
-//	log_str->WorkingGasUsageTotal	= 456.67;
-
-//	log_str->Standardvec						= 135.79;
-
-//	
-//	log_str->Temperature						= 12.12;
-//	log_str->Pressure	  						= 123;
-//	
-
-}
-
-
-/******************************************
- * func: sizhu_period_historical_record_save
- * desc: ��ʷ���ݴ洢
- * input: none
- * output: none
- * return: none
- *****************************************/
-uint8_t sizhu_period_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_PERIOD_T * log_run_ptr)
-{
-//	if(logtype == LOG_SIZHU_PERIOD_TYPE)
-//	{
-//		
-//		eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_run_g.per_period_log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_PERIOD_T) );
-//		
-//		
-//		if((log_sizhu_run_g.per_period_log_addr_save >= PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_run_g.per_period_log_addr_save < PER_PERIOD_LOG_OFFSET))
-//		{
-//			log_sizhu_run_g.per_period_log_addr_save = PER_PERIOD_LOG_OFFSET; 
-//			
-//		}else
-//		{
-//			log_sizhu_run_g.per_period_log_addr_save =  log_sizhu_run_g.per_period_log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_PERIOD_T);
-//			
-//		}
-//		
-//		
-//		
-//		if(log_sizhu_run_g.per_period_log_count >= PERIOD_LOG_NUM)
-//		{
-//			
-//			log_sizhu_run_g.per_period_log_count  = PERIOD_LOG_NUM;
-//			
-//		}else
-//		{
-//			log_sizhu_run_g.per_period_log_count  ++;
-//			
-//		}
-//		
-//		EEPROM_data_write_uint16(log_sizhu_run_g.per_period_log_count, ( STRUCT_PER_PERIOD_OFFSET ) );
-//		EEPROM_data_write_uint32(log_sizhu_run_g.per_period_log_addr_save , ( STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET ) );
-//		
-//				
-//	}
-//	
-	return 1;	
-}
-uint8_t sizhu_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_T * log_run_ptr)
-{
-	
-	/**/
-//	if(logtype == LOG_SIZHU_HOUR_TYPE)
-//	{
-//		
-//		eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_hour_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
-//		
-//		
-//		if((log_sizhu_history_run_g.per_hour_log.log_addr_save >= PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
-//		{
-//			log_sizhu_history_run_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET; 
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_hour_log.log_addr_save =  log_sizhu_history_run_g.per_hour_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
-//		}
-//		
-//		if(log_sizhu_history_run_g.per_hour_log.log_count >= HOUR_LOG_NUM)
-//		{
-//			
-//			log_sizhu_history_run_g.per_hour_log.log_count  = HOUR_LOG_NUM;
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_hour_log.log_count  ++;
-//			
-//		}
-//		
-//		EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, ( STRUCT_PER_HOUR_OFFSET ) );
-//		EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , ( STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET ) );
-//		
-//		
-//		
-//		
-//	}else if(logtype == LOG_SIZHU_DAY_TYPE)
-//	{
-//		eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_day_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
-//		
-//		
-//		if((log_sizhu_history_run_g.per_day_log.log_addr_save >= PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
-//		{
-//			log_sizhu_history_run_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET;
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_day_log.log_addr_save =  log_sizhu_history_run_g.per_day_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
-//		}
-//		
-//		if(log_sizhu_history_run_g.per_day_log.log_count >= DAY_LOG_NUM)
-//		{
-//			
-//			log_sizhu_history_run_g.per_day_log.log_count  = DAY_LOG_NUM;
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_day_log.log_count  ++;
-//			
-//		}
-//		
-//			
-//		EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, ( STRUCT_PER_DAY_OFFSET ) );
-//		EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save , ( STRUCT_DAY_LOG_ADDR_SAVE_OFFSET ) );
-//		
-//		
-//	}else if(logtype == LOG_SIZHU_MONTH_TYPE)
-//	{
-//		eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_month_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
-//		
-//		
-//		if((log_sizhu_history_run_g.per_month_log.log_addr_save >= PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
-//		{
-//			log_sizhu_history_run_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET;
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_month_log.log_addr_save =  log_sizhu_history_run_g.per_month_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
-//		}
-//		
-//		if(log_sizhu_history_run_g.per_month_log.log_count >= MONTH_LOG_NUM)
-//		{
-//			
-//			log_sizhu_history_run_g.per_month_log.log_count  = MONTH_LOG_NUM;
-//			
-//		}else
-//		{
-//			log_sizhu_history_run_g.per_month_log.log_count  ++;
-//			
-//		}
-//		
-//				
-//		EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, ( STRUCT_PER_MONTH_OFFSET ) );
-//		EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save , ( STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET ) );
-//		
-//		
-//		
-//	}
-//	
-//	
-		return 1;	
-
-}
-
+FlagStatus interval_report_record_flag = RESET;
 
 
 
 /*��־��ȡ����*/
-uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, LOG_SIZHU_LOG_SAVE_T * log_run_ptr)
+uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, SIZHU_HISTORY_MDH_T * log_run_ptr)
 {
 	
-//	u32		addr_save;
+	u32		addr_save = 0;
 //	
 //	//addr_save = addr_length;
 //	if(logtype == LOG_SIZHU_HOUR_TYPE)
@@ -346,17 +25,17 @@
 //		//���
 //		if(addr == PER_HOUR_LOG_OFFSET)
 //		{
-//			addr_save = PER_HOUR_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = PER_HOUR_LOG_OFFSET_END - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}else
 //		{
 
-//			addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = addr - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}
 //		
 //		
-//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
+//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(SIZHU_HISTORY_MDH_T) );
 
 //		
 //	}else if(logtype == LOG_SIZHU_DAY_TYPE)
@@ -364,17 +43,17 @@
 //		//���
 //		if(addr <= PER_DAY_LOG_OFFSET)
 //		{
-//			addr_save = PER_DAY_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = PER_DAY_LOG_OFFSET_END - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}else
 //		{
 
-//			addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = addr - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}
 //		
 //		
-//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
+//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(SIZHU_HISTORY_MDH_T) );
 //		
 //		
 //	}else if(logtype == LOG_SIZHU_MONTH_TYPE)
@@ -382,33 +61,177 @@
 //	//���
 //		if(addr <= PER_MONTH_LOG_OFFSET)
 //		{
-//			addr_save = PER_MONTH_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = PER_MONTH_LOG_OFFSET_END - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}else
 //		{
 
-//			addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T);
+//			addr_save = addr - sizeof(SIZHU_HISTORY_MDH_T);
 //			
 //		}
 //		
 //		
-//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
+//		eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(SIZHU_HISTORY_MDH_T) );
 //		
 //		
 //		
 //	}
 //	
-////	eeprom_multiple_data_read( (uint8_t *)&ufg620_log_g,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
+////	eeprom_multiple_data_read( (uint8_t *)&ufg620_log_g,addr_save, sizeof(SIZHU_HISTORY_MDH_T) );
 //	
-//	return addr_save;	
+	return addr_save;	
 
 
 }
 
+//�������洢
+void sizhuIntervalHistoryRecord(void)
+{
+	SIZHU_HISTORY_INTERVAL_T	sizhu_history_interval_l;
+	
+//	return;  //?û�������ԣ�������
+	
+	arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_history_interval_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN);
+	
+	//���⴦��������С��20ʱ�����ӹ�0��Ϊ���ϱ�ƽ̨�Ķ���ʱ������ÿ�
+	sizhu_history_interval_l.record_time_BCD.sec = (sizhu_history_interval_l.record_time_BCD.sec < 0x20)? 0: sizhu_history_interval_l.record_time_BCD.sec;
+	
+	sizhu_history_interval_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // �������ۻ���
+	sizhu_history_interval_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc;
+	sizhu_history_interval_l.instant_sc = flow_meter_data_g.instant_sc;
+	sizhu_history_interval_l.instant_wc = flow_meter_data_g.instant_wc;   
+	sizhu_history_interval_l.temperature = flow_meter_data_g.temperature;	
+	sizhu_history_interval_l.pressure = flow_meter_data_g.pressure;
+	sizhu_history_interval_l.current_price = save_realtime_data_g.realtime_billing_data_s.price_now;
+	sizhu_history_interval_l.residual_amount = save_realtime_data_g.realtime_billing_data_s.balance_now;
+	sizhu_history_interval_l.cumulate_gas_usage = save_realtime_data_g.realtime_billing_data_s.use_gas_sum;
+	sizhu_history_interval_l.cumulate_fee_usage = save_realtime_data_g.realtime_billing_data_s.use_fee_sum;
+	sizhu_history_interval_l.lith_bat_v = pwr_vol_g.lith_vcc * 10;
+	sizhu_history_interval_l.lith_bat_per = pwr_vol_g.lith_synthesize_per;
+	sizhu_history_interval_l.alka_bat_v = pwr_vol_g.alka_vcc * 10;
+	sizhu_history_interval_l.alka_bat_per = pwr_vol_g.alka_vcc_per;
+	arrayA_2_arrayB((uint8_t *)&system_status_word_g.status_word_union,(uint8_t *)&sizhu_history_interval_l.status_word,sizeof(SYSTEM_STATUS_WORD_T), LITTLE_ENDIAN);
+	
+	//����CRC
+	sizhu_history_interval_l.CRC16_MODBUS = usMBCRC16(0xFFFF, (uint8_t * )&sizhu_history_interval_l.record_time_BCD, sizeof(SIZHU_HISTORY_INTERVAL_T) - sizeof(sizhu_history_interval_l.CRC16_MODBUS) );
+	
+	FLASH_LOG_ADDR_CHECK(log_sizhu_history_ctrl_g.per_interval_log,HISTORY_INTERVAL_START_ADDR,sizeof(SIZHU_HISTORY_INTERVAL_T),HISTORY_INTERVAL_MAX_NUM);
+	
+	FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_history_interval_l,log_sizhu_history_ctrl_g.per_interval_log.log_addr_save,sizeof(SIZHU_HISTORY_INTERVAL_T));
+		
+	FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_interval_log,HISTORY_INTERVAL_START_ADDR,sizeof(SIZHU_HISTORY_INTERVAL_T),HISTORY_INTERVAL_MAX_NUM);	 	 
+	//?�����洢
+	if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g))==FAIL){
+		
+	}
+}
+
+//����Сʱ�洢
+void sizhuMDHHistoryRecord(HISTORY_TYPE history_type)
+{
+	SIZHU_HISTORY_MDH_T	sizhu_history_l;
+	
+	return;  //?û�������ԣ�������
+	
+	arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_history_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN);
+	//���⴦�����ӹ�0��Ϊ�˹����ÿ�
+	sizhu_history_l.record_time_BCD.sec = 0;
+	
+	sizhu_history_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // �������ۻ���
+	sizhu_history_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc;
+	sizhu_history_l.instant_sc = flow_meter_data_g.instant_sc;
+	sizhu_history_l.instant_wc = flow_meter_data_g.instant_wc;   
+	sizhu_history_l.temperature = flow_meter_data_g.temperature;	
+	sizhu_history_l.pressure = flow_meter_data_g.pressure;
+	sizhu_history_l.current_price = save_realtime_data_g.realtime_billing_data_s.price_now;
+	sizhu_history_l.residual_amount = save_realtime_data_g.realtime_billing_data_s.balance_now;
+
+	
+	//����CRC
+	sizhu_history_l.CRC16_MODBUS = usMBCRC16(0xFFFF, (uint8_t * )&sizhu_history_l.record_time_BCD, sizeof(SIZHU_HISTORY_MDH_T) - sizeof(sizhu_history_l.CRC16_MODBUS) );
+	
+	switch(history_type){
+	case HISTORY_TYPE_MONTH:
+			FLASH_LOG_ADDR_CHECK(log_sizhu_history_ctrl_g.per_month_log,HISTORY_MONTH_START_ADDR,HISTORY_MONTH_LENGTH,HISTORY_MONTH_MAX_NUM);
+			FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_history_l,log_sizhu_history_ctrl_g.per_month_log.log_addr_save,HISTORY_MONTH_LENGTH);
+			FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_month_log,HISTORY_MONTH_START_ADDR,HISTORY_MONTH_LENGTH,HISTORY_MONTH_MAX_NUM);
+	 	break; 
+	
+	case HISTORY_TYPE_DAY:
+			FLASH_LOG_ADDR_CHECK(log_sizhu_history_ctrl_g.per_day_log,HISTORY_DAY_START_ADDR,HISTORY_DAY_LENGTH,HISTORY_DAY_MAX_NUM);
+			FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_history_l,log_sizhu_history_ctrl_g.per_day_log.log_addr_save,HISTORY_DAY_LENGTH);
+			FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_day_log,HISTORY_DAY_START_ADDR,HISTORY_DAY_LENGTH,HISTORY_DAY_MAX_NUM);
+	 	break; 
+	case HISTORY_TYPE_HOUR:
+			FLASH_LOG_ADDR_CHECK(log_sizhu_history_ctrl_g.per_hour_log,HISTORY_HOUR_START_ADDR,HISTORY_HOUR_LENGTH,HISTORY_HOUR_MAX_NUM);
+			FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_history_l,log_sizhu_history_ctrl_g.per_hour_log.log_addr_save,HISTORY_HOUR_LENGTH);
+			FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_hour_log,HISTORY_HOUR_START_ADDR,HISTORY_HOUR_LENGTH,HISTORY_HOUR_MAX_NUM);
+	 	break; 
+	
+	default : break;
+	}
+		 
+	//?�����洢
+	if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g))==FAIL){
+		
+	}
+}
+
+void HistoryRecordTest(void)
+{
+	static uint8_t  test_start_flag =0;
+	ErrorStatus	test_Status = PASS;
+	uint16_t	count_i = 0;
+	uint16_t	record_num = 0;
+	uint16_t	have_record_num = 0;
+	uint32_t	read_addr;
+	uint32_t	err_addr;
+	uint32_t	err_count;
+	
+	SIZHU_HISTORY_INTERVAL_T	history_interval_l;
+	
+	
+	
+	if(test_start_flag == 1){
+		test_start_flag = 0;
+		//�����¼����
+		have_record_num = 0;
+		record_num = log_sizhu_history_ctrl_g.per_interval_log.log_count;
+		read_addr = log_sizhu_history_ctrl_g.per_interval_log.log_addr_save;
+		for(count_i = 0;count_i < record_num;count_i++){
+				have_record_num ++;
+			
+			if(read_addr <= HISTORY_INTERVAL_START_ADDR)
+				read_addr = HISTORY_INTERVAL_END_ADDR;
+			else
+				read_addr -= HISTORY_INTERVAL_LENGTH;
+			
+			if(FlashMultipleReadAndCrcCheck((uint8_t *)&history_interval_l,read_addr,HISTORY_INTERVAL_LENGTH)== PASS){
+				
+			}else{
+				test_Status = FAIL;
+				break;
+			}
+			
+		}
+		
+		if(test_Status == FAIL){
+			err_addr = read_addr;
+			err_count = log_sizhu_history_ctrl_g.per_interval_log.log_count - count_i;
+		}
+		
+	}
+	
+	
+	
+	
+}
+
+
 
 void sizhuHistoryRecord(sClockBCD sys_clockBCD_in)
 {
-	static FlagStatus hour_record_flag = RESET,day_record_flag = RESET,month_record_flag = RESET,interval_report_record_flag = RESET;
+	static FlagStatus hour_record_flag = RESET,day_record_flag = RESET,month_record_flag = RESET;
 	
 	uint16_t	IntervalTime;
 	uint8_t first_time[2] = {0,0};
@@ -437,29 +260,33 @@
 	if((interval_report_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){
 		//��������ϱ��洢
 		interval_report_record_flag = RESET;
+		sizhuIntervalHistoryRecord();
 		
+		wrc_data_num_ctrl_para_sizhu_g.report_data_save_num ++;
+		//?�洢
 	}
 	
-	
-	
-	
+
 	if((hour_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){
 		//Сʱ��¼�洢
 		hour_record_flag = RESET;
-		
+		sizhuMDHHistoryRecord(HISTORY_TYPE_HOUR);
 	}
 	
 	if((day_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){
 		//���¼�洢
 		day_record_flag = RESET;
-		
+		sizhuMDHHistoryRecord(HISTORY_TYPE_DAY);
 	}
 	
 	if((month_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){
 		//�¼�¼�洢
 		month_record_flag = RESET;
-		
+		sizhuMDHHistoryRecord(HISTORY_TYPE_MONTH);
 	}
 	
+	
+	HistoryRecordTest(); //?���Ժ�������������Ҫע��
+	
 }
 

--
Gitblit v1.9.3