arduino开发ESP8266第一个字节自动换行-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1753|回复: 2

[未解决] arduino开发ESP8266第一个字节自动换行

[复制链接]
发表于 2021-10-12 11:09 | 显示全部楼层 |阅读模式
使用arduino开发esp8266的nodemcu开发板,8266的具体型号是ESP-12E。写了个简单的串口透传程序,烧录运行后发现模块发送串口收到的数据会自动将第一个字节和剩余字节分开发送。如:使用模块发送123456,网络调试助手会显示:


[2021-10-12 10:38:30.078]# RECV ASCII FROM 58.247.129.43 :56711>
1

[2021-10-12 10:38:30.135]# RECV ASCII FROM 58.247.129.43 :56711>
23456


但8266接收数据时是正常的。

经过测试无论8266是AP模式还是STA模式都有这个问题

怀疑是硬件问题,使用AT指令进行串口透传一切正常

网上搜了好几天,没有发现有相同问题

代码如下:

#include <ESP8266WiFi.h>
const char *ssid     = "Echoz-1";
const char *password = "Studio45592";
WiFiServer server(8000);
//const char *host = "58.247.129.43";//要连接的TCP服务器IP

//const int tcpPort = 18032;//TCP服务器的端口号


void setup()
{
  Serial.begin(115200);
  delay(10);
  IPAddress softLocal(192,168,1,1);  
  IPAddress softGateway(192,168,1,1);
  IPAddress softSubnet(255,255,255,0);
  WiFi.softAPConfig(softLocal, softGateway, softSubnet);  
  WiFi.softAP(ssid, password);
  server.begin();

}


void loop()
{
  WiFiClient client = server.available();
  if (client)
  {
    while(client.connected())
  {
    if(client.available())
    {
    size_t c = client.available();
    uint8_t cbuf[c];
    client.readBytes(cbuf, c);
    Serial.write(cbuf, c);
    }


    if (Serial.available())
  {
    size_t counti = Serial.available();
    uint8_t sbuf[counti];
    Serial.readBytes(sbuf, counti);
    client.write(sbuf, counti);

  }
  }

  }
}


希望有大佬能够解答,感激不尽!
发表于 2021-10-12 12:39 | 显示全部楼层
1、把串口接收的数据储存到一起,根据接收间隔掐断分包
2、使用client.write(包,包大小)发送
3、返回1步骤
发表于 2021-10-12 14:13 | 显示全部楼层
发送端代码的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 23:45 , Processed in 0.078534 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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