Huyi 3 月之前
父节点
当前提交
ca749cd498
共有 4 个文件被更改,包括 63 次插入3 次删除
  1. 2 2
      Drivers/CONFIG.h
  2. 13 1
      Drivers/Modules/esp32/Esp32_UDP_Client5.c
  3. 47 0
      Drivers/Modules/esp32/esp32.c
  4. 1 0
      Drivers/Modules/esp32/esp32.h

+ 2 - 2
Drivers/CONFIG.h

@@ -6,9 +6,9 @@
 #define DEBUG 1 // Debug开关 1是开,0是关
 
 // 测试环境
-#define TEST_ENV 1
+//#define TEST_ENV 1
 // 生产环境
-//#define PROD_ENV 1
+#define PROD_ENV 1
 
 
 

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

@@ -93,6 +93,7 @@ enum Step{
 	STEP_CLOSE_AP, 			// 断开AP连接
 	STEP_CLOSE_NETWORK, 	// 断开TCP/UDP网络
 
+	STEP_RST,	  	// 重启WiFi模块
 	STEP_RESET,	  // 数据发送流程重置
 	STEP_SUCCESS, // 成功
 	STEP_FAILURE, // 失败
@@ -278,7 +279,18 @@ static void UDPCLIENT_Process(void)
 						else if(result == Result_Failed)
 						{
 							Log_Printf_Debug("WiFi模块启动失败");
-							PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
+							PCTRL_GotoStep(&pctrl, STEP_RST, "重启WiFi模块");
+						}
+						break;
+		case STEP_RST:
+						result = esp32.rst();
+						if(result == Result_Success)
+						{
+							PCTRL_GotoStep(&pctrl, STEP_SET_MODE, "设置WiFi为Station工作模式");
+						}
+						else if(result == Result_Failed)
+						{
+							goto_failure("重启WiFi模块失败");
 						}
 						break;
 		case STEP_SET_MODE:    			// 设置WiFi为Station模式

+ 47 - 0
Drivers/Modules/esp32/esp32.c

@@ -61,6 +61,7 @@ enum Result esp32_query_mac_address(char * MAC_address);	//34.
 enum Result esp32_set_ip_address(char *IP_address);			//35.设置WiFi模块的IP地址
 enum Result esp32_set_dhcp(uint8_t operate,uint8_t mode);	//36.设置启用DHCP模式
 enum Result esp32_set_gateway(char *IP_address, char *Gateway, char *Netmask);	//37.设置WiFi模块的IP地址、网关、掩码
+enum Result esp32_rst(void);								//38.重启WiFi模块
 
 
 /*************************************************** AT指令相关函数 ***************************************************/
@@ -1424,6 +1425,51 @@ enum Result esp32_set_gateway(char *IP_address, char *Gateway, char *Netmask)
 	return result;
 }
 
+/******************************************************************************
+* 38.重启WiFi模块
+*
+*******************************************************************************/
+enum Result esp32_rst(void)
+{
+	enum Result result = Result_None;
+	int activeID = 38, time=5000; 	// 活动ID, 超时时间
+	// 校验ID
+	if(!verifyActiveID(activeID)){ return Result_Failed; }
+	// 判断状态
+	if(getStatus() == Status_None) 		// 空闲状态
+	{
+		sprintf(AT_CMD, "AT+RST\r\n"); // 拼接AT指令
+		result = send_at(AT_CMD, activeID);
+	}
+	else if(getStatus() != Status_Sending) 		  		// 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
+	{
+		Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
+		result = failed(1);		// 失败
+	}
+	else if(getTimerMs() > time) 						// 正在发送状态。判断超时
+	{
+		Log_Printf_Debug("AT指令返回超时\r\n"); 			// 打印日志
+		result = overtime(); 	// 超时
+	}
+	else if(strstr((char * )AT_result(), "OK") != NULL) 	// 查询是否返回
+	{
+		if(strstr((char * )AT_result(), "ready") != NULL)
+		{
+			// 发送日志
+			Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
+			Log_SendArray_Debug(AT_result(), AT_result_length());
+			result = success(); // 成功
+		}
+		else if(strstr((char * )AT_result(), "ERROR\r\n") != NULL) 	// 查询是否返回
+		{
+			Log_Printf_Debug("返回: %d\r\n", AT_result_length());
+			Log_SendArray_Debug(AT_result(), AT_result_length());
+			result = failed(2); // 失败
+		}	
+	}
+	return result;
+}
+
 /***************************************** 基于ESP32_C3模组的相关结构体声明 *****************************************/
 
 struct ESP32_Struct esp32=
@@ -1469,6 +1515,7 @@ struct ESP32_Struct esp32=
 	.set_ip_address = esp32_set_ip_address,
 	.set_dhcp = esp32_set_dhcp,
 	.set_gateway = esp32_set_gateway,
+	.rst = esp32_rst,
 	
 };
 			

+ 1 - 0
Drivers/Modules/esp32/esp32.h

@@ -80,6 +80,7 @@ struct ESP32_Struct
 	enum Result (* set_ip_address)(char *IP_address);			//35.设置WiFi模块的IP地址
 	enum Result (* set_dhcp)(uint8_t operate,uint8_t mode);		//36.设置启用DHCP模式
 	enum Result (* set_gateway)(char *IP_address, char *Gateway, char *Netmask);	//37.设置WiFi模块的IP地址、网关、掩码
+	enum Result (* rst)(void);									//38.重启WiFi模块
 };