代码仅适用于Serial.println()

时间:2018-06-07 21:06:35

标签: c++ arduino esp8266 arduino-esp8266

我有一个循环,遍历我的传感器(项目),然后通过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));
            }
        }
    }
}

0 个答案:

没有答案