#include "stm32f10x.h" #include #include #include #include #include "Usart1.h" #include "AT.h" #include "EC800M_UDP_Client5.h" #include "INflash.h" // 计时相关的变量 uint8_t Business_time_flag = 0; uint32_t Business_timer_ms = 0; uint32_t Business_wait_time = 1200; // 秒 uint8_t network_switch = 0;//0代表开,1代表关 static uint8_t send_data_switch = 1; // 发送数据的开关,0表示发送数据 static struct Pump_Params pump_params; // 泵参数 static uint16_t Data_Number = 1; // 数据编号 extern Coefficient_Data flashdata; // 泵参数初始化 void Pump_Params_Init(void) { pump_params.userId = 0; pump_params.pumpType = 0; pump_params.infusionId = 0; //报警初始化 pump_params.alarm_BubbleOrAneroid = 0; pump_params.alarm_Blocked = 0; pump_params.alarm_Total = 0; pump_params.alarm_Ultimate = 0; pump_params.alarm_LowPower = 0; pump_params.alarm_Finished = 0; pump_params.alarm_MotorOutofcontrol = 0; pump_params.alarm_MechanicalBreakdown = 0; pump_params.alarm_UnfilledPillBox = 0; //预报初始化 pump_params.forcast_WillFinished = 0; pump_params.forcast_InsufficientAnalgesia = 0; pump_params.forcast_LowPowerForecast = 0; } // 刷新泵数据 void Pump_Params_Refresh(void) { pump_params.userId = 1000; pump_params.pumpType = 1; pump_params.infusionId = 234; pump_params.dataNumber = Data_Number; } // 业务处理 void PumpBusines_Handle(void) { // 定时发送数据 if(Business_time_flag == 0) { Business_timer_ms = 0; // 初始化计时变量 Business_time_flag = 1; } else if(Business_timer_ms > 1000 * Business_wait_time) // // 定时时间,20分钟 { // 20分钟计时完成,处理业务 send_data_switch = 1; // 发送数据标志 } // 发送数据的逻辑 if(send_data_switch == 1) { // Pump_Data_Refresh(); // 刷新数据 if(UDP_Client5_Status() == Client_Status_None) { Business_time_flag = 0; // 继续定时 // 初始化参数 Pump_Params_Init(); // 更新参数 Pump_Params_Refresh(); // 发送参数 UDP_Client5_Send(pump_params); } else if(UDP_Client5_Status() == Client_Status_Success) // 成功 { Log_Printf("发送成功:%s\r\n", UDP_Client5.info); UDP_Client5_Clear(); // 清除 send_data_switch = 0; // 关闭发送 Data_Number++; // 数据编号加1 } else if(UDP_Client5_Status() == Client_Status_Failure) // 失败 { Log_Printf("发送失败:%s\r\n", UDP_Client5.info); UDP_Client5_Clear(); // 清除 send_data_switch = 0; // 关闭发送 Data_Number++; // 数据编号加1 } } } // 循环执行 void pump_business_loop_execution() { if(flashdata.read_flag==0)return;//注册失败或flash存储失败 if(network_switch==1)return;//关闭网络状态 // 业务处理 PumpBusines_Handle(); // 客户端 UDP_Client5_Handle(); // 处理AT指令 AT_Handle(); }