• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

esp8266无法将数据传到APP上

魂牵梦萦 2020-04-13 浏览量:1033
希望通过esp8266令APP显示数据,现在的情况是WIFI能与APP建立连接,通过电脑也能收到串口的数据,但是无法将数据通过wifi发送到手机上,请问如何解决呢?  (电脑的传输线和esp8266使用的是一个串口)
相关程序如下:

单片机主函数:

#include<reg52.h>
#include"dht11.h"
#include "string.h"
#define uchar unsigned char 
#define uint unsigned int
unsigned char idata Rxbuff[50]Rxnum;
extern unsigned char  F16TF16RH;        //温湿度数据
sbit LED1=P2^2;
sbit LED2=P2^4;
unsigned char getflag;//获取标志
void InitUART(void);
void delayms(unsigned int x);
void UART_send_byte(char dat);
void ESP8266_SERVER(void);
void Send_Str(unsigned char *buf);

void main()
{
          unsigned char   Tx_Buf[10];
        delayms(500);
        delayms(1000);          //延时一段时间,让WIFI模块稳定
        InitUART();                        //初始化串口
    ESP8266_SERVER();        //初始化ESP8266
        LED1=0;
        while(1)        
        {          
                        getDHT11(); //获取温湿度值
                          Tx_Buf[0]=F16T/10%10+0x30;        //帧头
                          Tx_Buf[1]=F16T%10+0x30;                 //将温湿度数据送往发送数组送给模块让手机APP显示
                          Tx_Buf[2]= ';';                
                          Tx_Buf[3]=F16RH/10%10+0x30;
                          Tx_Buf[4]=F16RH%10+0x30;
                        Send_Str("AT+CIPSEND=05\r\n");
                        delayms(300);
                           Send_Str(Tx_Buf);//发送数据
                        LED2=0;

        }
}
void InitUART(void)         //这是串口的基本配置,配置他的波特率是9600.这些参数都是标准的。
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}
void delayms(unsigned int x)
{
        unsigned int i;
        while(x--)
                for(i=125;i>0;i--);
}
//UART 发送一字节
void UART_send_byte(char dat)
{
        SBUF = dat;                                        //发送
        while (TI == 0);                        //等待发送完毕
        TI = 0;                                                //清发送完毕中断请求标志位 
}
//UART 发送字符串
void Send_Str(unsigned char *buf)
{
        while (*buf != '\0')
        {
                UART_send_byte(*buf++);
        }
}

void ESP8266_SERVER(void)//建立服务器
{
        ES = 0;
        TI = 1; 
        Send_Str("AT\r\n");
        delayms(500);
        Send_Str("AT\r\n");
        delayms(500);
        Send_Str("AT+CWMODE=2\r\n");          //服务器搭建在WIFI模块上
        delayms(500);
           Send_Str("AT+CWSAP=\"WiFi_mushu\"\"12345678\"53\r\n");          //设置显示名称:wifi密码:12345678
        delayms(500);
        Send_Str("AT+CIPMUX=1\r\n");//启动多连接,建立服务器都需要配置
        delayms(500);        
        Send_Str("AT+CIPSERVER=15000\r\n");//建立服务器
        delayms(500);        
        Send_Str("AT+CIPSTO=0\r\n");
        TI = 0;
        ES = 1;        
}  


APP相关程序
package com.example.wifi_mushu;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class MainActivity extends AppCompatActivity {
    //定义控件
    EditText edGateIp edGateSn;
    Button btnSearch btnLogin;
    //消息机制
    private Handler messageHandler;
    //开辟一个socket
    Socket socket null;

    OutputStream OutputStream null;//定义数据输出流,用于发送数据
    BufferedReader bufferedReader;//声明输入流对象
    InputStream InputStream null;//定义数据输入流,用于接收数据

    //定义逻辑变量,用于判断服务器连接状态
    boolean isConnected false;

    //用于控制读数据线程是否执行
    boolean RD false;

    //测试区域
    Button fs;
    EditText sjfs sjjs;

    @SuppressLint("HandlerLeak")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //控件绑定
        edGateIp = findViewById(R.id.edGateIP);
        edGateSn = findViewById(R.id.edGateSn);
        btnSearch = findViewById(R.id.btnSearch);
        btnLogin = findViewById(R.id.btnLogin);
        //显示全部
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:0

相关问题

问题达人换一批

esp8266无法将数据传到APP上