野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8740|回复: 4

esp8266与手机双向通信

[复制链接]
发表于 2017-5-3 16:44:41 | 显示全部楼层 |阅读模式
我想让esp8266和手机同时连上家里的wifi,进行双向通信。目前在sta模式下,ESP8266(主控为stm32)可以发数据给手机,但esp8266收不到手机发的消息。是不是选的模式不对?该模式是否可以双向通信?该怎么解决?请各位指教。
回复

使用道具 举报

发表于 2017-5-3 16:48:12 | 显示全部楼层
就是使用TCP例程就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-3 18:12:30 | 显示全部楼层
测试函数如下,目前esp8266发送温度给手机没有问题,但是手机发数据esp8266没有反应,不知道哪里出错了。请指教。
说明:esp8266在sta模式下作为Tcp client,手机的网络调试助手是Tcp server,两者连wifi同一个局域网下通信
void ESP8266_STA_TCPClient_Test(void)
{
        u8 res;
        short read_temp=0;
        float rtemp;
       
        char str[100]={0};
       
        printf ( "\r\n正在配置ESP8266请耐心等待..\r\n" );//

        ESP8266_CH_PD_Pin_SetH;

        ESP8266_AT_Test();//
        ESP8266_Net_Mode_Choose(STA);//AT+CWMODE=1
        while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));//连接WIFI
        ESP8266_Enable_MultipleId ( DISABLE );//启动多连接
        while(!ESP8266_Link_Server(enumTCP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT, Single_ID_0));
        //连接服务端(手机)
        while(!ESP8266_UnvarnishSend());//配置透传发送
        printf ( "\r\n配置esp8266 OK!\r\n" );
       
        while ( 1 )
        {               
                read_temp=DS18B20_Get_Temp();//读取温度
                rtemp=(float)read_temp*1.0/10;//
                sprintf(str,"temp=%.1fC\r\n",rtemp);//转为字符串
                printf(str);串口打印温度(电脑串口调试助手)
                delay_ms(1000);//延时1秒
               
                ESP8266_SendString( ENABLE, str, 0, Single_ID_0 );//发送数据到手机(用网络调试助手接收)
                delay_ms(1000);//目前这一步之前都没有问题
               //接收数据的检测
                ESP8266_ReceiveString(ENABLE);
                if( ESP8266_Fram_Record_Struct .InfBit .FramFinishFlag)
                {
                        pCH=atoi(ESP8266_Fram_Record_Struct.Data_RX_BUF);
                        printf("准备接收数据:\r\n");
            sprintf(str,"receive:%.1f\r\n",pCH);//转为字符串
            printf(str);
                    printf(ESP8266_Fram_Record_Struct.Data_RX_BUF);
                }
                delay_ms(1000);
                if(TcpClosedFlag) //检测是否失去连接
                {
                        delay_ms(10);
                        ESP8266_ExitUnvarnishSend(); //
                        do
                        {
                                res = ESP8266_Get_LinkStatus();     //
                        }        
                        while(!res);
                        if(res == 4)                     //
                        {
                                while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );       
                                while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0 ) );
                        }
                        while(!ESP8266_UnvarnishSend());                                       
                }
        }       
}
回复 支持 反对

使用道具 举报

发表于 2017-8-4 10:03:40 | 显示全部楼层
手机TCP调试助手也调成客户端,试一下
回复 支持 反对

使用道具 举报

发表于 2018-1-11 13:51:50 | 显示全部楼层
这个月有活动关于OneNET的案例学习,想参加的朋友请速度报名!活动时间:2018年1月27日(周六) 地点:深圳科学馆六楼

WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”-(fireBBS野火电子论坛)
http://www.firebbs.cn/forum.php?mod=viewthread&tid=22265&page=1&extra=#pid172919
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-29 01:13 , Processed in 0.038550 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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