1920 lines
61 KiB
C
1920 lines
61 KiB
C
|
#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
|
|||
|
|
|||
|
|
|||
|
|