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

时间:2016-11-05 12:36:40

标签: sockets tcp arduino at-command esp8266

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

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

当我尝试在Arduino草图中创建它时,它会发送一条空消息。连接有效,但我没有看到任何数据。

如何使用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" );
  }
}

1 个答案:

答案 0 :(得分:0)

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

假设你想发送5个字节。键入以下AT命令,并且在发送数据之前必须给出超过100毫秒的延迟。在这里" \ r"是回车和" \ n"是新线。包含这个之后,ESP8266可以理解你已经结束了命令。

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

您的代码无效,因为您使用的是未涂漆的传输模式。因此,要完成一个数据包,您需要传输2048个字节,而这些字节是您未编写的。