使用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);
}
}
}
}
希望有大佬能够解答,感激不尽!
|