Huyi 1 年之前
父节点
当前提交
ce4811d3c4
共有 2 个文件被更改,包括 48 次插入14 次删除
  1. 47 13
      Drivers/Modules/esp32/Esp32_UDP_Client5.c
  2. 1 1
      Drivers/Modules/esp32/esp32.c

+ 47 - 13
Drivers/Modules/esp32/Esp32_UDP_Client5.c

@@ -7,6 +7,7 @@
 #include <string.h>
 #include <stdlib.h>
 
+
 #include "UDP_Client.h"
 #include "Timer_Module.h"
 #include "Log_Module.h"
@@ -91,6 +92,8 @@ enum Step{
 	STEP_JOIN_DATA_MESSAGE, // 拼接数据报文
 	STEP_CLOSE_AP, 			// 断开AP连接
 	STEP_CLOSE_NETWORK, 	// 断开TCP/UDP网络
+
+	STEP_RESET,	  // 数据发送流程重置
 	STEP_SUCCESS, // 成功
 	STEP_FAILURE, // 失败
 	STEP_FINISH,  // 流程结束
@@ -99,11 +102,14 @@ enum Step{
 // 步骤跳转时的监听
 static uint8_t STEP_JOIN_AUTH_MESSAGE_times = 0; // 认证的次数
 static uint8_t STEP_HANDLE_times = 0; 			 // 数据重发的次数
+static uint8_t STEP_RESET_times = 0; 			 // 流程重置的次数
+
 
 static void initialize()
 {
 	STEP_JOIN_AUTH_MESSAGE_times = 0;
 	STEP_HANDLE_times = 0;
+	STEP_RESET_times = 0; 
 }	
 static uint16_t goto_step_event(uint16_t ns)
 {
@@ -114,15 +120,19 @@ static uint16_t goto_step_event(uint16_t ns)
 	uint16_t step = ns;
 	if(ns == STEP_JOIN_AUTH_MESSAGE && STEP_JOIN_AUTH_MESSAGE_times++ >= 1)
 	{
-		goto_failure("认证次数过多");
+		Log_Printf_Debug("认证次数过多");
 		step = STEP_FAILURE;
 	}
 	if(ns == STEP_HANDLE && STEP_HANDLE_times++ >= 2)
 	{
-		goto_failure("数据重发次数过多");
+		Log_Printf_Debug("数据重发次数过多");
+		step = STEP_RESET;
+	}
+	if(ns == STEP_RESET && STEP_RESET_times++ >= 2)
+	{
+		goto_failure("流程重置次数过多");
 		step = STEP_FAILURE;
 	}
-
 	return step;
 }
 // 流程控制
@@ -223,8 +233,8 @@ void UDPCLIENT_ProcessHandle(void)
 }
 
 // 发送数据的逻辑
-int wifi_rssi[10];			//各wifi信号值存储数组
-static int wifi_number = 0; //wifi信息编号变量
+int wifi_rssi[10];				// 各wifi信号值存储数组
+static int wifi_number = 0; 	// wifi信息编号变量
 static int wifi_location=0; 	// 最佳wifi信号在数组中的位置	
 static int select_ap_flag = 0;  // 选择AP标志位 0:未选择 1:已选择
 static enum Result result = Result_None;
@@ -265,7 +275,8 @@ static void UDPCLIENT_Process(void)
 						}
 						else if(result == Result_Failed)
 						{
-							goto_failure("WiFi模块启动失败");
+							Log_Printf_Debug("WiFi模块启动失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;
 		case STEP_SET_MODE:    			// 设置WiFi为Station模式
@@ -275,8 +286,9 @@ static void UDPCLIENT_Process(void)
 							PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "选择AP");
 						}
 						else if(result == Result_Failed)
