从收到的数据包中提取UDP字符串(ESP8266)

时间:2017-09-17 14:15:43

标签: arduino esp8266 at-command

我正在尝试使用ESP8266接收UDP数据包并使用收到的UDP字符串转换特定的LED。我已经制作了Arduino程序来获取UDP字符串并将其显示在串行监视器中(BTW我想使用AT命令)。

以下是示例输出:

+IPD,6:foobar
+IPD,6:foobar
+IPD,13:foobarhesbbdb
+IPD,13:foobarhesbbdb

问题:

代码

#include <SoftwareSerial.h>
SoftwareSerial softSerial(8, 9); // RX, TX
String line;
void setup() 
{
  uint32_t baud = 9600;

  Serial.begin(baud);
  softSerial.begin(baud);
  Serial.print("SETUP!! @");
  Serial.println(baud);
  Serial.setTimeout(10);


  softSerial.println("AT+CWJAP=\"***\",\"***\"");

 delay(1000);
  softSerial.write("\n");
  delay(2000);
 softSerial.println("AT+CIPSTART=\"UDP\",\"0\",0,5005,2\"\r");
 softSerial.write("\n");



}

void loop() 

{ 

    while(softSerial.available() > 0) 
    {
      char a = softSerial.read();
      if(a == '\0')
        continue;
      if(a != '\r' && a != '\n' && (a < 32))
        continue;
      Serial.print(a);

    }

        while(Serial.available() > 0)
    {
      char a = Serial.read();
      Serial.write(a);
      softSerial.write(a);
    }


}

如何在不提取+IPD,x的情况下仅提取字符串 我是ESP8266的新手。请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

你正在做的(可怕的)错误是delay。要了解如何正确提取您感兴趣的字符串,请阅读this answer

此外,AT命令行应该以only \r完全终止,而不是用于EOL的println。因此,请在最后使用write并使用嵌入式\r