2017-09-17 16 views
0

ESP8266を使用してUDPパケットを受信し、受信したUDP文字列を使用して特定のLEDを点灯させようとしています。私はUDP文字列を取得し、それをシリアルモニタに表示するArduinoプログラムを作成しました(私はATコマンドを使用したいBTW)。ここで受信パケットからUDP文字列を抽出する(ESP8266)

は、サンプル出力です:

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

問題:

コードIは+IPD,xせずに文字列のみを抽出するにはどうすればよい

#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); 
    } 


} 


私はESP8266を使い慣れました。私が間違っていることを教えてください。

+0

ArduinoはCではありません。 – Olaf

答えて

0

あなたがやっている(ひどく)間違ったことはdelayです。興味のある文字列だけを正しく抽出する方法を知るには、this answerを読んでください。

また、ATコマンドラインは、正確にonly \rで終了する必要があります。printlnはEOLに使用するものではありません。したがって、writeを埋め込み、最後に\rを使用してください。

関連する問題