-						{
-							goto_failure("设置工作模式失败");
+						{	
+							Log_Printf_Debug("设置工作模式失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;				
 		case STEP_SELECT_AP:	
@@ -321,13 +333,14 @@ static void UDPCLIENT_Process(void)
 							PCTRL_GotoStep(&pctrl, STEP_QUERY_SIGNAL, "查询WiFi信号强度");
 						}
 						else if(result == Result_Failed)
-						{	
+						{
 							//连接AP失败时,信号值Rssi赋值
 							signal.RSSI = -100;	
 							//连接AP失败时,下次数据发送重新选择信号最佳的AP
 							select_ap_flag = 0;
 							wifi_number = 0;
-							goto_failure("连接AP失败");
+							Log_Printf_Debug("连接AP失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;
 		case STEP_QUERY_SIGNAL:			//查询WiFi信号强度
@@ -338,18 +351,32 @@ static void UDPCLIENT_Process(void)
 						}
 						else if(result == Result_Failed)
 						{
-							goto_failure("查询WiFi信号强度失败");
+							Log_Printf_Debug("查询WiFi信号强度失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;
 		case STEP_SET_CIPMODE:			//设置普通传输模式
 						result = esp32.set_cipmode(0);
 						if(result == Result_Success)
+						{
+							PCTRL_GotoStep(&pctrl, STEP_CLOSE_NETWORK, "关闭UDP网络");
+						}
+						else if(result == Result_Failed)
+						{
+							Log_Printf_Debug("设置传输模式失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
+						}
+						break;
+		case STEP_CLOSE_NETWORK:		//关闭UDP网络
+						result = esp32.close_network();
+						if(result == Result_Success)
 						{
 							PCTRL_GotoStep(&pctrl, STEP_CONNECT_NETWORK, "连接UDP网络");
 						}
 						else if(result == Result_Failed)
 						{
-							goto_failure("设置传输模式失败");
+							Log_Printf_Debug("关闭UDP网络失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;
 		case STEP_CONNECT_NETWORK:		//连接UDP网络
@@ -360,7 +387,8 @@ static void UDPCLIENT_Process(void)
 						}
 						else if(result == Result_Failed)
 						{
-							goto_failure("连接UDP网络失败");
+							Log_Printf_Debug("连接UDP网络失败");
+							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
 						}
 						break;
 		case STEP_JUDGE_AUTH_OR_DATA: 	// 判断认证还是发送
@@ -383,6 +411,7 @@ static void UDPCLIENT_Process(void)
 						PCTRL_GotoStep(&pctrl, STEP_HANDLE, "发送认证报文");
 						break;	
 		case STEP_JOIN_DATA_MESSAGE: // 拼接数据报文
+		
 						// 泵数据更新
 						PUMPBUSINESS_ParamsRefresh();
 						// 编码
@@ -422,10 +451,14 @@ static void UDPCLIENT_Process(void)
 		case STEP_WAIT: 			// 等待
 						PCTRL_Wait(&pctrl);
 						break;
+		case STEP_RESET: 			// 发送流程重置
+						PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "数据发送流程重置>>>>>>选择AP");
+						break;
 		case STEP_SUCCESS: 			// 成功
 						PCTRL_GotoStep(&pctrl, STEP_ENTER_DEEP_SLEEP, "泵数据发送成功,进入深休眠");
 						break;
 		case STEP_FAILURE: 			// 失败
+						goto_failure("数据发送流程失败");
 						PCTRL_GotoStep(&pctrl, STEP_ENTER_DEEP_SLEEP, "泵数据发送失败,进入深休眠");
 						break;	
 		case STEP_ENTER_DEEP_SLEEP:
@@ -442,3 +475,4 @@ static void UDPCLIENT_Process(void)
 
 
 #endif
+

+ 1 - 1
Drivers/Modules/esp32/esp32.c

@@ -526,7 +526,7 @@ enum Result esp32_set_cipmode_sync(uint8_t mode)
 enum Result esp32_connect_network(char * service_type, char * IP_address, uint16_t remote_port)
 {
 	enum Result result = Result_None;
-	int activeID = 15, time=5000; 		// 活动ID, 超时时间
+	int activeID = 15, time=10000; 		// 活动ID, 超时时间
 	// 校验ID
 	if(!verifyActiveID(activeID)){ return Result_Failed; }
 	// 判断状态