diaboule 发表于 2015-12-16 09:50:43

用esp8266-01进行web通讯问题

我用eps8266-01芯片测试连接WEB服务器。
测试一、直接把esp8266的tx,rx连接到arduino mega2560的tx0,rx0上,测试代码如下
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}

我用串口调试工具发送右侧的1,2,5,6,7,8,9,再加一个空行,结果如下,应该算是正常连接成功(家用无线路由之前连过,重启不用设置)。


测试二、我用arduino mega2560 的serial1(18,19)来控制esp8266,测试代码如下,
String comdata="";
void setup() {

Serial.begin(115200);
Serial1.begin(115200);

Serial1.println("AT+CIPMODE=1");
delay(300);
Serial1.println("AT+CIPSTART=\"TCP\",\"www.baidu.com\",80");
delay(300);
Serial1.println("AT+CIPSEND");
delay(300);
comdata="";
while(Serial1.available()>0)
{
comdata+=char(Serial1.read());
delay(2);
}
Serial.println(comdata);
delay(1000);
}

void loop() {

Serial1.println("GET / HTTP/1.1");
Serial1.println("Host:www.baidu.com");
Serial2.println("Connection: close");
Serial1.println("");

comdata="";
while(Serial1.available()>0)
{
comdata+=char(Serial1.read());
delay(2);
}
Serial.println(comdata);
delay(20000);

}
结果有很多数据丢失,还有很多乱码。一开始以为是数据太大,接收缓冲区不够用。我换了个自己的web页面,就几字节的数据,但还是有丢失和乱码。请问哪里可能出了问题?

darkorigin 发表于 2015-12-16 15:58:31

字符格式问题?
很多串口工具不能正确识别 UTF8或者其他的中文编码。

diaboule 发表于 2015-12-17 09:56:27

字符格式问题?
很多串口工具不能正确识别 UTF8或者其他的中文编码。
应该不是字符格式,测试一里直接通过tx0,rx0所有数据都能正常获取到,没有字符格式错误。问题出在用serial1进行http协议传输上。当向www.baidu.com的80端口发起get请求,连接成功返回“http/1.1 200 OK......”之后,传送的数据就出差错了。之前我用uno的软串口传输也出这样错误,我怀疑是软串口的波特率不稳定,为此还特意换了用mega,没想到结果还是这样。。。。

flying03 发表于 2016-1-22 19:06:07

我的也是一样,固件版本0.9.2.4,现在怀疑固件版本太低,升级了再试试

flying03 发表于 2016-1-22 20:59:20

刚升级到0.9.5.2,一样不行,每POST成功4,5次之后,就会莫名其妙的断掉,只能在arduino setup中写入AT+RST,重启uno 时随便把它重启动一下才能继续POST

maidoo 发表于 2016-1-26 14:36:27

个人猜测:
你遇到的问题可能是由于baidu.com服务器主动把TCP断开了。
解决思路两种:
A) Serial2.println("Connection: close");改为 Serial2.println("Connection: keep-alive");
B) loop循环中,发送数据之前重新建立连接
页: [1]
查看完整版本: 用esp8266-01进行web通讯问题