基于stm32F031 ESP8285 TCPServer/Client,UDP实现

2019-07-20 23:30发布

                                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;

0条回答

一周热门 更多>