我正在尝试使用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" );
}
}
答案 0 :(得分:0)
首先,选择传输需要多少字符或字节。最好使用softwareSerial库连接ESP8266并发送AT命令。
假设你想发送5个字节。键入以下AT命令,并且在发送数据之前必须给出超过100毫秒的延迟。在这里" \ r"是回车和" \ n"是新线。包含这个之后,ESP8266可以理解你已经结束了命令。
esp.print("AT+CIPSEND=5\r\n");
delay(1000);
esp.print("Hello");
您的代码无效,因为您使用的是未涂漆的传输模式。因此,要完成一个数据包,您需要传输2048个字节,而这些字节是您未编写的。