极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18716|回复: 5

用esp8266-01进行web通讯问题

[复制链接]
发表于 2015-12-16 09:50:43 | 显示全部楼层 |阅读模式
我用eps8266-01芯片测试连接WEB服务器。
测试一、直接把esp8266的tx,rx连接到arduino mega2560的tx0,rx0上,测试代码如下
  1. void setup() {
  2.   pinMode(0,INPUT_PULLUP);
  3.   pinMode(1,INPUT_PULLUP);  
  4. }
  5. void loop() {
  6.   // put your main code here, to run repeatedly:
  7. }
复制代码

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


测试二、我用arduino mega2560 的serial1(18,19)来控制esp8266,测试代码如下,
  1. String comdata="";
  2. void setup() {
  3.   
  4. Serial.begin(115200);
  5. Serial1.begin(115200);

  6. Serial1.println("AT+CIPMODE=1");
  7. delay(300);
  8. Serial1.println("AT+CIPSTART="TCP","www.baidu.com",80");
  9. delay(300);
  10. Serial1.println("AT+CIPSEND");
  11. delay(300);
  12. comdata="";
  13. while(Serial1.available()>0)
  14. {
  15. comdata+=char(Serial1.read());
  16. delay(2);
  17. }
  18. Serial.println(comdata);
  19. delay(1000);
  20. }

  21. void loop() {
  22.   
  23. Serial1.println("GET / HTTP/1.1");
  24. Serial1.println("Host:www.baidu.com");
  25. Serial2.println("Connection: close");
  26. Serial1.println("");  

  27. comdata="";
  28. while(Serial1.available()>0)
  29. {
  30. comdata+=char(Serial1.read());
  31. delay(2);
  32. }
  33. Serial.println(comdata);
  34. delay(20000);

  35. }
复制代码

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-12-16 15:58:31 | 显示全部楼层
字符格式问题?
很多串口工具不能正确识别 UTF8或者其他的中文编码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-17 09:56:27 | 显示全部楼层
字符格式问题?
很多串口工具不能正确识别 UTF8或者其他的中文编码。

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

使用道具 举报

发表于 2016-1-22 19:06:07 | 显示全部楼层
我的也是一样,固件版本0.9.2.4,现在怀疑固件版本太低,升级了再试试
回复 支持 反对

使用道具 举报

发表于 2016-1-22 20:59:20 | 显示全部楼层
刚升级到0.9.5.2,一样不行,每POST成功4,5次之后,就会莫名其妙的断掉,只能在arduino setup中写入AT+RST,重启uno 时随便把它重启动一下才能继续POST
回复 支持 反对

使用道具 举报

发表于 2016-1-26 14:36:27 | 显示全部楼层
个人猜测:
你遇到的问题可能是由于baidu.com服务器主动把TCP断开了。
解决思路两种:
A) Serial2.println("Connection: close");  改为 Serial2.println("Connection: keep-alive");
B) loop循环中,发送数据之前重新建立连接
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-1 21:31 , Processed in 0.062922 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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