我正在尝试使用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的新手。请告诉我我做错了什么。
答案 0 :(得分:0)
你正在做的(可怕的)错误是delay
。要了解如何正确提取您感兴趣的字符串,请阅读this answer。
此外,AT命令行应该以only \r
完全终止,而不是用于EOL的println
。因此,请在最后使用write
并使用嵌入式\r
。