Код работает только с Serial.println () в нем - PullRequest
0 голосов
/ 08 июня 2018

У меня есть цикл, который проходит через мои датчики (элементы), а затем отправляет их состояние через MQTT.Я выполняю этот код на платах разработчиков ESP8266, и на немногих на них этот код работает, тогда как на других он выдает исключение через случайное количество времени.

Теперь, пытаясь отладить это, яобнаружил, что, если я раскомментирую Serial.println() в строке, как показано ниже (это должно быть именно то место, которое помещается в любую другую строку, не работает), код работает идеально стабильно в течение нескольких дней.Но как только я удаляю этот println, он начинает падать через более или менее 100 секунд.Что здесь происходит?Что делает Serial.println(), что делает мой код стабильным?

void _loop(String priority)
{
    for(std::vector<IItem*>::iterator it = items.begin(); it != items.end(); ++it) 
    {
        if ((*it)->loopPriority == priority)
        {
            (*it)->loop();
            for (std::map<String, String>::iterator pubChannel = (*it)->pubChannels.begin(); pubChannel != (*it)->pubChannels.end(); pubChannel++ )
            {
                //Serial.println(pubChannel->second);
                mqtt.sendMsg(pubChannel->second, (*it)->command(pubChannel->first));
            }
        }
    }
}
...