OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2372|回复: 0

基于stm32F031 ESP8285 TCPServer/Client,UDP实现

[复制链接]

9

主题

33

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3467
金钱
3467
注册时间
2019-5-15
在线时间
258 小时
发表于 2019-6-22 10:25:21 | 显示全部楼层 |阅读模式
                                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;

APP.rar

1.81 KB, 下载次数: 20

HardWare.rar

3.29 KB, 下载次数: 19

USER.rar

54.08 KB, 下载次数: 28

WIFI.rar

6.4 KB, 下载次数: 14

梦想!是个神奇的东西!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-13 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表