X1UWaterWmbusISK/app/UWater_SY_Store_App.c

1920 lines
61 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_SY
#include "UWater_frame_app.h"
#include "UWater_eeprom_driver.h"
#include "UWater_rtcc_driver.h"
#include "UWater_rtcc_app.h"
#include "UWater_lcd_app.h"
#include "UWater_gp22_app.h"
#include "UWater_DataTools_App.h"
#include "UWater_pt_app.h"
#include "UWater_valve_driver.h"
#include "UWater_valve_app.h"
#include "SOE.h"
#include "UWater_power_app.h"
#include "UWater_SY_Store_App.h"
#include "sys_processor.h"
/**********<2A><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>************************************************************/
DateTime uTempRtccTime_BCD;
TYP_STATE_SY step_ShenYangStoreInit=SY_STATE_S0; //EE<45><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>
TYP_STATE_SY step_ShenYangStoreMachine=SY_STATE_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2>״̬<D7B4><CCAC>
UNION_SY_STORE_INDEX uStoreIndex_SY;//<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
u16 uTemp_ee_addr=0;
u8 uTempMsg_EE=0;
u8 s_sy_eep_complete=0;
static u8 s_sy_clear_history_buf[256];
DateTime sy_protl_rtcc_time;
/**********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>***********************************************/
UNION_SY_STORE_CIRCLE temp_Circle_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
u8 uStoreCircleIndex_SY=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
TYP_STATE_SY step_CircleDataStore=SY_STATE_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢״̬<D7B4><CCAC>
u32 uUploadIndexTimeBuf[6];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 uUploadIndexBuf[6];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>***********************************************/
UNION_SY_STORE_FROZEN temp_frozen_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
u8 *pTempBuf_DailyHighestFlow;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
TYP_STATE_SY step_FrozenDataStore=SY_STATE_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢״̬<D7B4><CCAC>
TYP_STATE_SY step_FrozenDataClear = SY_STATE_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 uClearDataLen=0;
/**********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>***********************************************/
TYP_STATE_SY step_ShenYangSOEMachine=SY_STATE_S0;
u16 uSOE_Data_New=0;
u16 uSOE_Data_Old=0;
u8 uSOE_Valve_New=0;
u8 uSOE_Valve_Old=0;
u8 uSOE_Power_New=0;
u8 uSOE_Power_Old=0;
float uSOE_Temprature_New=0;
u8 uSOE_Temprature_ShortNew=0;
u8 uSOE_Temprature_ShortOld=0;
u8 uSOE_Temprature_OpenNew=0;
u8 uSOE_Temprature_OpenOld=0;
u32 uSOE_Update_Flag=0xFFFFFFFF;
u32 uSOE_Update_Flag_Old=0xFFFFFFFF;
u8 uWaterState=0;
DateTime ValveActiveDateTime;
u8 Valve_Active=0;
/**********TLV<4C><56><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>***********************************************/
TYP_STATE_SY step_TlvDataStore=SY_STATE_S0;
u8 temp_tlv_data[32];
Type_TLVValue TlvValue;
u8 tlv_store_cnt=0;
/**********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>***********************************************/
int SY_ThisPack_Count=0;
TYP_STATE_SY SY_CircleUploadStep=SY_STATE_S0;//<2F>ϱ<EFBFBD>״̬<D7B4><CCAC>
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ShenYang_Store_InitApp
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
********************************************************************************/
void ShenYang_Store_InitApp(void)
{
TYP_STATE_SY tmp_init_stat;
while (tmp_init_stat)
{
switch (tmp_init_stat)
{
case SY_STATE_S0:
{
if(TASK_IDLE == EepIfIdle())
{
tmp_init_stat = SY_STATE_S0;
}
break;
}
case SY_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_SY_STORE_INDEX_CIRCLE, &uStoreIndex_SY.data_buf[0], SIZE_SY_STORE_INDEX, &uTempMsg_EE);
tmp_init_stat = SY_STATE_S2;
}
break;
}
case SY_STATE_S2://<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_SY_TLVDATA,&TlvValue.data_buf[0], TLV_VALUE_LEN, &s_sy_eep_complete);
tmp_init_stat =SY_STATE_S3;
}
break;
}
case SY_STATE_S3://<2F>жϵ<D0B6>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
{
if (TASK_IDLE == EepIfIdle())
{
if(uStoreIndex_SY.Data.firstPowerOn != SY_FIRST_POWERON_FLAG)
{
tmp_init_stat =SY_STATE_S10;
}
else
{
tmp_init_stat =SY_STATE_S0;
}
}
break;
}
//<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
case SY_STATE_S10:
{
if (TASK_IDLE == EepIfIdle())
{
for(int i=0;i<SIZE_SY_STORE_INDEX;i++)
{
uStoreIndex_SY.data_buf[i] = 0;
}
uStoreIndex_SY.Data.firstPowerOn = SY_FIRST_POWERON_FLAG;
EepWrite(&uStoreIndex_SY.data_buf[0], EEP_ADDR_SY_STORE_INDEX_CIRCLE, SIZE_SY_STORE_INDEX, &uTempMsg_EE);
tmp_init_stat = SY_STATE_S11;
}
break;
}
case SY_STATE_S11: //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ縳ֵ<E7B8B3><D6B5><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
int i;
int len=0;
UNION_4U8TOU32 tmp_datas_buf;
TlvValue.s.ValueWarningId[0]=0;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ID--------------------------2
TlvValue.s.ValueWarningId[1]=0;
tmp_datas_buf.datas = (MAX_FLOW_1_02/65536.00)*10;//<2F><>λ0.1L/h
TlvValue.s.ValueOverFlowCurrent[0]=tmp_datas_buf.data_buf[0];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>λ0.1L/H----4
TlvValue.s.ValueOverFlowCurrent[1]=tmp_datas_buf.data_buf[1];
TlvValue.s.ValueOverFlowCurrent[2]=tmp_datas_buf.data_buf[2];
TlvValue.s.ValueOverFlowCurrent[3]=tmp_datas_buf.data_buf[3];
//
TlvValue.s.ValueOverFlowMinute=10;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>----------------------1
TlvValue.s.ValueReverseFlowCurrent[0]=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>λ0.1L/H-4
TlvValue.s.ValueReverseFlowCurrent[1]=0;
TlvValue.s.ValueReverseFlowCurrent[2]=0;
TlvValue.s.ValueReverseFlowCurrent[3]=0;
TlvValue.s.ValueReverseFlowMinute=10;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>---------------1
TlvValue.s.ValueLeakFlowMinute=10;//©ˮ<C2A9><CBAE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>----------------------1
TlvValue.s.ValuePowerLow001V[0]=0x36;//<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ---------------------2
TlvValue.s.ValuePowerLow001V[1]=0x01;
TlvValue.s.ValueNoWaterMinute=10;//<2F>չܱ<D5B9><DCB1><EFBFBD>ʱ<EFBFBD><CAB1>-----------------------1
TlvValue.s.ValueValveState[0]=0;//<2F><><EFBFBD><EFBFBD>״̬---------------------------7Ԥ<37><D4A4>
TlvValue.s.ValueValveState[1]=0;
TlvValue.s.ValueValveState[2]=0;
TlvValue.s.ValueValveState[3]=0;
TlvValue.s.ValueValveState[4]=0;
TlvValue.s.ValueValveState[5]=0;
TlvValue.s.ValueValveState[6]=0;
tmp_datas_buf.datas = FrameCheckParaApp(FramePara_ReportFreq);
TlvValue.s.ValueUploadStartTime[0]=0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1>a-------------4
TlvValue.s.ValueUploadStartTime[1]=BCD2HEX(tmp_datas_buf.data_buf[2]);//Сʱ
TlvValue.s.ValueUploadStartTime[2]=BCD2HEX(tmp_datas_buf.data_buf[3]);//<2F><><EFBFBD><EFBFBD>
TlvValue.s.ValueUploadStartTime[3]=0;
TlvValue.s.ValueCircleData5Minutes=6;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a-------------1
TlvValue.s.ValueDataFrozenTimeDailay=0;//<2F>ն<EFBFBD><D5B6><EFBFBD>ʱ<EFBFBD><CAB1>------------------1
TlvValue.s.ValueDataFrozenTimeMonth[0]=1;//<2F><EFBFBD><C2B6><EFBFBD>ʱ<EFBFBD><CAB1>----------------2
TlvValue.s.ValueDataFrozenTimeMonth[1]=0;
TlvValue.s.ValueUploadRetryTimes=Sys_data_object.P1.report_retry_times;//<2F>ϱ<EFBFBD><CFB1>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>--------------------1
TlvValue.s.ValueUploadRetryDelayMinite=20;//<2F>ط<EFBFBD><D8B7><EFBFBD>ʱʱ<CAB1><CAB1>--------------1
TlvValue.s.ValueUploadIntervalHour=12;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a-------------1
//IP 223.100.022.125 3031
Sys_data_object.P2.server_ip[0] = 223;
Sys_data_object.P2.server_ip[1] = 100;
Sys_data_object.P2.server_ip[2] = 22;
Sys_data_object.P2.server_ip[3] = 125;
Sys_data_object.P2.server_port.datas =3031;
for (i = 0; i < 4; i++)
{
if (Sys_data_object.P2.server_ip[i] < 10)
{
TlvValue.s.ValueServerIpPort[len++] = Sys_data_object.P2.server_ip[i] + 0x30;
}
else if (Sys_data_object.P2.server_ip[i] < 100)
{
TlvValue.s.ValueServerIpPort[len++] = (Sys_data_object.P2.server_ip[i] / 10) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (Sys_data_object.P2.server_ip[i] % 10) + 0x30;
}
else
{
TlvValue.s.ValueServerIpPort[len++] = (Sys_data_object.P2.server_ip[i] / 100) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (Sys_data_object.P2.server_ip[i] / 10) % 10 + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (Sys_data_object.P2.server_ip[i] % 10) + 0x30;
}
TlvValue.s.ValueServerIpPort[len++] = '.';
}
len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
TlvValue.s.ValueServerIpPort[len++] = ':';
TlvValue.s.ValueServerIpPort[len++] = ((Sys_data_object.P2.server_port.datas) / 10000) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (((Sys_data_object.P2.server_port.datas) % 10000) / 1000) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (((Sys_data_object.P2.server_port.datas) % 1000) / 100) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = (((Sys_data_object.P2.server_port.datas) % 100) / 10) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = ((Sys_data_object.P2.server_port.datas) % 10) + 0x30;
TlvValue.s.ValueServerIpPort[len++] = 0;
//APN
for(int i = 0; i < Sys_data_object.P1.apn[1]; i++)
{
TlvValue.s.ValueAPN[i] = Sys_data_object.P1.apn[2 + i];
}
TlvValue.s.ValueWorkTime[0]=0;//ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>-------------------------6
EepWrite(&TlvValue.data_buf[0], EEP_ADDR_SY_TLVDATA, TLV_VALUE_LEN, &s_sy_eep_complete);
tmp_init_stat = SY_STATE_S12;
}
break;
}
case SY_STATE_S12:
{
if (TASK_IDLE == EepIfIdle())
{
EepWrite(&Sys_data_object.P2.server_ip[0], EEP_UPDATE_UDP_IP, 6, &s_sy_eep_complete);//<2F><><EFBFBD>浽UDP IP
tmp_init_stat = SY_STATE_S13;
}
break;
}
case SY_STATE_S13:
{
if (TASK_IDLE == EepIfIdle())
{
tmp_init_stat = SY_STATE_S0;
}
break;
}
default:
{
tmp_init_stat =SY_STATE_S0;
break;
}
}
EepMachineDriver();
}
//<2F>洢ʱ<E6B4A2><CAB1><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ж<EFBFBD>
for(int i=0;i<6;i++)
{
if(Rtcc_Check_DateTime(&uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime) == ERROR)
{
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.year = 0x19;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.month = 0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.day = 0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.weekday=0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.hour = 0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.minute= 0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.second= 0x01;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart = 0;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntEnd =0;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadStart =0;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadEnd =0;
}
}
step_ShenYangSOEMachine=SY_STATE_S0;
uSOE_Data_New=0;
uSOE_Data_Old=0;
uSOE_Valve_New=0;
uSOE_Valve_Old=0;
uSOE_Power_New=0;
uSOE_Power_Old=0;
uSOE_Temprature_New=0;
uSOE_Temprature_ShortNew=0;
uSOE_Temprature_ShortOld=0;
uSOE_Temprature_OpenNew=0;
uSOE_Temprature_OpenOld=0;
uSOE_Update_Flag=0xFFFFFFFF;
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SortMinToMax
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
********************************************************************************/
void SortMinToMax(u32 *data, u8 data_len)
{
u8 i, j, len;
u32 *p;
u32 temp = 0;
p = data;
len = data_len;
for (j = 0; j < len - 1; j++)
{
for (i = 0; i < len - 1 - j; i++)
{
if (p[i] > p[i + 1])
{
temp = p[i];
p[i] = p[i + 1];
p[i + 1] = temp;
}
}
}
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>getSY_StoreCircleIndex
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴλ<EFBFBD><EFBFBD>
********************************************************************************/
u8 getSY_StoreCircleIndex(void)
{
u8 i=0;
u8 new_index=0;
u8 temp_hour=0;
//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
RtccGetDateTime(&uTempRtccTime_BCD);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD><C2B0><EFBFBD>
if(uTempRtccTime_BCD.s.hour>=0x12)
{
temp_hour = 0x12;
}
else
{
temp_hour = 0x00;
}
for(i=0;i<6;i++)
{
if((uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.year == uTempRtccTime_BCD.s.year)
&&(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.month == uTempRtccTime_BCD.s.month)
&&(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.day == uTempRtccTime_BCD.s.day)
&&(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.hour == temp_hour))
{
new_index = (BCD2HEX(uTempRtccTime_BCD.s.hour) % 12)*2+BCD2HEX(uTempRtccTime_BCD.s.minute)/30;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>㵱ǰӦ<C7B0>ô洢<C3B4><E6B4A2>λ<EFBFBD><CEBB>
//<2F>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ж<EFBFBD><><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>start<72><74>end
if((uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntEnd > 24)||
(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntEnd < uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart)||
(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntEnd != new_index))//<2F>洢λ<E6B4A2>ú͵<C3BA>ǰʱ<C7B0><EFBFBD><E4B2BB>Ӧ,<2C><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>λ<EFBFBD><CEBB>
{
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.year = uTempRtccTime_BCD.s.year;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.month = uTempRtccTime_BCD.s.month;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.day = uTempRtccTime_BCD.s.day;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.hour = temp_hour;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.minute= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime.s.second= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart = new_index;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntEnd = uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadStart = uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadEnd = uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleCntStart;
}
return i;
}
}
//<2F><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ洢ʱ<E6B4A2><CAB1>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ô洢<C3B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>С<EFBFBD>ڴ洢<DAB4><E6B4A2>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E1B8B2><EFBFBD>Ѵ洢ʱ<E6B4A2><CAB1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>Ϲ<EFBFBD><CFB9><EFBFBD>RTCʱ<43><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Уʱ<D0A3><CAB1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>󳬹<EFBFBD><F3B3ACB9><EFBFBD><EFBFBD><EFBFBD>
for(new_index=0; new_index<6; new_index++)//ʹ<><CAB9><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ָ<EFBFBD><D6B8>
{
if((uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntEnd > 24)||
(uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntStart > uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntEnd)||
(Rtcc_Check_DateTime(&uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime) == ERROR)||
(RtccCalculateDiffTime(&uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime, &uTempRtccTime_BCD)>0))
{
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.year = uTempRtccTime_BCD.s.year;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.month = uTempRtccTime_BCD.s.month;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.day = uTempRtccTime_BCD.s.day;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.hour = temp_hour;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.minute= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime.s.second= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntStart = (BCD2HEX(uTempRtccTime_BCD.s.hour) % 12)*2+BCD2HEX(uTempRtccTime_BCD.s.minute)/30;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntEnd = uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.ReadStart = uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.ReadEnd = uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleCntStart;
return new_index;
}
else
{
uUploadIndexTimeBuf[new_index] = get_mktime(&uStoreIndex_SY.Data.Circle.CircleIndex[new_index].Data.CircleDataTime);
}
}
SortMinToMax(uUploadIndexTimeBuf, new_index);//ʱ<><EFBFBD><E4B0B4>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
for(int index=0;index<6;index++)
{
if(uUploadIndexTimeBuf[0] == get_mktime(&uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime))
{
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.year = uTempRtccTime_BCD.s.year;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.month = uTempRtccTime_BCD.s.month;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.day = uTempRtccTime_BCD.s.day;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.hour = temp_hour;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.minute= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.second= 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart = (BCD2HEX(uTempRtccTime_BCD.s.hour) % 12)*2+BCD2HEX(uTempRtccTime_BCD.s.minute)/30;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadStart = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadEnd = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart;
return index;
}
}
return 0;
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ShenYang_CircleDataStore_proc
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ
<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪL/0.001M3<EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
˲ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ0.01L/H<EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>λΪ0.01V<EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ10mbar/0.01kg/1KPa<EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ȵ<EFBFBD>λΪ0.01<EFBFBD>2<EFBFBD>ֽ<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
˲ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
ѹ<EFBFBD><EFBFBD> 2
<EFBFBD><EFBFBD> 2
********************************************************************************/
static int ShenYang_CircleDataStore_proc(void)
{
switch(step_CircleDataStore)
{
case SY_STATE_S0:
{
SY_U32_To_Float temp_float_data;
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
temp_Circle_data.Data.CurrentFlow = (u32)(temp_float_data.gp22_float*10);//(ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ)
//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(3);
temp_Circle_data.Data.CurrentFlowReverse = (u32)(temp_float_data.gp22_float*10);
//˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD>
temp_float_data.gp22_float = Gp30CheckDataApp(1); //˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD> ˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ0.01L/H<><48>4<EFBFBD>ֽ<EFBFBD><D6BD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_Circle_data.Data.InstantaneousFlow = (u32)(temp_float_data.gp22_float / (float)65536.00)*100;
//ѹ<><D1B9>
temp_Circle_data.Data.Presure = 0;
//<2F><EFBFBD>
temp_float_data.gp22_float = TempCheckValueApp();
if(temp_float_data.gp22_float<0)
{
temp_Circle_data.Data.Temprature = (~(u16)(-temp_float_data.gp22_float*100))|0x8000;
}
else
{
temp_Circle_data.Data.Temprature = ((u16)(temp_float_data.gp22_float*100));
}
step_CircleDataStore = SY_STATE_S1;
break;
}
case SY_STATE_S1://<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
uStoreCircleIndex_SY = getSY_StoreCircleIndex();
uTemp_ee_addr = EEP_ADDR_SY_STORE_CIRCLE + //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ַ
(uStoreCircleIndex_SY*STORE_SIZE_DATA_CIRCLE*24)+ //ÿ<><C3BF><EFBFBD><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.CircleCntEnd*STORE_SIZE_DATA_CIRCLE; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
EepWrite(temp_Circle_data.data_buf, uTemp_ee_addr, STORE_SIZE_DATA_CIRCLE, &uTempMsg_EE);
step_CircleDataStore = SY_STATE_S2;
}
break;
}
case SY_STATE_S2: //<2F>洢ָ<E6B4A2><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.CircleCntEnd++;
if(uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.CircleCntEnd>=24)
{
uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.CircleCntEnd = 24;
}
uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.ReadEnd = uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].Data.CircleCntEnd;
/*<2A><>CircleCntEnd++<2B><>24ʱ<34><CAB1><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´δ洢<CEB4><E6B4A2><EFBFBD><EFBFBD>getSY_StoreCircleIndex<65><78>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><E6B4A2>*/
EepWrite(&uStoreIndex_SY.Data.Circle.CircleIndex[uStoreCircleIndex_SY].data_buf[0], EEP_ADDR_SY_STORE_INDEX_CIRCLE+uStoreCircleIndex_SY*11, 11, &uTempMsg_EE);
step_CircleDataStore = SY_STATE_S3;
}
break;
}
case SY_STATE_S3:
{
if(TASK_IDLE == EepIfIdle())
{
step_CircleDataStore = SY_STATE_S0;
return 1;
}
break;
}
default:
{
step_CircleDataStore = SY_STATE_S0;
break;
}
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,ReadStart<72><74>ReadEnd<6E>Ա<EFBFBD><D4B1><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
int ShenYang_CircleDataStore_ClearUploadIndex(u8 index)
{
if(TASK_IDLE == EepIfIdle())
{
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart=uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd;
EepWrite(&uStoreIndex_SY.Data.Circle.CircleIndex[index].data_buf[7], EEP_ADDR_SY_STORE_INDEX_CIRCLE+index*11+7, 2, &uTempMsg_EE);
return 1;
}
return 0;
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ShenYang_FrozenDataStore_proc
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ,
0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\
<EFBFBD><EFBFBD>Сʱ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD>\
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD>\
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>\
ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3
ʱ<EFBFBD><EFBFBD> 3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4
<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> 3
<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ѹ 6
ˮ<EFBFBD><EFBFBD>״̬ 1
ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 1
Ԥ<EFBFBD><EFBFBD> 1
У<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD> 32
********************************************************************************/
static int ShenYang_FrozenDataStore_proc(TYP_STATE_SY StoreType)
{
switch(step_FrozenDataStore)
{
case SY_STATE_S0:
{
u8 temp_index = 0;
SY_U32_To_Float temp_float_data;
RTCC_HISTORY_DATA temp_his_data;
RtccGetDateTime(&uTempRtccTime_BCD);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
temp_frozen_data.Data.FrozenDataTime.s.year = uTempRtccTime_BCD.s.year;
temp_frozen_data.Data.FrozenDataTime.s.month = uTempRtccTime_BCD.s.month;
temp_frozen_data.Data.FrozenDataTime.s.day = uTempRtccTime_BCD.s.day;
temp_frozen_data.Data.FrozenDataTime.s.hour = uTempRtccTime_BCD.s.hour;
temp_frozen_data.Data.FrozenDataTime.s.minute = uTempRtccTime_BCD.s.minute;
temp_frozen_data.Data.FrozenDataTime.s.second = uTempRtccTime_BCD.s.second;
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
temp_frozen_data.Data.CurrentFlow = (u32)(temp_float_data.gp22_float*10);//(ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ)
//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(3);
temp_frozen_data.Data.CurrentFlowReverse = (u32)(temp_float_data.gp22_float*10);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RtccCheck_Hight_Flow(&pTempBuf_DailyHighestFlow);
for(temp_index = 0; temp_index <14 ;temp_index++)
{
temp_his_data.byte[temp_index] = *(pTempBuf_DailyHighestFlow+temp_index);
}
temp_frozen_data.Data.PeakCurrentFlow = temp_his_data.s.most_high_flow;//(temp_his_data.s.most_high_flow/10)*60;//ԭ<><EFBFBD><E6B4A2>ʽ386~38.6L/min
temp_frozen_data.Data.PeakCurrentFlowTime[0] = temp_his_data.byte[8];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>:hour
temp_frozen_data.Data.PeakCurrentFlowTime[1] = temp_his_data.byte[7];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>:minute
temp_frozen_data.Data.PeakCurrentFlowTime[2] = temp_his_data.byte[6];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>:second
//<2F><><EFBFBD>ص<EFBFBD>ѹ
for(temp_index = 0; temp_index <6 ;temp_index++)
{
temp_frozen_data.Data.BatPower[temp_index] = 0;
}//ѡһ<D1A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ѹ-----------------
temp_frozen_data.Data.BatPower[0] = PowerCheckValueSys()&0xFF;
temp_frozen_data.Data.BatPower[1] = (PowerCheckValueSys()>>8)&0xFF;
//ˮ<><CBAE>״̬
temp_frozen_data.Data.MeterState = 0;//0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
//ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_frozen_data.Data.MeterFault = 0;//0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><><EFBFBD><EFBFBD>״̬
temp_frozen_data.Data.ValveState = 0;
if(Sys_data_object.P1.ies_valve_paras.valve_err)
{
temp_frozen_data.Data.ValveState = 0xFF;
}
else
{
#if defined(VALVE)
if(VALVE_STATE_CLOSE == ValveGetStateApp())
{
temp_frozen_data.Data.ValveState = 0x99;
}
else if(VALVE_STATE_OPEN == ValveGetStateApp())
{
temp_frozen_data.Data.ValveState = 0x55;
}
#endif
}
//Ԥ<><D4A4><EFBFBD>ֽ<EFBFBD>
temp_frozen_data.Data.Reverse =0x99;
//У<><D0A3><EFBFBD><EFBFBD>
temp_frozen_data.Data.CheckSum = 0;
for(temp_index = 0; temp_index<(STORE_SIZE_DATA_FROZEN-1); temp_index++)
{
temp_frozen_data.Data.CheckSum += temp_frozen_data.data_buf[temp_index];
}
step_FrozenDataStore = StoreType;
break;
}
case SY_STATE_S10://<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>:<3A>ն<EFBFBD><D5B6><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
if(uStoreIndex_SY.Data.Daily>=7)
{
uStoreIndex_SY.Data.Daily = 0;
}
EepWrite(temp_frozen_data.data_buf, EEP_ADDR_SY_STORE_FROZEN_DAILY + uStoreIndex_SY.Data.Daily*32, 32, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S11;
}
break;
}
case SY_STATE_S11: //<2F>洢ָ<E6B4A2><D6B8>:<3A>ն<EFBFBD><D5B6><EFBFBD>ָ<EFBFBD><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
uStoreIndex_SY.Data.Daily++;//<2F>´<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
EepWrite(&uStoreIndex_SY.Data.Daily, EEP_ADDR_SY_STORE_INDEX_DAILY, 1, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S1;
}
break;
}
case SY_STATE_S20://<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>:<3A><EFBFBD><C2B6><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
if(uStoreIndex_SY.Data.Month >=18)
{
uStoreIndex_SY.Data.Month = 0;
}
EepWrite(temp_frozen_data.data_buf, EEP_ADDR_SY_STORE_FROZEN_MONTH + uStoreIndex_SY.Data.Month*32, 32, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S21;
}
break;
}
case SY_STATE_S21: //<2F>洢ָ<E6B4A2><D6B8>:<3A><EFBFBD><C2B6><EFBFBD>ָ<EFBFBD><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
uStoreIndex_SY.Data.Month++;//<2F>´<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
EepWrite(&uStoreIndex_SY.Data.Month, EEP_ADDR_SY_STORE_INDEX_MONTH, 1, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S1;
}
break;
}
case SY_STATE_S30://<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>:<3A><EFBFBD><EAB6B3>
{
if(TASK_IDLE == EepIfIdle())
{
if(uStoreIndex_SY.Data.Year>=6)
{
uStoreIndex_SY.Data.Year = 0;
}
EepWrite(temp_frozen_data.data_buf, EEP_ADDR_SY_STORE_FROZEN_YEAR + uStoreIndex_SY.Data.Year*32, 32, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S31;
}
break;
}
case SY_STATE_S31: //<2F>洢ָ<E6B4A2><D6B8>:<3A><EFBFBD><EAB6B3>ָ<EFBFBD><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
uStoreIndex_SY.Data.Year++;//<2F>´<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
EepWrite(&uStoreIndex_SY.Data.Year, EEP_ADDR_SY_STORE_INDEX_YEAR, 1, &uTempMsg_EE);
step_FrozenDataStore = SY_STATE_S1;
}
break;
}
case SY_STATE_S1:
{
if(TASK_IDLE == EepIfIdle())
{
step_FrozenDataStore = SY_STATE_S0;
return SY_STATE_S1;
}
break;
}
default:
{
step_FrozenDataStore = SY_STATE_S0;
break;
}
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
static int ShenYang_StoreDataClear_proc(TYP_STATE_SY StoreType)
{
switch(step_FrozenDataClear)
{
case SY_STATE_S0:
{
uClearDataLen =0;
step_FrozenDataClear = StoreType;
break;
}
case SY_STATE_S10://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_FROZEN_DAILY + uClearDataLen*CLEAR_HIS_BUF_LEN, CLEAR_HIS_BUF_LEN, &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S11;
}
break;
}
case SY_STATE_S11:
{
if(TASK_IDLE == EepIfIdle())
{
uClearDataLen++;
if((uClearDataLen+1)*CLEAR_HIS_BUF_LEN < EEP_DATA_LEN_FROZEN)
{
step_FrozenDataClear = SY_STATE_S10;
}
else
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_FROZEN_DAILY + uClearDataLen*CLEAR_HIS_BUF_LEN, (EEP_DATA_LEN_FROZEN%CLEAR_HIS_BUF_LEN), &uTempMsg_EE);
uStoreIndex_SY.Data.Daily = 0;
uStoreIndex_SY.Data.Month = 0;
uStoreIndex_SY.Data.Year = 0;
step_FrozenDataClear = SY_STATE_S12;
}
}
break;
}
case SY_STATE_S12://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢ָ<E6B4A2><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_INDEX_DAILY, 3, &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S0;
return 1;
}
break;
}
case SY_STATE_S20://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_CIRCLE + uClearDataLen*CLEAR_HIS_BUF_LEN, CLEAR_HIS_BUF_LEN, &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S21;
}
break;
}
case SY_STATE_S21:
{
if(TASK_IDLE == EepIfIdle())
{
uClearDataLen++;
if((uClearDataLen+1)*CLEAR_HIS_BUF_LEN < EEP_DATA_LEN_CIRCLE)
{
step_FrozenDataClear = SY_STATE_S20;
}
else
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_CIRCLE + uClearDataLen*CLEAR_HIS_BUF_LEN, (EEP_DATA_LEN_CIRCLE%CLEAR_HIS_BUF_LEN), &uTempMsg_EE);
for(int index=0; index<6; index++)
{
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.year = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.month = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.day = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.hour = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.minute = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.second = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.weekday = 0x00;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart = 0;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadStart = 0;
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadEnd = 0;
}
step_FrozenDataClear = SY_STATE_S22;
}
}
break;
}
case SY_STATE_S22://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢ָ<E6B4A2><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SY_STORE_INDEX_CIRCLE, 66, &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S0;
return 1;
}
break;
}
case SY_STATE_S30://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SOE_BASE + uClearDataLen*CLEAR_HIS_BUF_LEN, CLEAR_HIS_BUF_LEN, &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S31;
}
break;
}
case SY_STATE_S31:
{
if(TASK_IDLE == EepIfIdle())
{
uClearDataLen++;
if((uClearDataLen+1)*CLEAR_HIS_BUF_LEN < EEP_DATA_LEN_SOE)
{
step_FrozenDataClear = SY_STATE_S30;
}
else
{
memset(s_sy_clear_history_buf,0,sizeof(s_sy_clear_history_buf));
EepWrite(s_sy_clear_history_buf, EEP_ADDR_SOE_BASE + uClearDataLen*CLEAR_HIS_BUF_LEN, (EEP_DATA_LEN_SOE%CLEAR_HIS_BUF_LEN), &uTempMsg_EE);
step_FrozenDataClear = SY_STATE_S0;
return 1;
}
}
break;
}
default:
{
step_FrozenDataClear = SY_STATE_S0;
break;
}
}
return 0;
}
/********************************************************************************
ShenYang_Store_Machine
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ״̬<EFBFBD><EFBFBD>
********************************************************************************/
void ShenYang_Store_Machine(void)
{
switch(step_ShenYangStoreMachine)
{
case SY_STATE_S0://<2F><><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ<EFBFBD>ж<EFBFBD>
{
if (RtccCheckMsgApp(RtccMsg_OtherProtl))
{
RtccClearMsgApp(RtccMsg_OtherProtl);
FrameSetMsgApp(MsgShenYang_WarningCheck);
RtccGetDateTime(&sy_protl_rtcc_time);
if((sy_protl_rtcc_time.s.hour==0)&&(sy_protl_rtcc_time.s.minute==1))//ÿ<><C3BF>1<EFBFBD><31>0<EFBFBD><30>1<EFBFBD>ִ洢<D6B4><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameSetMsgApp(MsgShenYang_DailySave);//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
if(sy_protl_rtcc_time.s.day == 1)
{
FrameSetMsgApp(MsgShenYang_MonthSave);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
if(sy_protl_rtcc_time.s.month == 1)
{
FrameSetMsgApp(MsgShenYang_YearSave);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6B3><EFBFBD><EFBFBD><EFBFBD>ݴ洢
}
}
}
if((sy_protl_rtcc_time.s.minute==0x00)||(sy_protl_rtcc_time.s.minute==0x30))
{
FrameSetMsgApp(MsgShenYang_CircleSave);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
}
if (sy_protl_rtcc_time.s.hour == 0)//<2F><><EFBFBD><EFBFBD>
{
FrameSetMsgApp(MsgShenYang_WarningStoreReset);//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><E6B4A2>־
}
}
if(FrameCheckMsgApp(MsgShenYang_DailySave))//<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><E6B4A2>Ϣ
{
FrameClearMsgApp(MsgShenYang_DailySave); //<2F><><EFBFBD><EFBFBD>Ϣ
step_ShenYangStoreMachine = SY_STATE_S1;
}
else if(FrameCheckMsgApp(MsgShenYang_MonthSave))//<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><E6B4A2>Ϣ
{
FrameClearMsgApp(MsgShenYang_MonthSave);
step_ShenYangStoreMachine = SY_STATE_S2;
}
else if(FrameCheckMsgApp(MsgShenYang_YearSave))//<2F><EFBFBD><EAB6B3><EFBFBD><EFBFBD><E6B4A2>Ϣ
{
FrameClearMsgApp(MsgShenYang_YearSave);
step_ShenYangStoreMachine = SY_STATE_S3;
}
else if(FrameCheckMsgApp(MsgShenYang_CircleSave))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
{
FrameClearMsgApp(MsgShenYang_CircleSave);
step_ShenYangStoreMachine = SY_STATE_S4;
}
else if(FrameCheckMsgApp(MsgShenYang_CircleClear))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgShenYang_CircleClear);
step_ShenYangStoreMachine = SY_STATE_S6;
}
else if(FrameCheckMsgApp(MsgShenYang_WarningClear))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uSOE_Update_Flag=0xFFFFFFFF; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴμ<D9B4>¼
FrameClearMsgApp(MsgShenYang_WarningClear);
step_ShenYangStoreMachine = SY_STATE_S7;
}
else if(FrameCheckMsgApp(MsgShenYang_FrozenClear))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgShenYang_FrozenClear);
SaveNewSoe(SOE_SY_FROZEN_CLEAR,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
step_ShenYangStoreMachine = SY_STATE_S5;
}
else if(FrameCheckMsgApp(MsgShenYang_FactorySettingAndReset))//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgShenYang_FactorySettingAndReset);
step_ShenYangStoreMachine = SY_STATE_S8;
}
else if(FrameCheckMsgApp(MsgShenYang_SysReset))//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgShenYang_SysReset);
step_ShenYangStoreMachine = SY_STATE_S8;
}
break;
}
case SY_STATE_S1://<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
{
if(ShenYang_FrozenDataStore_proc(SY_STATE_S10) == 1)
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S2://<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
{
if(ShenYang_FrozenDataStore_proc(SY_STATE_S20) == 1)
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S3://<2F><EFBFBD><EAB6B3><EFBFBD><EFBFBD><EFBFBD>ݴ洢
{
if(ShenYang_FrozenDataStore_proc(SY_STATE_S30) == 1)
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S4://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
{
if(ShenYang_CircleDataStore_proc() == 1)
{
//RtccAdjustDateTime(1,1800-5);//<2F><><EFBFBD><EFBFBD>Уʱ<D0A3><CAB1>Сʱ,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S5:
{
if(ShenYang_StoreDataClear_proc(SY_STATE_S10) == 1)//<2F><EFBFBD><E5B6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S6:
{
if(ShenYang_StoreDataClear_proc(SY_STATE_S20) == 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S7:
{
if(ShenYang_StoreDataClear_proc(SY_STATE_S30) == 1)//<2F><EFBFBD><E5B1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
case SY_STATE_S8://<2F>ݲ<EFBFBD>ʹ<EFBFBD>ûָ<C3BB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
NVIC_SystemReset();
step_ShenYangStoreMachine = SY_STATE_S0;
}
break;
}
default:
{
step_ShenYangStoreMachine = SY_STATE_S0;
break;
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>ܰ<EFBFBD><DCB0><EFBFBD>
u8 getSY_CircleUploadPackets(void)
{
u8 temp_count=0;
u32 temp_time=0;
for(int i=0;i<6;i++)
{
uUploadIndexTimeBuf[i] = 0;
}
for(int index=0; index<6; index++)
{
if(uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd <= 24) //<2F>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ж<EFBFBD>
{
if(uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart < uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd)
{
uUploadIndexTimeBuf[temp_count] = get_mktime(&uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime);
temp_count++;
}
}
}
SortMinToMax(uUploadIndexTimeBuf, temp_count);//ʱ<><EFBFBD><E4B0B4>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
for(int j=0; j<temp_count; j++)//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
for(int index=0;index<6;index++)
{
temp_time = get_mktime(&uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime);
if(temp_time == uUploadIndexTimeBuf[j])
{
uUploadIndexBuf[j] = index;
}
}
}
return temp_count;
}
//<2F><>ȡ<EFBFBD><C8A1>ǰҪ<C7B0>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
u8 getSY_ThisCirclePacket_Index(u8 current_packet)
{
if(current_packet < 6)
{
return uUploadIndexBuf[current_packet];
}
return 0;
}
//<2F><>ȡ<EFBFBD><C8A1>ǰҪ<C7B0>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
int NB_SY_Frame_Upload_Data(u8 index, u8 *pBuf)
{
switch(SY_CircleUploadStep)
{
case SY_STATE_S0://<2F><><EFBFBD>㵱ǰ<E3B5B1><C7B0>λ<EFBFBD><CEBB>,<2C><>ȡ<EFBFBD><C8A1>ǰҪ<C7B0>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
SY_ThisPack_Count = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntEnd-
uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart;
EepRead(EEP_ADDR_SY_STORE_CIRCLE + index*16*24 + uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart*16, pBuf, 16*SY_ThisPack_Count, &uTempMsg_EE);
SY_CircleUploadStep = SY_STATE_S1;
}
}
break;
case SY_STATE_S1:
{
if(TASK_IDLE == EepIfIdle())
{
SY_CircleUploadStep =SY_STATE_S0;
return SY_ThisPack_Count;
}
}
break;
default:
{
SY_CircleUploadStep = SY_STATE_S0;
}
break;
}
return 0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ洢<C4B4>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD>
u8 getSY_CircleDataPackets(u8 readDays, u8 *pIndexBuf)
{
u8 temp_packet_cnt=0;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>,<2C>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
DateTime start_time;
DateTime end_time;
time_t sec_start,sec_end,sec_circle;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
start_time = getBackDateTime(readDays);//<2F><>ȡ<EFBFBD><C8A1>ʼʱ<CABC><CAB1>
RtccGetDateTime(&end_time);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
sec_start = get_mktime(&start_time);
sec_end = get_mktime(&end_time);
for(int i=0;i<6;i++)
{
sec_circle = get_mktime(&uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.CircleDataTime);
if((uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadEnd<=24)&&
(uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadEnd>uStoreIndex_SY.Data.Circle.CircleIndex[i].Data.ReadStart))//<2F>жϴ洢ָ<E6B4A2><D6B8><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
{
if((sec_circle >= sec_start) && (sec_circle <= sec_end)) //<2F>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
{
*pIndexBuf++ = i;
temp_packet_cnt++;
}
}
}
return temp_packet_cnt;
}
/*******************************************************************************
* @fun_name: NB_SY_Frame_Upload_CurrentData
* @brief : <EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ǽ<EFBFBD><EFBFBD>ܣ<EFBFBD>ƽ̨Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>HEX<EFBFBD><EFBFBD>ʽ
******************************************************************************/
int NB_SY_Frame_Upload_CurrentData(u8 *pBuf)
{
UNION_4U8TOU32 tmp_datas_buf;
SY_U32_To_Float temp_float_data;
*pBuf++ = 1; //<2F>ܰ<EFBFBD><DCB0><EFBFBD> 1<>ֽ<EFBFBD>
*pBuf++ = 1; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>ֽ<EFBFBD>
RtccGetDateTime(&uTempRtccTime_BCD);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> 3<>ֽ<EFBFBD>
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.year);
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.month);
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.day);
//<2F><>ʼʱ<CABC><CAB1> 3<>ֽ<EFBFBD>
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.hour);
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.minute);
*pBuf++ = BCD2HEX(uTempRtccTime_BCD.s.second);
*pBuf++ = 6; //6:<3A><>ʾ30<33><30><EFBFBD>ӣ<EFBFBD>5x6<78><36>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
*pBuf++ = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2); //<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪL/0.001M3<EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tmp_datas_buf.datas = (u32)(temp_float_data.gp22_float*10);
*pBuf++ = tmp_datas_buf.data_buf[0];//С<><D0A1>λ
*pBuf++ = tmp_datas_buf.data_buf[1];
*pBuf++ = tmp_datas_buf.data_buf[2];
*pBuf++ = tmp_datas_buf.data_buf[3];//С<><D0A1>λ
temp_float_data.gp22_u32 = Gp30CheckDataApp(3); //<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>
tmp_datas_buf.datas = (u32)(temp_float_data.gp22_float*10);
*pBuf++ = tmp_datas_buf.data_buf[0];//С<><D0A1>λ
*pBuf++ = tmp_datas_buf.data_buf[1];
*pBuf++ = tmp_datas_buf.data_buf[2];
*pBuf++ = tmp_datas_buf.data_buf[3];//С<><D0A1>λ
temp_float_data.gp22_float = Gp30CheckDataApp(GP30_APP_INS_FLOW); //˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD> ˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ0.01L/H<><48>4<EFBFBD>ֽ<EFBFBD><D6BD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tmp_datas_buf.datas = (u32)(temp_float_data.gp22_float / (float)65536.00)*100;
*pBuf++ = tmp_datas_buf.data_buf[0];
*pBuf++ = tmp_datas_buf.data_buf[1];
*pBuf++ = tmp_datas_buf.data_buf[2];//С<><D0A1>λ
*pBuf++ = tmp_datas_buf.data_buf[3];
//tmp_datas_buf_yali.datas = 210; //<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9> ѹ<><D1B9><EFBFBD><EFBFBD>λΪ10mbar/0.01kg/1KPa<50><61>2<EFBFBD>ֽ<EFBFBD><D6BD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*pBuf++ = 0; //ѹ<><D1B9>
*pBuf++ = 0;
//<2F><EFBFBD> <20>¶ȵ<C2B6>λΪ0.01<EFBFBD>棬2<EFBFBD>ֽ<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float tmep = TempCheckValueApp(); //
//tmep = -12.03; //<2F><><EFBFBD><EFBFBD>
if(tmep <0)
{
tmp_datas_buf.datas = (u16)(tmep*(-100));
tmp_datas_buf.datas &= 0x0FFF;
tmp_datas_buf.datas = ~tmp_datas_buf.datas;
tmp_datas_buf.datas |= 0x8000;
}
else
{
tmp_datas_buf.datas = (u16)(tmep*(100));
}
*pBuf++ = tmp_datas_buf.datas_map.data0; //<2F><EFBFBD>
*pBuf++ = tmp_datas_buf.datas_map.data1;
return 26;
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SY_GetCircleDateTime
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<EFBFBD><EFBFBD>
********************************************************************************/
void SY_GetCircleDateTime(DateTime *pDT, u8 index, u8 UploadOrRead)
{
u8 temp_hour=0;
u8 temp_minute=0;
u32 temp_second=0;
pDT->s.year = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.year;
pDT->s.month = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.month;
pDT->s.day = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.day;
pDT->s.hour = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.hour;
pDT->s.minute = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.minute;
pDT->s.second = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleDataTime.s.second;
if(UploadOrRead == 0)//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
{
temp_second = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.CircleCntStart*30*60;
}
else//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
{
temp_second = uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadStart*30*60;
}
temp_hour = (temp_second/3600)%12;
temp_minute = (temp_second/60)%60;
pDT->s.hour = HEX2BCD(BCD2HEX(pDT->s.hour)+temp_hour);
pDT->s.minute = HEX2BCD(BCD2HEX(pDT->s.minute)+temp_minute);
}
//<2F><><EFBFBD>ݰ<EFBFBD><DDB0>Ż<EFBFBD>ȡ<EFBFBD>洢ָ<E6B4A2><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>λ<EFBFBD><CEBB>
u8 SY_GetCircleReadStartEnd(u8 index, u8 StartOrEnd)
{
if(StartOrEnd == 0)
{
return uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadStart;
}
else
{
return uStoreIndex_SY.Data.Circle.CircleIndex[index].Data.ReadEnd;
}
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>get_SY_StorePara
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ǰָ<EFBFBD><EFBFBD>
********************************************************************************/
u8 get_SY_StorePara(SY_ParaTypeDef paraType)
{
switch(paraType)
{
case SY_StoreCurIndex_Daily://<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>洢ָ<E6B4A2><D6B8>
{
return uStoreIndex_SY.Data.Daily;
}
case SY_StoreCurIndex_Month://<2F><EFBFBD><C2B6><EFBFBD><EFBFBD>洢ָ<E6B4A2><D6B8>
{
return uStoreIndex_SY.Data.Month;
}
case SY_StoreCurIndex_Year://<2F><EFBFBD><EAB6B3><EFBFBD>洢ָ<E6B4A2><D6B8>
{
return uStoreIndex_SY.Data.Year;
}
default:
break;
}
return 0;
}
/****************************************************************
Function: u16 Gp30CheckErrDataApp (void)
Description: <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
Input:
Return:
Others:
Bit0:<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>>Q4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><Q1 GP30_low_high_flow
Bit1:ˮ<EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵȼ<EFBFBD><EFBFBD><EFBFBD>Χ GP30_out_temp
Bit2:<EFBFBD><EFBFBD>ת GP30_reverse_flow
Bit3:<EFBFBD><EFBFBD>ˮ GP30_no_water
Bit4:GP30<EFBFBD> GP30_err
Bit5:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GP30_low_flow
Bit6:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źŵͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GP30_low_amp;
Bit7:GP30ͨ<EFBFBD><EFBFBD><EFBFBD> GP30_communication_err
Bit8:TOF overrun GP30_TOF_overrun
Bit9:ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> water_reverse
*****************************************************************/
u8 sy_rtc_time_overflow=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u8 sy_rtc_time_reverseflow=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u8 sy_rtc_time_leakflow=0;//©ˮ<C2A9><CBAE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u8 sy_rtc_time_nowater=0;//<2F>չܱ<D5B9><DCB1><EFBFBD>ʱ<EFBFBD><CAB1>
//ʱ<><CAB1><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>λ
u16 Gp30CheckErrDataApp_ReWrite(void)
{
u16 temp_state=0;
u8 temp_data=0;
temp_state = Gp30CheckErrDataApp();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(temp_state&0x0001)//gp30_event_flag.low_high_flow<<0
{
temp_state &=~0x0001;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sy_rtc_time_overflow += 1;//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
if(GetTLVData(TagOverFlowMinute, LenOverFlowMinute, &temp_data))
{
if(sy_rtc_time_overflow>temp_data)
{
temp_state |=0x0001;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
}
else
{
sy_rtc_time_overflow = 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(temp_state&0x0004)//gp30_event_flag.low_high_flow<<0
{
temp_state &=~0x0004;
sy_rtc_time_reverseflow += 1;
if(GetTLVData(TagReverseFlowMinute, LenReverseFlowMinute, &temp_data))
{
if(sy_rtc_time_reverseflow>temp_data)
{
temp_state |=0x0004;
}
}
}
else
{
sy_rtc_time_reverseflow = 0;
}
//©ˮ<C2A9><CBAE><EFBFBD><EFBFBD>
if(temp_state&0x0020)//gp30_event_flag.low_high_flow<<0
{
temp_state &=~0x0020;
sy_rtc_time_leakflow += 1;
if(GetTLVData(TagLeakFlowMinute, LenLeakFlowMinute, &temp_data))
{
if(sy_rtc_time_leakflow>temp_data)
{
temp_state |=0x0020;
}
}
}
else
{
sy_rtc_time_leakflow = 0;
}
//<2F>չܱ<D5B9><DCB1><EFBFBD>
if(temp_state&0x0008)//gp30_event_flag.low_high_flow<<0
{
temp_state &=~0x0008;
sy_rtc_time_nowater += 1;
if(GetTLVData(TagNoWaterMinute, LenNoWaterMinute, &temp_data))
{
if(sy_rtc_time_nowater>temp_data)
{
temp_state |=0x0008;
}
}
}
else
{
sy_rtc_time_nowater = 0;
}
return temp_state;
}
u8 PowerCheckStatusSys_ReWrite(void)
{
UNION_2U8TOU16 temp_data;
u16 temp_power;
if(GetTLVData(TagPowerLow001V, LenPowerLow001V, &temp_data.data_buf[0]))
{
temp_power = PowerCheckValueSys();
if(temp_power < temp_data.datas)//<2F><><EFBFBD><EFBFBD>תһ<D7AA><D2BB>
{
return LOW_POWER;
}
}
return NORMAL_POWER;
}
void ShenYang_SOE_Machine(void)
{
switch(step_ShenYangSOEMachine)
{
case SY_STATE_S0:
{
if(FrameCheckMsgApp(MsgShenYang_WarningCheck))
{
FrameClearMsgApp(MsgShenYang_WarningCheck);
step_ShenYangSOEMachine =SY_STATE_S1;
}
if(FrameCheckMsgApp(MsgShenYang_WarningStoreReset))
{
FrameClearMsgApp(MsgShenYang_WarningStoreReset);
uSOE_Data_Old = 0;
uSOE_Temprature_ShortOld = 0;
uSOE_Temprature_OpenOld = 0;
uSOE_Update_Flag = 0xFFFFFFFF;
uWaterState =0;
}
}
break;
case SY_STATE_S1://<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>Ϣ<EFBFBD>ж<EFBFBD>
{
uSOE_Data_New = Gp30CheckErrDataApp_ReWrite();
#if defined(VALVE)
uSOE_Valve_New = ValveGetStateApp();
#endif
uSOE_Power_New = PowerCheckStatusSys_ReWrite();
uSOE_Temprature_New = TempCheckValueApp();
if(uSOE_Data_Old != uSOE_Data_New)
{
uSOE_Data_Old = uSOE_Data_New;
if((uSOE_Data_New&0x0001)&&(uSOE_Update_Flag&0x00000001))//gp30_event_flag.low_high_flow<<0
{
uSOE_Update_Flag &=~0x00000001;
SaveNewSoe(SOE_SY_OVER_FLOW,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(checkWarningUploadState(UPLOAD_OVER_FLOW))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
uWaterState = SOE_SY_OVER_FLOW -1000;
}
if((uSOE_Data_New&0x0002)&&(uSOE_Update_Flag&0x00000002))//(gp30_event_flag.out_temp<<1)
{
uSOE_Update_Flag &=~0x00000002;
SaveNewSoe(SOE_SY_TEMP_OVER,SOE_REMARK_NOR);//<2F>¶ȳ<C2B6><C8B3><EFBFBD>
if(checkWarningUploadState(UPLOAD_TEMP_OVER))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
}
if((uSOE_Data_New&0x0004)&&(uSOE_Update_Flag&0x00000004))//(gp30_event_flag.reverse_flow<<2)
{
uSOE_Update_Flag &=~0x00000004;
SaveNewSoe(SOE_SY_REVERSE_FLOW,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(checkWarningUploadState(UPLOAD_REVERSE_FLOW))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
uWaterState = SOE_SY_REVERSE_FLOW -1000;
}
if((uSOE_Data_New&0x0008)&&(uSOE_Update_Flag&0x00000008))//(gp30_event_flag.no_water<<3)
{
uSOE_Update_Flag &=~0x00000008;
SaveNewSoe(SOE_SY_NO_WATER,SOE_REMARK_NOR);//<2F>չܱ<D5B9><DCB1><EFBFBD>
if(checkWarningUploadState(UPLOAD_NO_WATER))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
}
if((uSOE_Data_New&0x0010)&&(uSOE_Update_Flag&0x00000010))//(gp30_event_flag.gp30_err<<4)
{
uSOE_Update_Flag &=~0x00000010;
SaveNewSoe(SOE_SY_CIRCLE_WRONG,SOE_REMARK_NOR);//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
uWaterState = SOE_SY_CIRCLE_WRONG -1000;
}
if((uSOE_Data_New&0x0020)&&(uSOE_Update_Flag&0x00000020))//(gp30_event_flag.low_flow<<5)
{
uSOE_Update_Flag &=~0x00000020;
SaveNewSoe(SOE_SY_LEAK_FLOW,SOE_REMARK_NOR);//©ˮ<C2A9><CBAE><EFBFBD><EFBFBD>
if(checkWarningUploadState(UPLOAD_LEAK_FLOW))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
}
if((uSOE_Data_New&0x0040)&&(uSOE_Update_Flag&0x00000040))//(gp30_event_flag.low_amp<<6)
{
uSOE_Update_Flag &=~0x00000040;
SaveNewSoe(SOE_SY_LOW_AMP,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
if((uSOE_Data_New&0x0080)&&(uSOE_Update_Flag&0x00000080))//(gp30_event_flag.communication_err<<7)
{
uSOE_Update_Flag &=~0x00000080;
SaveNewSoe(SOE_SY_GP30_COMERR,SOE_REMARK_NOR);//GP30ͨ<30>Ź<EFBFBD><C5B9><EFBFBD>
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
uWaterState = SOE_SY_GP30_COMERR -1000;
}
if((uSOE_Data_New&0x0001)&&(uSOE_Update_Flag&0x00000100))//(gp30_event_flag.tof_overrun<<8)
{
uSOE_Update_Flag &=~0x00000100;
SaveNewSoe(SOE_SY_TOF_OVER,SOE_REMARK_NOR);//TOF<4F><46><EFBFBD><EFBFBD>
}
if((uSOE_Data_New&0x0100)&&(uSOE_Update_Flag&0x00000200))//(gp30_event_flag.water_direction<<9)
{
uSOE_Update_Flag &=~0x00000200;
SaveNewSoe(SOE_SY_REVERSE_FLOW,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*if(checkWarningUploadState(UPLOAD_REVERSE_FLOW))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}*/
uWaterState = SOE_SY_REVERSE_FLOW -1000;
}
}
if(uSOE_Valve_Old != uSOE_Valve_New)
{
u8 tem_tlv_data[7];
uSOE_Valve_Old = uSOE_Valve_New;
RtccGetDateTime(&uTempRtccTime_BCD);//<2F><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>ʱ<EFBFBD><CAB1>
if(Sys_data_object.P1.ies_valve_paras.valve_err)
{
SaveNewSoe(SOE_SY_VALVE_ERR,SOE_REMARK_NOR);//<2F><><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>ʧ<EFBFBD><CAA7>
tem_tlv_data[0] = 0xFF;
}
else
{
if(uSOE_Valve_New == VALVE_STATE_OPEN)
{
SaveNewSoe(SOE_SY_VALVE_OPEN,SOE_REMARK_NOR);//<2F><><EFBFBD><EFBFBD>
tem_tlv_data[0] = 0x55;
}
else if(uSOE_Valve_New == VALVE_STATE_CLOSE)
{
SaveNewSoe(SOE_SY_VALVE_CLOSE,SOE_REMARK_NOR);//<2F>ط<EFBFBD>
tem_tlv_data[0] = 0x99;
}
}
if(checkWarningUploadState(UPLOAD_VALVE_CHANGE))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
tem_tlv_data[1] = uTempRtccTime_BCD.s.year;
tem_tlv_data[2] = uTempRtccTime_BCD.s.month;
tem_tlv_data[3] = uTempRtccTime_BCD.s.day;
tem_tlv_data[4] = uTempRtccTime_BCD.s.hour;
tem_tlv_data[5] = uTempRtccTime_BCD.s.minute;
tem_tlv_data[6] = uTempRtccTime_BCD.s.second;
SetTLVData(TagValveState, LenValveState, tem_tlv_data);//<2F><><EFBFBD>浽TLV<4C><56><EFBFBD><EFBFBD>
}
if(uSOE_Power_Old != uSOE_Power_New)
{
uSOE_Power_Old = uSOE_Power_New;
if((LOW_POWER == uSOE_Power_New)&&(uSOE_Update_Flag&0x00000400))
{
uSOE_Update_Flag &=~0x00000400;
SaveNewSoe(SOE_SY_LOW_POWER,SOE_REMARK_NOR);//<2F>͵<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
if(checkWarningUploadState(UPLOAD_LOW_POWER))
{
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
}
FrameSetMsgApp(MsgShenYang_NbUploadWarningWithCircle);
}
}
if(uSOE_Temprature_New == -1)
{
uSOE_Temprature_OpenNew = 1;
}
else if(uSOE_Temprature_New == 36)
{
uSOE_Temprature_ShortNew = 1;
}
step_ShenYangSOEMachine = SY_STATE_S2;
}
break;
case SY_STATE_S2://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ĵ<EFBFBD><C4B4><EFBFBD>
{
//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
RtccGetDateTime(&uTempRtccTime_BCD);
//<2F><>Ҫ<EFBFBD><D2AA>eeprom
if( (uTempRtccTime_BCD.s.year == ValveActiveDateTime.s.year)&&
(uTempRtccTime_BCD.s.month == ValveActiveDateTime.s.month)&&
(uTempRtccTime_BCD.s.day == ValveActiveDateTime.s.day)&&
(uTempRtccTime_BCD.s.hour == ValveActiveDateTime.s.hour)&&
(uTempRtccTime_BCD.s.minute == ValveActiveDateTime.s.minute))
{
if (Valve_Active == 0x55) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameSetMsgApp(ValveOpenMsg);
}
else if (Valve_Active == 0x99) //<2F>ط<EFBFBD><D8B7><EFBFBD>
{
FrameSetMsgApp(ValveCloseMsg);
}
else if(Valve_Active == 0xAA)//<2F>
{
FrameSetMsgApp(ValveHalfMsg);
}
}
step_ShenYangSOEMachine = SY_STATE_S0;
}
break;
default:
{
step_ShenYangSOEMachine = SY_STATE_S0;
break;
}
}
}
u8 getWaterState(void)
{
return uWaterState;
}
//TLV<4C><56><EFBFBD><EFBFBD>
u8 getTlvTagIndex(u8 inTag)
{
int index=0;
for(index=0;index<TLV_STR_BUF_LEN;index++)
{
if(TlvStrBuf[index].Tag == inTag)
{
return index;
}
}
return 0xFF;
}
u8 SetTLVData(u8 Tag, u8 Len, u8* pValue)
{
int index = getTlvTagIndex(Tag);
int i=0;
u8 temp_addr=0;
if(index != 0xFF)
{
if(Len == TlvStrBuf[index].Len)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
temp_addr = TlvStrBuf[index].ValueAddr;
for(i=0; i<TlvStrBuf[index].Len ;i++)
{
TlvValue.data_buf[temp_addr++] = *pValue++;
}
TlvStrBuf[index].EditFlag = 1;
if(tlv_store_cnt<=TLV_STR_BUF_LEN)
{
tlv_store_cnt++;
}
return SUCCESS_IES;
}
}
return ERROR_IES;
}
u8 GetTLVData(u8 Tag, u8 Len, u8* pValue)
{
int index = getTlvTagIndex(Tag);
int i=0;
u8 temp_addr=0;
if(TagWorkTime == TlvStrBuf[index].Tag)//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
RtccGetDateTime(&uTempRtccTime_BCD);
TlvValue.s.ValueWorkTime[0] = uTempRtccTime_BCD.s.year;
TlvValue.s.ValueWorkTime[1] = uTempRtccTime_BCD.s.month;
TlvValue.s.ValueWorkTime[2] = uTempRtccTime_BCD.s.day;
TlvValue.s.ValueWorkTime[3] = uTempRtccTime_BCD.s.hour;
TlvValue.s.ValueWorkTime[4] = uTempRtccTime_BCD.s.minute;
TlvValue.s.ValueWorkTime[5] = uTempRtccTime_BCD.s.second;
}
if(index != 0xFF)
{
if(Len == TlvStrBuf[index].Len)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
temp_addr = TlvStrBuf[index].ValueAddr;
for(i=0; i<TlvStrBuf[index].Len ;i++)
{
*pValue++ = TlvValue.data_buf[temp_addr++];
}
return SUCCESS_IES;
}
}
return ERROR_IES;
}
/**
λ<EFBFBD><EFBFBD>bit<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1 <EFBFBD>չܱ<EFBFBD><EFBFBD><EFBFBD>
2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
3 ©ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
4 <EFBFBD>͵<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
5 <EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD>Χ
6 <EFBFBD>ϸDZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
7 <EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
8-11 Ԥ<EFBFBD><EFBFBD>
12-15 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>
*/
u8 checkWarningUploadState(TypeDef_UploadWarning tWarningType)
{
UNION_2U8TOU16 temp_warning_id;
if(GetTLVData(TagWarningId, LenWarningId, &temp_warning_id.data_buf[0]))
{
if((temp_warning_id.datas>>tWarningType)&0x0001)
{
return 1;
}
}
return 0;
}
void ShenYang_TlvDataStoreMachine(void)
{
static u8 index_edit=0xFF;
switch(step_TlvDataStore)
{
case SY_STATE_S0:
{
if(FrameCheckMsgApp(MsgNbUploadFreqChange))
{
FrameClearMsgApp(MsgNbUploadFreqChange);
temp_tlv_data[0]=0;
temp_tlv_data[1]=Sys_data_object.P1.Time_upload_2006.s.hour;//Сʱ
temp_tlv_data[2]=Sys_data_object.P1.Time_upload_2006.s.minute;//<2F><><EFBFBD><EFBFBD>
temp_tlv_data[3]=0;
SetTLVData(TagUploadStartTime, LenUploadStartTime, temp_tlv_data);
}
if(FrameCheckMsgApp(MsgShenYang_UdpIpPortChange))
{
int len=0;
FrameClearMsgApp(MsgShenYang_UdpIpPortChange);
//IP
for (int i = 0; i < 4; i++)
{
if (Sys_data_object.P2.server_ip[i] < 10)
{
temp_tlv_data[len++] = Sys_data_object.P2.server_ip[i] + 0x30;
}
else if (Sys_data_object.P2.server_ip[i] < 100)
{
temp_tlv_data[len++] = (Sys_data_object.P2.server_ip[i] / 10) + 0x30;
temp_tlv_data[len++] = (Sys_data_object.P2.server_ip[i] % 10) + 0x30;
}
else
{
temp_tlv_data[len++] = (Sys_data_object.P2.server_ip[i] / 100) + 0x30;
temp_tlv_data[len++] = (Sys_data_object.P2.server_ip[i] / 10) % 10 + 0x30;
temp_tlv_data[len++] = (Sys_data_object.P2.server_ip[i] % 10) + 0x30;
}
temp_tlv_data[len++] = '.';
}
len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
temp_tlv_data[len++] = ':';
temp_tlv_data[len++] = ((Sys_data_object.P2.server_port.datas) / 10000) + 0x30;
temp_tlv_data[len++] = (((Sys_data_object.P2.server_port.datas) % 10000) / 1000) + 0x30;
temp_tlv_data[len++] = (((Sys_data_object.P2.server_port.datas) % 1000) / 100) + 0x30;
temp_tlv_data[len++] = (((Sys_data_object.P2.server_port.datas) % 100) / 10) + 0x30;
temp_tlv_data[len++] = ((Sys_data_object.P2.server_port.datas) % 10) + 0x30;
temp_tlv_data[len++] = 0;
SetTLVData(TagServerIpPort, LenServerIpPort, temp_tlv_data);
}
if(tlv_store_cnt>0)
{
step_TlvDataStore = SY_STATE_S1;
}
}
break;
case SY_STATE_S1://
{
if(TASK_IDLE == EepIfIdle())
{
for(int index=0; index<TLV_STR_BUF_LEN; index++)
{
if(TlvStrBuf[index].EditFlag == 1)
{
TlvStrBuf[index].EditFlag = 0;
index_edit = index;//<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
EepWrite(&TlvValue.data_buf[TlvStrBuf[index].ValueAddr], (EEP_ADDR_SY_TLVDATA+TlvStrBuf[index].ValueAddr), TlvStrBuf[index].Len, &s_sy_eep_complete);
break;
}
}
tlv_store_cnt--;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ҵ<EFBFBD>,<2C><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>
step_TlvDataStore = SY_STATE_S2;
}
}
break;
case SY_STATE_S2://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լת<D4BC><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
{
if(TASK_IDLE == EepIfIdle())
{
GetTLVData(TlvStrBuf[index_edit].Tag, TlvStrBuf[index_edit].Len, temp_tlv_data);//<2F><>ȡtlv<6C><76><EFBFBD><EFBFBD>
if(TlvStrBuf[index_edit].Tag == TagValveState)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if((temp_tlv_data[1]==0)&&(temp_tlv_data[2]==0)&&(temp_tlv_data[3]==0)&&
(temp_tlv_data[4]==0)&&(temp_tlv_data[5]==0)&&(temp_tlv_data[6]==0))
{
if (temp_tlv_data[0] == 0x55) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameSetMsgApp(ValveOpenMsg);
}
else if (temp_tlv_data[0] == 0x99) //<2F>ط<EFBFBD><D8B7><EFBFBD>
{
FrameSetMsgApp(ValveCloseMsg);
}
else if(temp_tlv_data[0] == 0xAA)//<2F>
{
FrameSetMsgApp(ValveHalfMsg);
}
}
else
{
uTempRtccTime_BCD.s.year = temp_tlv_data[1];
uTempRtccTime_BCD.s.month = temp_tlv_data[2];
uTempRtccTime_BCD.s.day = temp_tlv_data[3];
uTempRtccTime_BCD.s.hour = temp_tlv_data[4];
uTempRtccTime_BCD.s.minute= temp_tlv_data[5];
uTempRtccTime_BCD.s.second= temp_tlv_data[6];
if(Rtcc_Check_DateTime(&uTempRtccTime_BCD) == SUCCESS)//<2F>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7>Ϸ<EFBFBD>
{
Valve_Active = temp_tlv_data[0];
ValveActiveDateTime.s.year = uTempRtccTime_BCD.s.year;
ValveActiveDateTime.s.month = uTempRtccTime_BCD.s.month;
ValveActiveDateTime.s.day = uTempRtccTime_BCD.s.day;
ValveActiveDateTime.s.hour = uTempRtccTime_BCD.s.hour;
ValveActiveDateTime.s.minute = uTempRtccTime_BCD.s.minute;
ValveActiveDateTime.s.second = 0;
for(int i=0;i<7;i++)//<2F>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6><EFBFBD>
{
TlvValue.s.ValueValveState[i] = 0;
}
EepWrite(&TlvValue.data_buf[TlvStrBuf[index_edit].ValueAddr], (EEP_ADDR_SY_TLVDATA+TlvStrBuf[index_edit].ValueAddr), TlvStrBuf[index_edit].Len, &s_sy_eep_complete);
}
}
}
if(TlvStrBuf[index_edit].Tag == TagUploadRetryTimes)//<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>---ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
{
Sys_data_object.P1.report_retry_times = temp_tlv_data[0];
EepWrite(&Sys_data_object.P1.report_retry_times, EEP_RETRY_TIMES_ADDR, 1, &s_sy_eep_complete);//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
FrameSetMsgApp(MsgNbRetryTimesChange);
}
if(TlvStrBuf[index_edit].Tag == TagUploadRetryTimes)//<2F>ط<EFBFBD><D8B7><EFBFBD>ʱʱ<CAB1><CAB1>---ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
{
Sys_data_object.P1.Upload_again_interval_time.datas = temp_tlv_data[0]*60;
EepWrite(&Sys_data_object.P1.Upload_again_interval_time.datas_map.data0, EEP_FRAME_NB_PARA_ADDR, 2, &s_sy_eep_complete);
Frame_Para_Init();
}
if(TlvStrBuf[index_edit].Tag == TagUploadRetryTimes)//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ---ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
{
}
if(TlvStrBuf[index_edit].Tag == TagUploadRetryTimes)//<2F><><EFBFBD><EFBFBD>APN---ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>Լ
{
}
step_TlvDataStore = SY_STATE_S0;
}
}
break;
default:
{
step_TlvDataStore = SY_STATE_S0;
break;
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD>
DateTime getBackDateTime(u8 backDays)
{
DateTime cdt;
struct tm tmdt;
struct tm *ldt;
time_t ctt;
RtccGetDateTime(&cdt);
tmdt.tm_year = (cdt.s.year >> 4) * 10 + (cdt.s.year & 0x0F) + 100;
tmdt.tm_mon = (cdt.s.month >> 4) * 10 + (cdt.s.month & 0x0F) - 1;
tmdt.tm_mday = (cdt.s.day >> 4) * 10 + (cdt.s.day & 0x0F);
tmdt.tm_hour = (cdt.s.hour >> 4) * 10 + (cdt.s.hour & 0x0F);
tmdt.tm_min = (cdt.s.minute >> 4) * 10 + (cdt.s.minute & 0x0F);
tmdt.tm_sec = (cdt.s.second >> 4) * 10 + (cdt.s.second & 0x0F);
tmdt.tm_isdst = 0;
ctt = mktime(&tmdt);
//ʱ<><CAB1><EFBFBD><EFBFBD>ǰ
ctt -= backDays*24*3600;
ldt = localtime(&ctt);
cdt.s.year = ((*ldt).tm_year - 100) / 10 * 16 + ((*ldt).tm_year - 100) % 10;
cdt.s.month = ((*ldt).tm_mon + 1) / 10 * 16 + ((*ldt).tm_mon + 1) % 10;
cdt.s.day = ((*ldt).tm_mday) / 10 * 16 + ((*ldt).tm_mday) % 10;
cdt.s.weekday = ((*ldt).tm_wday) / 10 * 16 + ((*ldt).tm_wday) % 10;
cdt.s.hour = ((*ldt).tm_hour) / 10 * 16 + ((*ldt).tm_hour) % 10;
cdt.s.minute = ((*ldt).tm_min) / 10 * 16 + ((*ldt).tm_min) % 10;
cdt.s.second = ((*ldt).tm_sec) / 10 * 16 + ((*ldt).tm_sec) % 10;
return cdt;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DateTime_noweek getBackDateTimeNoWeek(u8 backDays)
{
DateTime cdt;
DateTime_noweek cdt_noweek;
struct tm tmdt;
struct tm *ldt;
time_t ctt;
RtccGetDateTime(&cdt);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
tmdt.tm_year = (cdt.s.year >> 4) * 10 + (cdt.s.year & 0x0F) + 100;
tmdt.tm_mon = (cdt.s.month >> 4) * 10 + (cdt.s.month & 0x0F) - 1;
tmdt.tm_mday = (cdt.s.day >> 4) * 10 + (cdt.s.day & 0x0F);
tmdt.tm_hour = (cdt.s.hour >> 4) * 10 + (cdt.s.hour & 0x0F);
tmdt.tm_min = (cdt.s.minute >> 4) * 10 + (cdt.s.minute & 0x0F);
tmdt.tm_sec = (cdt.s.second >> 4) * 10 + (cdt.s.second & 0x0F);
tmdt.tm_isdst = 0;
ctt = mktime(&tmdt);
//ʱ<><CAB1><EFBFBD><EFBFBD>ǰ
ctt -= backDays*24*3600;
ldt = localtime(&ctt);
cdt_noweek.s.year = ((*ldt).tm_year - 100) / 10 * 16 + ((*ldt).tm_year - 100) % 10;
cdt_noweek.s.month = ((*ldt).tm_mon + 1) / 10 * 16 + ((*ldt).tm_mon + 1) % 10;
cdt_noweek.s.day = ((*ldt).tm_mday) / 10 * 16 + ((*ldt).tm_mday) % 10;
cdt_noweek.s.hour = ((*ldt).tm_hour) / 10 * 16 + ((*ldt).tm_hour) % 10;
cdt_noweek.s.minute = ((*ldt).tm_min) / 10 * 16 + ((*ldt).tm_min) % 10;
cdt_noweek.s.second = ((*ldt).tm_sec) / 10 * 16 + ((*ldt).tm_sec) % 10;
return cdt_noweek;
}
/********************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ShenYangStore_IfSleep
˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
********************************************************************************/
u8 ShenYangStore_IfSleep(void)
{
if((step_ShenYangStoreMachine == SY_STATE_S0)&&(step_ShenYangSOEMachine == SY_STATE_S0)&&(step_TlvDataStore ==SY_STATE_S0))
{
return TRUE;
}
else
{
return FALSE;
}
}
#endif