#include "stm32f10x.h" #include #include #include #include #include "PumpBusiness.h" #include "Usart1.h" #include "CONFIG.h" #include "Initialize.h" #include "UDP_Client.h" #include "Timer_Module.h" #include "Log_Module.h" #include "At_Module.h" #include "Pump_Dicts_Util.h" #include "Tuoreniot.h" #include "Regist.h" #include "UDP_Client.h" // 联网成功标识 uint8_t Network_Success_Flag = 0; struct PUMPDICTS_ParamsStruct pump_params; // 泵参数 static uint16_t Data_Number = 0; // 数据编号 static uint16_t Data_success_Number = 0; // 成功包 static uint16_t Data_fail_Number = 0; // 失败包 int RSRP1=0; int RSRQ2=0; int RSSI3=0; int SINR4=0; // 泵参数初始化 static void PUMPBUSINESS_ParamsInit(void) { pump_params.userId = 0; pump_params.pumpType = 0; pump_params.infusionId = 0; pump_params.appendDose=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; #if BC260Y pump_params.networkType=2; #endif #if EC800M pump_params.networkType=1; #endif } // 刷新泵数据 void PUMPBUSINESS_ParamsRefresh(void) { // 初始化 PUMPBUSINESS_ParamsInit(); pump_params.userId = 1000; pump_params.pumpType = 1; pump_params.infusionId = 234; pump_params.dataNumber = Data_Number; pump_params.electricity=99; pump_params.validTimes=10; pump_params.appendDose=3; pump_params.invalidTimes=4; pump_params.patientCode = 2000; pump_params.totalDose=11; pump_params.ward=2; // 编号124,病区。 pump_params.bedNo=3; // 编号125,床号。 pump_params.alarm_LowPower = 1; pump_params.alarm_Total = 1; pump_params.finishDose =20; pump_params.alarm_UnfilledPillBox = 1; pump_params.forcast_WillFinished =1; pump_params.forcast_InsufficientAnalgesia = 0; pump_params.forcast_LowPowerForecast = 0; } // 初始化结果处理 static void Initialize_ResultHandle() { // 初始化过程处理 if(INITIALIZE_GetStatus() == INITIALIZE_Status_Being) { // 初始化流程处理 INITIALIZE_ProcessHandle(); } else if(INITIALIZE_GetStatus() == INITIALIZE_Status_Done) { Log_Printf_Debug("初始化结束\r\n"); if(INITIALIZE_GetResult() == INITIALIZE_Result_Success) { Log_Printf_Debug("初始化成功: %d\r\n", INITIALIZE_GetResult()); Network_Success_Flag = 1; } else if(INITIALIZE_GetResult() == INITIALIZE_Result_Failure) { Log_Printf_Debug("初始化失败: %d\r\n", INITIALIZE_GetResult()); Network_Success_Flag = 0; } // 重置初始化 INITIALIZE_Reset(); } } // 注册结果处理 static void Regist_ResultHandle() { // 注册过程处理 if(REGIST_GetStatus() == REGIST_Status_Being) { // 注册流程处理 REGIST_ProcessHandle(); } else if(REGIST_GetStatus() == REGIST_Status_Done) { Log_Printf_Debug("注册结束\r\n"); if(REGIST_GetResult() == REGIST_Result_Success) { Log_Printf_Debug("注册成功: %d\r\n", REGIST_GetResult()); Network_Success_Flag = 1; } else if(REGIST_GetResult() == REGIST_Result_Failure) { Log_Printf_Debug("注册失败: %d\r\n", REGIST_GetResult()); Network_Success_Flag = 0; } // 重置注册 REGIST_Reset(); } } // 定时发送 // 计时相关的变量 static struct TIMER_Struct timer; static uint32_t Business_wait_time = 1200; // 秒 uint8_t send_data_switch = 1; // 发送数据的开关,0表示发送数据 static void UDPClient_SendDataInterval() { // 定时发送数据 if(time_get_delay(&timer) > 1000 * Business_wait_time) // // 定时时间,20分钟 { // 20分钟计时完成,处理业务 send_data_switch = 1; // 发送数据标志 time_clear(&timer); // 重新定时 Log_Printf_Debug("PumpBusines_Handle\r\n"); } // 判断发送 if(send_data_switch == 1) { // 初始化流程处于空闲, 注册流程处于空闲,注册成功时发送 if(INITIALIZE_GetStatus() == INITIALIZE_Status_None && REGIST_GetStatus() == REGIST_Status_None && TUORENIOT_GetCodeOfRegistResponse() == 200) { Log_Printf_Debug("开始发送\r\n"); UDPCLIENT_Start(); send_data_switch = 0; // 数据编号加1 Data_Number++; } } } // 发送结果处理 static void UDPClient_ResultHandle() { // 发送过程处理 if(UDPCLIENT_GetStatus() == UDPCLIENT_Status_Being) { // 发送流程处理 UDPCLIENT_ProcessHandle(); } else if(UDPCLIENT_GetStatus() == UDPCLIENT_Status_Done) { Log_Printf_Debug("发送结束\r\n"); if(UDPCLIENT_GetResult() == UDPCLIENT_Result_Success) { Log_Printf_Debug("发送成功: %d\r\n", UDPCLIENT_GetResult()); if(UDPCLIENT_TestModeFlag==1){ UDPCLIENT_QuerySignal(&RSRP1,&RSRQ2,&RSSI3,&SINR4); Log_Printf("\r\nRSRP1:%d,RSRQ2:%d,RSSI3:%d,SINR4:%d\r\n", RSRP1,RSRQ2,RSSI3,SINR4); } Network_Success_Flag = 1; Data_success_Number++; } else if(UDPCLIENT_GetResult() == UDPCLIENT_Result_Failure) { Log_Printf_Debug("发送失败: %d\r\n", UDPCLIENT_GetResult()); Network_Success_Flag = 0; Data_fail_Number++; } // 重置发送 UDPCLIENT_Reset(); } } // 业务处理 static void PUMPBUSINESS_Process(void) { // 初始化诱因处理 INITIALIZE_TriggerHandle(); // 初始化结果处理 Initialize_ResultHandle(); // 注册结果处理 Regist_ResultHandle(); // 定时发送数据 UDPClient_SendDataInterval(); // 发送结果处理 UDPClient_ResultHandle(); // 一些未处理的数据 AT_ResidueHandle(); } // 初始化,放到while前 void PUMPBUSINESS_Init(void) { TUORENIOT_Init(); } // 流程处理,放到while循环 void PUMPBUSINESS_ProcessHandle(void) { PUMPBUSINESS_Process(); }