switch(STATE)
{
case esp8285Init: //ESP8285初始化 设置为AP+Station模式
if(ESP8285InitFlag)
{
//LED1_ON;
STATE=esp8285setAP;
ESP8285InitFlag=0;
}else{
WIFI_Init();
}
break;
case esp8285setAP: //ESP8285设置为热点 AP模式
if(ESP8285SetAPFlag)
{
LED2_ON;
STATE=esp8285connectAP;
ESP8285SetAPFlag=0;
}else{
ESP8285_SET_TCPServer();
}
break;
case esp8285connectAP: //等待客户端连接 客户端连接后发送ssid和密码
if(ESP8285APRecFlag)
{
ESP8285APRecFlag=0;
STATE=esp8285connectWIFI;
}
break;
case esp8285connectWIFI: //ESP8285接收到ssid和密码后连接ssid AP模式 如果连接错误返回到上一个状态以等待客户端发送正确的ssid和密码
if(ESP8285ConnectWifiFlag)
{
LED1_OFF;
ESP8285ConnectWifiFlag=0;
STATE=esp8285resetAP;
// get_IP();
WIFI_SEND_CT_IP(1);
Delay(2000);
}else{
WIFI_ConnectWifi();
}
break;
case esp8285resetAP: //关闭ESP8285热点模式 并设置成单连接
ESP8285_RESET_TCPServer();
// if(ESP8285ResetAPFlag)
// {
STATE=esp8285setUDP;
ESP8285ResetAPFlag=0;
// }else{
// ESP8285_RESET_TCPServer();
// }
break;
case esp8285setUDP://设置UDP并广播数据
if(ESP8285SetUDPFlag)
{
ESP8285SetUDPFlag=0;
STATE=esp8285RecieveUDPData;
// UDP_SENDUDPData("UDPSETOK");
}else {
ESP8285_SET_UDP(1,ESP8285Rec.UDPRecIPBuf,ESP8285Rec.UDPRecPortBuf);
}
break;
case esp8285RecieveUDPData://UDP接收数据
if(ESP8285UDPRecFlag)
{
ESP8285UDPRecFlag=0;
STATE=esp8285CloseUDP;
UDP_SENDUDPData("ROBOT_OK");
}
break;
case esp8285CloseUDP:
if(ESP8285RESETUDPFlag)
{
STATE=esp8285setSTA;
ESP8285RESETUDPFlag=0;
Fun_Strcpy_0x00((u8*)ESP8285Rec.dataBuf, ESP_RX_MAX_LEN);
ESP8285Rec.bufLen=0;
}else ESP8285_CLOSE_UDP();
break;
case esp8285setSTA: //设置ESP8285为客户端并连接服务器 设置好后给服务器发送"ESP8285 SEND OK!"
if(ESP8285SetSTAFlag)
{
ESP8285SetSTAFlag=0;
STATE=esp8285RecieveServer;
WIFI_USART_SendString("SET TCP Client OK!!!!");
}else {
WIFI_SET_TCPClient();
}
break;
case esp8285RecieveServer:
if(ESP8285ServerRecFlag)
{
STATE=esp8285resetSTA;
ESP8285ServerRecFlag=0;
}
break;
case esp8285resetSTA:
if(ESP8285ResetSTAFlag)
{
ESP8285ResetSTAFlag=0;
STATE=esp8285setUDP;
}else{
reset_TCPClient();
}
break;
一周热门 更多>