3

我正在放置一个监控一些传感器的系统,并根据它们打开/关闭一些灯。

对于进一步的数据分析,我们还希望将该数据发送到中央服务器,因此我们添加了 Wifi shield。请记住,如果没有网络,系统应该可以正常运行。所以我所做的是在 loop() 中监控网络状态,如果它出现故障则再次连接。

现在,问题是 Wifi.begin() 阻止执行,直到连接或抛出错误。这是不可接受的,因为在此期间系统将无响应

我已经研究过在 Arduino 中使用线程,例如这里,但是这会出现在限制中:

这个库的主要潜在问题之一是,一个挂起的线程将锁定整个系统,因为在当前线程完成其 loop() 函数之前无法调用下一个线程。

那么,任何人有任何指示,想法或经验吗?

谢谢,

胡安

4

1 回答 1

0

您可以创建一个计时器中断,当过期时会使用停滞的阻塞函数杀死线程。

实际上,您可能希望使用诸如Timer1 库之类的中断来执行关键更新。这样您就无需担心在任何地方阻塞代码。

于 2013-03-08T15:56:16.530 回答