魂牵梦萦
获得 0 次赞
帮助过0人
希望通过esp8266令APP显示数据,现在的情况是WIFI能与APP建立连接,通过电脑也能收到串口的数据,但是无法将数据通过wifi发送到手机上,请问如何解决呢? (电脑的传输线和esp8266使用的是一个串口)相关程序如下:单片机主函数:#include<reg52.h>#include"dht11.h"#include "string.h"#define uchar unsigned char #define uint unsigned intunsigned 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); //