标题:
关于51单片机和ESP8266的通信问题(只能发送AT,就没有后面了)
[打印本页]
作者:
sczust
时间:
2018-10-30 18:47
标题:
关于51单片机和ESP8266的通信问题(只能发送AT,就没有后面了)
用51单片机和esp8266相连接, r/t连接正确。想实现通过单片机向esp8266发送指令设置成客户端,发送数据给连接到此WiFi的另一台服务器。
烧录程序只能发送AT,就没有后面了。程序如下,希望大神们帮我看看
#include<reg52.h>
#include <stdio.h>
#include <intrins.h>
#include <string.h>
#define Buf_Max 10
unsigned char i=0;
unsigned char j=0;
unsigned char idata Rec_Buf[10];
bit Hand(unsigned char *a);
char code str1[]="AT\r\n";
char code str2[]="AT+CWMODE=2\r\n";
char code str3[]="AT+RST\r\n";
char code str4[]="AT+CIPMUX=0\r\n";
char code str5[]="AT+CIPSTART=\"TCP\",\"192.168.4.2\",8234\r\n";
char code str6[]="AT+CIPSEND=6\r\n";
char code str7[]="hello!\r\n";
void CLR_Buf(void)
{
unsigned char k;
for(k=0;k<Buf_Max;k++)
{
Rec_Buf[k] = 0;
}
//i = 0;
}
bit Hand(unsigned char *a)
{
if(strstr(Rec_Buf,a)!=NULL)
return 1;
else
return 0;
}
void Delays(void) //Delay500ms
{
unsigned char i,j,k;
for(k=0;k<2;k++){
for(i=0;i<255;i++)
for(j=0;j<255;j++);
for(i=0;i<255;i++)
for(j=0;j<255;j++);
for(i=0;i<255;i++)
for(j=0;j<140;j++);
}
}
void UARTInit(void)
{
SCON =0x50;
T2CON=0x34;
RCAP2L=0xD9;
RCAP2H=0xFF; //波特率9600
//TR1=1;
EA=1;
//ES=1;
}
void UARTSendByte(unsigned char byte)
{
SBUF=byte;
while(TI==0);
TI=0;
}
void UARTSendString(unsigned char *string)
{
while(*string)
{ UARTSendByte(*string++); }
}
void ESP8266()
{
UARTSendString(str1);
while(!Hand("OK"));
CLR_Buf();
Delays();
UARTSendString(str2);
while(!(Hand("OK")))
{
Delays();
Delays();
}
CLR_Buf();
UARTSendString(str3); //RST
while(!Hand("OK"))
{
Delays();
Delays();
}
CLR_Buf();
UARTSendString(str4);
while(!Hand("OK"))
{
Delays();
Delays();
}
CLR_Buf();
UARTSendString(str5);
while(!Hand("OK"))
{
Delays();
Delays();
}
CLR_Buf();
UARTSendString(str6);
while(!Hand("ready"))
{
Delays();
Delays();
}
CLR_Buf();
while(!Hand(">")){
UARTSendString(str7);
Delays();
Delays();
}
}
void main(void)
{
UARTInit();
while(1)
{
Delays();
Delays();
ESP8266();
Delays();
}
}
void UARTInterrupt(void) interrupt 4
{
ES = 0;
if (RI)
{
RI = 0;
Rec_Buf[j] = SBUF;
//SBUF=Rec_Buf[j];
j++;
if(j>Buf_Max)
{
j = 0;
}
}
if (TI)
{
TI = 0;
}
ES = 1;
}
复制代码
作者:
小猫猫爱吃鱼
时间:
2018-10-31 09:50
有可能出现的问题
1、服务器配置错误
2、IP地址不对,要在同一网段内
3、没有正确实现服务器连接
4、还有其他未知因素
5、可以加我好友,说明一下具体实现功能要求,帮你设计
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1