Files
secs2-bootloader/usr/protocol/proto_PM100.c

742 lines
20 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "proto_PM100.h"
#include "proto_Modbus.h"
#include "stdio.h"
#include "string.h"
#include "bsp_Uart.h"
#include "os_timer.h"
char *proto_PM100_Str_WarmingCode[32] =
{
"Water flow low" ,
"" ,
"Dil.N2 flow low" ,
"BP Drooping" ,
"MP Drooping" ,
"Casing temp. high" ,
"BP-G oil level low" ,
"BP-M oil level low" ,
"MP-G oil level low" ,
"MP-M oil level low" ,
"Drv brg temp. high" ,
"Drvn brg temp. high" ,
"Oil level low" ,
"BOX temp.high" ,
"N2 valve open" ,
"Cooler 1 temp. high" ,
"Cooler 2 temp. high" ,
"Cooler 3 temp. high" ,
"Pump N2 flow low" ,
"Exh. N2 flow low" ,
"Exh. trap temp. high" ,
"Back press. high" ,
"Heater error" ,
"BP motor temp. high" ,
"MP motor temp. high" ,
"Driver temp. high" ,
"Communication error" ,
"Valve error" ,
"" ,
"" ,
"" ,
"Other warnings"
};
char *proto_PM100_Str_AlarmCode[32] =
{
"Casing temp. HH" ,
"BP motor temp. high" ,
"MP motor temp. high" ,
"Water leakage" ,
"BP thermal" ,
"MP thermal" ,
"" ,
"" ,
"" ,
"Emergency stop(EMS)" ,
"MP no current" ,
"BP no current" ,
"" ,
"Back press. high" ,
"Power failure" ,
"MP driver protection active",
"BP driver protection active",
"BP overload 2" ,
"MP overload 2" ,
"BP step out" ,
"MP step out" ,
"Emergency off(EMO)" ,
"Exh. N2 flow low" ,
"Water flow low continued" ,
"External interlock" ,
"" ,
"" ,
"" ,
"" ,
"" ,
"" ,
"Other alarms"
};
static void proto_PM100_Init(void);
static void proto_PM100_Tx_Task(void);
static void proto_PM100_Rx_Task(u8 *pData,u16 Len,void *other_data);
static void proto_PM100_Control_Start(u8 Dev);
static void proto_PM100_Control_Stop(u8 Dev);
static void proto_PM100_Control_Reset(void);
static void proto_PM100_Control_Set_Mode(u8 Mode);
static void proto_PM100_Control_Set_Mode_Speed(u8 Dev,u8 Mode,u16 Speed);
static void proto_PM100_Alarm_Control_Reset(void);
static void proto_PM100_Dev_Status_Control_Reset(void);
proto_PM100_t PM100 =
{
.Sys_StateQueue = queue(proto_PM100_Set_Data_t,10),
.Sys_State = PROTO_PM100_CMD_GET_STATE_ALARM,
.Init = proto_PM100_Init,
.Tx_Task = proto_PM100_Tx_Task,
.Rx_Task = proto_PM100_Rx_Task,
.Set_Data.Analog_Code = PROTO_PM100_GET_DATA_CODE,
.Alarm_Control.Reset = proto_PM100_Alarm_Control_Reset,
.Dev_Status_Control.Reset = proto_PM100_Dev_Status_Control_Reset,
.Control.Start = proto_PM100_Control_Start,
.Control.Stop = proto_PM100_Control_Stop,
.Control.Reset = proto_PM100_Control_Reset,
.Control.Set_Mode = proto_PM100_Control_Set_Mode,
.Control.Set_Speed = proto_PM100_Control_Set_Mode_Speed,
};
static proto_PM100_t *pPM100 = &PM100;
static void proto_PM100_Init(void)
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
pPM100->Alarm_Control.StartTime = osTime_MSecTick;
pPM100->Dev_Status_Control.StartTime = osTime_MSecTick + 500;
COM_Uart3.Rx_DataAnalysis = proto_PM100_Rx_Task;
/*<2A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
for (int i = 0; i < 32; i++)
{
PM100.Opera_Status.alarm_start_str[i][0] = '\0';
PM100.Opera_Status.warning_start_str[i][0] = '\0';
PM100.Opera_Status.alarm_start_sec[i] = 0;
PM100.Opera_Status.warning_start_sec[i] = 0;
}
}
static void proto_PM100_Send(u8 *pData,u16 Len)
{
COM_Uart3.Send(&COM_Uart3,pData,Len);
}
static u8 proto_PM100_SysState_Switch(void)
{
proto_PM100_Set_Data_t Set_Data;
if(0 == queue_pop(pPM100->Sys_StateQueue,&Set_Data))
{
pPM100->Sys_State = PROTO_PM100_CMD_GET_STATE_ALARM;
return 0;
}
else
{
pPM100->Sys_State = Set_Data.Sys_State;
memcpy(&pPM100->Set_Data,&Set_Data,sizeof(proto_PM100_Set_Data_t));
return 1;
}
}
static void proto_PM100_Alarm_Control_Reset(void)
{
pPM100->Alarm_Control.Code_Last = ((u64)pPM100->Opera_Status.Warming_Code << 32) | (u64)pPM100->Opera_Status.Alarm_Code;
}
static void proto_PM100_Dev_Status_Control_Reset(void)
{
memcpy(&pPM100->Dev_Status_Control.Opera_Status_Last,&pPM100->Opera_Status,sizeof(proto_PM100_Set_Data_t));
}
static void proto_PM100_Control_Start(u8 Dev)
{
proto_PM100_Set_Data_t Set_Data;
Set_Data.Sys_State = PROTO_PM100_CMD_START;
Set_Data.Dev = Dev;
queue_push_back(pPM100->Sys_StateQueue,(void *)&Set_Data);
}
static void proto_PM100_Control_Stop(u8 Dev)
{
proto_PM100_Set_Data_t Set_Data;
Set_Data.Sys_State = PROTO_PM100_CMD_STOP;
Set_Data.Dev = Dev;
queue_push_back(pPM100->Sys_StateQueue,(void *)&Set_Data);
}
static void proto_PM100_Control_Reset(void)
{
proto_PM100_Set_Data_t Set_Data;
Set_Data.Sys_State = PROTO_PM100_CMD_RESET;
queue_push_back(pPM100->Sys_StateQueue,(void *)&Set_Data);
}
static void proto_PM100_Control_Set_Mode(u8 Mode)
{
proto_PM100_Set_Data_t Set_Data;
Set_Data.Sys_State = PROTO_PM100_CMD_SET_MODE;
Set_Data.Mode = Mode;
queue_push_back(pPM100->Sys_StateQueue,(void *)&Set_Data);
}
static void proto_PM100_Control_Set_Mode_Speed(u8 Dev,u8 Mode,u16 Speed)
{
proto_PM100_Set_Data_t Set_Data;
Set_Data.Sys_State = PROTO_PM100_CMD_SET_SPEED;
Set_Data.Dev = Dev;
Set_Data.Mode = Mode;
Set_Data.Speed = Speed;
queue_push_back(pPM100->Sys_StateQueue,(void *)&Set_Data);
}
/*<2A><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>*/
static u8 proto_PM100_CheckSum(u8 *pData,u16 len)
{
u16 i;
u8 Sum=0;
for(i=0;i<len;i++)
{
Sum += pData[i];
}
return Sum;
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD>豸*/
static void proto_PM100_Tx_Start(u8 Dev)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_START);
if(PROTO_PM100_DEV_MP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_MP;
}
else if(PROTO_PM100_DEV_BP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_BP;
}
else/*<2A>쳣*/
{
return ;
}
Tx[5] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[6],"%02X",proto_PM100_CheckSum((u8 *)Tx,6));
Tx[8] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 9;
proto_PM100_Send((u8*)Tx,Len);
}
/*ֹͣ<CDA3>豸*/
static void proto_PM100_Tx_Stop(u8 Dev)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_STOP);
if(PROTO_PM100_DEV_MP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_MP;
}
else if(PROTO_PM100_DEV_BP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_BP;
}
else/*<2A>쳣*/
{
return ;
}
Tx[5] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[6],"%02X",proto_PM100_CheckSum((u8 *)Tx,6));
Tx[8] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 9;
proto_PM100_Send((u8*)Tx,Len);
}
/*<2A><>λ<EFBFBD>豸*/
static void proto_PM100_Tx_Reset(void)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_RESET);
Tx[4] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[5],"%02X",proto_PM100_CheckSum((u8 *)Tx,5));
Tx[7] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 8;
proto_PM100_Send((u8*)Tx,Len);
}
/*<2A><><EFBFBD><EFBFBD>ģʽ*/
static void proto_PM100_Tx_Set_Mode(u8 Mode)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_SET_MODE);
if(PROTO_PM100_MODE_NORMAL == Mode)
{
Tx[4] = PROTO_PM100_MODE_CHAR_NORMAL;
}
else if(PROTO_PM100_MODE_POWER_SAVING == Mode)
{
Tx[4] = PROTO_PM100_MODE_CHAR_POWER_SAVING;
}
else/*<2A>쳣*/
{
return ;
}
Tx[5] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[6],"%02X",proto_PM100_CheckSum((u8 *)Tx,6));
Tx[8] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 9;
proto_PM100_Send((u8*)Tx,Len);
}
/*<2A><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ת<EFBFBD><D7AA>*/
static void proto_PM100_Tx_Set_Mode_Speed(u8 Dev,u8 Mode,u16 Speed)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_SET_SPEED);
if(PROTO_PM100_DEV_MP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_MP;
}
else if(PROTO_PM100_DEV_BP == Dev)
{
Tx[4] = PROTO_PM100_DEV_CHAR_BP;
}
else/*<2A>쳣*/
{
return ;
}
if(PROTO_PM100_MODE_NORMAL == Mode)
{
Tx[5] = PROTO_PM100_MODE_CHAR_NORMAL;
}
else if(PROTO_PM100_MODE_POWER_SAVING == Mode)
{
Tx[5] = PROTO_PM100_MODE_CHAR_POWER_SAVING;
}
else/*<2A>쳣*/
{
return ;
}
if(Speed > 9900)
{
Speed = 99;
}
sprintf(&Tx[6],"%d",Speed);
Tx[8] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[9],"%02X",proto_PM100_CheckSum((u8 *)Tx,9));
Tx[11] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 12;
proto_PM100_Send((u8*)Tx,Len);
}
/*<2A><>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
static void proto_PM100_Tx_Get_Data(u32 Analog_Code)
{
char Tx[20];
u16 Len;
u8 i,AD[8];
Analog_Code = PROTO_PM100_GET_DATA_CODE;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_GET_DATA);
for(i=0;i<8;i++)
{
AD[i] = (Analog_Code >> (4 * (7 - i))) & 0x0000000f;
sprintf(&Tx[4 + i],"%X",AD[i]);
}
Tx[12] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[13],"%02X",proto_PM100_CheckSum((u8 *)Tx,13));
Tx[15] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 16;
proto_PM100_Send((u8*)Tx,Len);
}
/*<2A><>ȡ״̬<D7B4>ͱ<EFBFBD><CDB1><EFBFBD>*/
static void proto_PM100_Tx_Get_State_Alarm(void)
{
char Tx[20];
u16 Len;
Tx[0] = PROTO_PM100_FRAME_STRUCT_STX;
sprintf(&Tx[1],"%s",PROTO_PM100_CMD_STR_GET_STATE_ALARM);
Tx[4] = PROTO_PM100_FRAME_STRUCT_ETX;
sprintf(&Tx[5],"%02X",proto_PM100_CheckSum((u8 *)Tx,5));
Tx[7] = PROTO_PM100_FRAME_STRUCT_CR;
Len = 8;
proto_PM100_Send((u8*)Tx,Len);
}
static void proto_PM100_Tx_Task(void)
{
u8 SendTimeFlag = 0;
if(0 == (pPM100->error_code & PROTO_PM100_ERROR_CODE_TIMEOUT))
{
pPM100->time_out_count++;
if(pPM100->time_out_count > 10)
{
pPM100->error_code |= PROTO_PM100_ERROR_CODE_TIMEOUT;
}
}
if( 1 == pPM100->AnalogData_Control.FirstFlag
&& 1 != pPM100->AnalogData_Control.EndFlag
)
{
pPM100->AnalogData_Control.CountTime++;
if(pPM100->AnalogData_Control.CountTime >= 3) /*<2A><><EFBFBD><EFBFBD>3<EFBFBD><33>û<EFBFBD><C3BB><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>*/
{
pPM100->AnalogData_Control.FirstFlag = 0;
pPM100->AnalogData_Control.EndFlag = 0;
pPM100->AnalogData_Control.CountTime = 0;
pPM100->Sys_State = PROTO_PM100_CMD_GET_STATE_ALARM;
}
return;
}
switch(pPM100->Sys_State)
{
case PROTO_PM100_CMD_START :
{
proto_PM100_Tx_Start(pPM100->Set_Data.Dev);
}break;
case PROTO_PM100_CMD_STOP :
{
proto_PM100_Tx_Stop(pPM100->Set_Data.Dev);
}break;
case PROTO_PM100_CMD_RESET :
{
proto_PM100_Tx_Reset();
}break;
case PROTO_PM100_CMD_SET_MODE :
{
proto_PM100_Tx_Set_Mode(pPM100->Set_Data.Mode);
}break;
case PROTO_PM100_CMD_SET_SPEED :
{
proto_PM100_Tx_Set_Mode_Speed(pPM100->Set_Data.Dev,pPM100->Set_Data.Mode,pPM100->Set_Data.Speed);
}break;
case PROTO_PM100_CMD_GET_DATA :
{
proto_PM100_Tx_Get_Data(pPM100->Set_Data.Analog_Code);
pPM100->AnalogData_Control.FirstFlag = 1;
SendTimeFlag = 1;
}break;
case PROTO_PM100_CMD_GET_STATE_ALARM :
{
proto_PM100_Tx_Get_State_Alarm();
SendTimeFlag = 1;
}break;
default:
{
}break;
}
if(SendTimeFlag)
{
return ;
}
else
{
pPM100->SendTime++;
if(pPM100->SendTime >= 3)
{
pPM100->SendTime = 0;
pPM100->Sys_State = PROTO_PM100_CMD_GET_STATE_ALARM;
}
}
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>*/
static void proto_PM100_Rx_Task(u8 *pData,u16 Len,void *other_data)
{
u8 SumCheck[2],SuccessFlag;
u8 *pTextData;
char TextData[10];
/*֡ͷ<D6A1>ж<EFBFBD>*/
if(PROTO_PM100_FRAME_STRUCT_STX != pData[0])
{
return;
}
/*֡β<D6A1>ж<EFBFBD>*/
if( PROTO_PM100_FRAME_STRUCT_ETX != pData[Len-4]
|| PROTO_PM100_FRAME_STRUCT_CR != pData[Len-1]
)
{
return;
}
if(PROTO_PM100_CMD_GET_DATA == pPM100->Sys_State)/*ʵʱģ<CAB1><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>жϣ<D0B6><CFA3>Ѿ<EFBFBD>ճ<EFBFBD><D5B3><EFBFBD><EFBFBD>*/
{
}
else
{
/*У<><D0A3><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
sprintf((char*)SumCheck,"%02X",proto_PM100_CheckSum(pData,Len - 3));
if(SumCheck[0] != pData[Len - 3] || SumCheck[1] != pData[Len - 2])
{
return ;
}
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
pPM100->error_code &= (~PROTO_PM100_ERROR_CODE_TIMEOUT);
pPM100->time_out_count = 0;
SuccessFlag = 0;
pTextData = &pData[1];
switch(pPM100->Sys_State)
{
case PROTO_PM100_CMD_START :
case PROTO_PM100_CMD_STOP :
case PROTO_PM100_CMD_RESET :
case PROTO_PM100_CMD_SET_MODE :
case PROTO_PM100_CMD_SET_SPEED :
{
if(0 == strncmp((char *)pTextData,PROTO_PM100_CMD_STR_SET_OK,strlen(PROTO_PM100_CMD_STR_SET_OK)))
{
SuccessFlag = 1;
proto_PM100_SysState_Switch();
}
else
{
SuccessFlag = 0;
}
}break;
case PROTO_PM100_CMD_GET_DATA :
{
u16 Len_Index = 0;
u8 *pData_u8 = pData;
int DataIndex;
float Data;
float *pData_float = (float *)&pPM100->AnalogData;
while(Len_Index < Len)
{
pData_u8 = &pData[Len_Index + 1];
snprintf(TextData,3,"%s",pData_u8);
sscanf((char*)TextData,"%d",&DataIndex);
if(DataIndex > 22)
{
Len_Index += 14;
continue ;
}
snprintf(TextData,8,"%s",&pData_u8[3]);
sscanf((char*)TextData,"%f",&Data);
pData_float[DataIndex] = Data;
Len_Index += 14;
}
Len_Index -=14;
pData_u8 = &pData[Len_Index + 1];
if(0 == strncmp((char *)pData_u8,PROTO_PM100_CMD_STR_SET_END,strlen(PROTO_PM100_CMD_STR_SET_END)))
{
SuccessFlag = 1;
pPM100->AnalogData_Control.EndFlag = 1;
}
else
{
SuccessFlag = 0;
}
/*
if(Len > 8)
{
int DataIndex;
float Data;
float *pData = (float *)&pPM100->AnalogData;
snprintf(TextData,3,"%s",pTextData);
sscanf((char*)TextData,"%d",&DataIndex);
if(DataIndex >= 32)
{
return ;
}
snprintf(TextData,8,"%s",&pTextData[3]);
sscanf((char*)TextData,"%f",&Data);
pData[DataIndex] = Data;
SuccessFlag = 1;
}
else
{
if(0 == strncmp((char *)pTextData,PROTO_PM100_CMD_STR_SET_END,strlen(PROTO_PM100_CMD_STR_SET_END)))
{
SuccessFlag = 1;
pPM100->AnalogData_Control.EndFlag = 1;
}
else
{
SuccessFlag = 0;
}
} */
}break;
case PROTO_PM100_CMD_GET_STATE_ALARM :
{
u32 Data,i;
if(0 != strncmp((char *)pTextData,PROTO_PM100_CMD_STR_GET_STATE_ALARM,strlen(PROTO_PM100_CMD_STR_GET_STATE_ALARM)))
{
SuccessFlag = 0;
break;
}
if(PROTO_PM100_MODE_CHAR_NORMAL == pTextData[3])
{
pPM100->Opera_Status.Run_Status = PROTO_PM100_MODE_NORMAL;
}
else if(PROTO_PM100_MODE_CHAR_POWER_SAVING == pTextData[3])
{
pPM100->Opera_Status.Run_Status = PROTO_PM100_MODE_POWER_SAVING;
}
else/*<2A>쳣*/
{
SuccessFlag = 0;
break;
}
if(PROTO_PM100_MODE_CHAR_RUNING == pTextData[4])
{
pPM100->Opera_Status.MP_Status = PROTO_PM100_MODE_RUNING;
}
else if(PROTO_PM100_MODE_CHAR_STOP == pTextData[4])
{
pPM100->Opera_Status.MP_Status = PROTO_PM100_MODE_STOP;
}
else/*<2A>쳣*/
{
SuccessFlag = 0;
break;
}
if(PROTO_PM100_MODE_CHAR_RUNING == pTextData[5])
{
pPM100->Opera_Status.BP_Status = PROTO_PM100_MODE_RUNING;
}
else if(PROTO_PM100_MODE_CHAR_STOP == pTextData[5])
{
pPM100->Opera_Status.BP_Status = PROTO_PM100_MODE_STOP;
}
else/*<2A>쳣*/
{
SuccessFlag = 0;
break;
}
pPM100->Opera_Status.Warming_Code = 0;
pPM100->Opera_Status.Alarm_Code = 0;
// for(i=0;i<8;i++)
// {
// snprintf(TextData,8,"%s",&pTextData[6]);
// sscanf((char*)TextData,"%x",&Data);
// pPM100->Opera_Status.Warming_Code |= (Data & 0x0000000f);
//
// snprintf(TextData,8,"%s",&pTextData[14]);
// sscanf((char*)TextData,"%x",&Data);
// pPM100->Opera_Status.Alarm_Code |= Data & 0x0000000f;
// }
sscanf((const char *)&pTextData[6], "%8x", &pPM100->Opera_Status.Warming_Code);
sscanf((const char *)&pTextData[14], "%8x", &pPM100->Opera_Status.Alarm_Code);
if(0 == proto_PM100_SysState_Switch())
{
pPM100->Sys_State = PROTO_PM100_CMD_GET_DATA; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ͻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
}
SuccessFlag = 1;
}break;
default:
{
}break;
}
/*ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿְ<C7B7><D6B0><EFBFBD>ȡ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B4A6>*/
if(PROTO_PM100_CMD_GET_DATA == pPM100->Sys_State)
{
if(1 == pPM100->AnalogData_Control.FirstFlag)
{
/*<2A>ְ<EFBFBD><D6B0><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
if(1 == pPM100->AnalogData_Control.EndFlag)
{
pPM100->AnalogData_Control.FirstFlag = 0;
pPM100->AnalogData_Control.EndFlag = 0;
pPM100->AnalogData_Control.CountTime = 0;
proto_PM100_SysState_Switch();
}
else if(0 == SuccessFlag)
{
}
else
{
pPM100->AnalogData_Control.CountTime = 0;
}
}
}
else
{
if(0 == SuccessFlag)
{
}
else
{
pPM100->SendTime = 0;
return;
}
}
}