我需要我的代码在循环中停止,我试图放弃,但方法sendToGCM()继续。我只希望方法执行一次,停止条件
void loop()
{
// Other code here giving temp a value
if (temp > 22)
{
status = false;
value["status"] = status;
while (temp > 22)
{
sendToGCM(); // Sends push notification
break;
}
}
else
{
status = true;
value["status"] = status;
}
}
答案 0 :(得分:2)
因此,如果我理解正确,如果温度达到22度你想发送信息,但只是第一次。如果您中断循环,如果再次执行from(eodRepository + "?delete=true")
.filter(header("CamelFileName").regex(myPattern))
.log(DEBUG, "Decrypting file ${header.CamelFileName}")
.unmarshal(pgpDataFormat)
.log(DEBUG, "Processing file ${header.CamelFileName}")
.unmarshal(myBusinessDataFormat)
.bean(myBean, "processIt")
.log(INFO, "Processed file ${header.CamelFileName}");
函数,仍然会输入它。
为了实现您想要的目标,您的代码需要看起来像这样
loop()
如果你想在每次温度超过22度时发送信息,你需要这样的东西
boolean message_sent;
void loop() {
...
if(temperature > 22 && !message_sent) {
sendToGCM();
message_sent = true;
}
}
编辑:稍微调整了代码以回应Patrick Trentin的评论。该代码假设您只想捕获温度是否超过22度,如果Arduino开始超过22度,则不会发送消息。
答案 1 :(得分:0)
您的问题是您正在设置临时值,然后进入检查该值的循环。一个简单的解决方案是更新while循环中的临时值,使应用程序有机会摆脱while循环。
示例:
void loop()
{
// Other code here giving temp a value
if (temp > 22)
{
status = false;
value["status"] = status;
while (temp > 22)
{
sendToGCM(); // Sends push notification
//Additional code to set the value of temp, allowing the value to
//be greater than 22.
}
}
else
{
status = true;
value["status"] = status;
}
}
请注意,上面的示例旨在在临时值超过22时连续发送推送通知。如果这不是意图,只需从while循环中删除sendToGCM()。如果temp大于22,你仍然只会发送它,因为你有if检查。