ESP8266:如何使用AT+CIPSEND命令发送TCP消息

问题描述 投票:0回答:1

我正在试验 Arduino 和 ESP8266 模块,现在我正在尝试将一些传感器数据发送到 TCP 服务器。为此,我使用 AT+CIPSTART 命令(建立 TCP 连接)和 AT+CIPSEND 发送数据。

如果我使用串行监视器测试它,它工作正常。输入 CIPSEND 命令后,我可以在终端中写入一些文本,该消息/文本将发送到 TCP 服务器。

当我尝试将其放入 Arduino sketch 中时,它会发送一条空消息。连接有效,但我看不到任何数据。

如何使用 TCP 数据包发送消息文本 (msg)?

这是一个代码片段

  // ESP8266 Client
String cmd = "AT+CIPSTART=\"TCP\",\"";// Setup TCP connection
  cmd += IP;
  cmd += "\",3103";
  sendDebug(cmd);
  delay(2000);
  if( Serial.find( "Error" ) )
  {
    debug.print( "RECEIVED: Error\nExit1" );
    return;
  }

  String msg = "test";
  Serial.print( "AT+CIPSEND=" );
  Serial.println( msg.length() );
  if(Serial.find( ">" ) )
  {
    debug.print(">");
    debug.print(msg);
    Serial.print(msg);
  }
  else
  {
    sendDebug( "AT+CIPCLOSE" );//close TCP connection
  }
  if( Serial.find("OK") )
  {
    debug.println( "RECEIVED: OK" );
  }
  else
  {
    debug.println( "RECEIVED: Error\nExit2" );
  }
}
sockets tcp arduino at-command esp8266
1个回答
0
投票

首先选择需要传输多少字符或字节。最好使用软件串口库来连接ESP8266并发送AT命令。

假设您要发送 5 个字节,请输入以下 AT 命令,并且必须延迟 100 毫秒以上才能发送数据。这里 ” " 是回车符并且 " " 是新行。包含此行后,ESP8266 可以理解您已结束命令。

esp.print("AT+CIPSEND=5\r\n");
delay(1000);
esp.print("Hello");

您的代码无法正常工作,因为您使用的是 unvarnished 传输模式。因此,要完成一个数据包,您需要传输 2048 个字节,而您没有写入这些字节。

© www.soinside.com 2019 - 2024. All rights reserved.