首页 > 解决方案 > 代码仅适用于其中的 Serial.println()

问题描述

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

标签: c++arduinoesp8266arduino-esp8266

解决方案


推荐阅读