Чтение обновленных последовательных данных из ESP8266

Я подключил свой ESP8266 к Arduino Uno на выводах 2 и 3 как RX и TX. Я отрегулировал скорость передачи данных и у меня нет проблем с получением данных от ESP8266.

ESP8266 подключается как клиент к серверу и захватывает количество лайков страницы Facebook. Данные на последовательном порту ESP8266 обновляются правильно каждый раз, когда ESP отправляет запрос get на сервер, чтобы получить обновленное количество лайков определенной страницы Facebook.

К сожалению, я не получаю это обновленное количество лайков на моем последовательном порту Arduino. Я всегда получаю одно и то же количество лайков. Мне приходится закрывать последовательное окно и открывать его снова, чтобы получить новое количество. Или сбрасывать Arduino, чтобы получить новое количество лайков.

Так почему же он не публикует последнее количество лайков, отправленное с ESP на Arduino мгновенно, без необходимости перезагрузки Arduino? Возможно, у меня проблема в void loop().

Потому что я отображаю эти данные на внешнем дисплее и мне нужно, чтобы они обновлялись без необходимости каждый раз перезагружать Arduino для получения последних данных.

void loop() {
  char c;
  while (esp8266.available() && c != '\n') {
    c = esp8266.read();
    response += c;
  }
  //Если конец строки
  if (c == '\n') {
    //Получаем только строку лайков
    if(likes = response.substring(response.indexOf("Likes:")+6, response.indexOf("::"))) {
      //Фильтрация некоторых ненужных строк
      if((strstr(likes.c_str(), "URL")) == NULL) {
        currentLikes = atol(likes.c_str());
        Serial.print(currentLikes);
        //Вывод количества лайков на последовательный порт
      }
      Serial.println();
    }
  }
}

, 👍0


1 ответ


1

Спасибо всем. Мне приходилось каждый раз очищать строку ответа.

Я только что добавил response = ""; после Serial.print(currentLikes);

,