Как можно сравнить текст который идет serial port

Тема в разделе "Arduino & Shields", создана пользователем sasha294, 26 июл 2019.

  1. sasha294

    sasha294 Нерд

    Мне надо сравнить текст который идет от другого микроконтроллера. Текст находится в скобках
    Код (Text):
    (AT+CWMODE=1
    AT+CWMODE=1
    AT+RST
    )
    (AT+RST
    )
     
    Ниже код что я пробовал сравнить
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial s(D6,D5);
    String d;
    void setup() {
    s.begin(115200);
    Serial.begin(115200);
    }
    void loop() {
      if (s.available())
      {
        d = s.readString();
        Serial.println(d);
        Serial.println("("+d+")");
        if(d == "AT+RST\n"){
          Serial.println("132");
        }
    if(d == "AT+CWMODE=1\nAT+CWMODE=1\nAT+RST\n"){
          Serial.println("678");
        }
      }
    }
     
  2. sasha294

    sasha294 Нерд

    Я забыл что в некоторых системах перевод используют \r\n
    увидел в ASCII to text converter
     
  3. Daniil

    Daniil Гуру

    Микроконтроллер работает с цифрами.
    Все символы имеют свои коды (см. ASCII-таблицу).
    Путь 1:
    Собирать массив, который приходит по serial и парсить его, грубо говоря, ручками. (искать скобочки и вычленять нужную информацию).
    Путь 2:
    Рассмотрите класс String. Там есть готовые процедуры для парсинга строк. (см. arduino.cc)