Huyi 1 年之前
父节点
当前提交
3a14eb7980
共有 2 个文件被更改,包括 17 次插入18 次删除
  1. 16 17
      Drivers/Modules/esp32/Esp32_UDP_Client5.c
  2. 1 1
      Drivers/Modules/esp32/esp32.c

+ 16 - 17
Drivers/Modules/esp32/Esp32_UDP_Client5.c

@@ -80,7 +80,6 @@ enum Step{
 	
 	STEP_SET_MODE,			// 设置WIFI工作模式
 	STEP_SELECT_AP,			// 选择AP
-	STEP_TEST_AP,			// 检验已选择的AP
 	STEP_CONNECT_AP,		// 连接AP
 	STEP_QUERY_SIGNAL,		// 查询WiFi信号强度
 	STEP_SET_CIPMODE,		// 设置传输模式
@@ -99,9 +98,12 @@ enum Step{
 
 // 步骤跳转时的监听
 static uint8_t STEP_JOIN_AUTH_MESSAGE_times = 0; // 认证的次数
+static uint8_t STEP_HANDLE_times = 0; 			 // 数据重发的次数
+
 static void initialize()
 {
 	STEP_JOIN_AUTH_MESSAGE_times = 0;
+	STEP_HANDLE_times = 0;
 }	
 static uint16_t goto_step_event(uint16_t ns)
 {
@@ -115,7 +117,12 @@ static uint16_t goto_step_event(uint16_t ns)
 		goto_failure("认证次数过多");
 		step = STEP_FAILURE;
 	}
-	
+	if(ns == STEP_HANDLE && STEP_HANDLE_times++ >= 2)
+	{
+		goto_failure("数据重发次数过多");
+		step = STEP_FAILURE;
+	}
+
 	return step;
 }
 // 流程控制
@@ -303,22 +310,9 @@ static void UDPCLIENT_Process(void)
 							}
 						}
 						else
-						{
-							PCTRL_GotoStep(&pctrl, STEP_TEST_AP, "检验已选择的AP");
-						}
-						break;
-		case STEP_TEST_AP:
-						result = esp32.query_id_signal(regist_response.wifi[wifi_location].wifiName, &wifi_rssi[wifi_location]);
-						if(result == Result_Success)
 						{
 							PCTRL_GotoStep(&pctrl, STEP_CONNECT_AP, "连接AP");
 						}
-						else if(result == Result_Failed)
-						{
-							wifi_number = 0;
-							select_ap_flag = 0;
-							goto_failure("检验已选择的AP失败");
-						}
 						break;
 		case STEP_CONNECT_AP:			// 连接AP
 						result = esp32.connect_ap(WIFI_ID,WIFI_PASSWORD);
@@ -327,7 +321,12 @@ 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失败");
 						}
 						break;
@@ -417,7 +416,7 @@ static void UDPCLIENT_Process(void)
 						}
 						else if(result == Result_Failed)
 						{
-							goto_failure("等待结果失败");
+							PCTRL_GotoStep(&pctrl, STEP_HANDLE, "重新发送数据");
 						}
 						break;	
 		case STEP_WAIT: 			// 等待

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

@@ -395,7 +395,7 @@ enum Result esp32_set_sleep_sync(uint8_t mode)
 enum Result esp32_connect_ap(char * id, char * password)
 {
 	enum Result result = Result_None;
-	int activeID = 13, time=6000; 		// 活动ID, 超时时间
+	int activeID = 13, time=15000; 		// 活动ID, 超时时间
 	// 校验ID
 	if(!verifyActiveID(activeID)){ return Result_Failed; }
 	// 判断状态