3

いくつかのセンサーを監視し、それらに基づいていくつかのライトをオン/オフするシステムを配置しています。

さらにデータを分析するために、そのデータを中央サーバーにも送信したいので、Wifi シールドを追加しました。ネットワークがない場合でも、システムは完全に機能する必要があることに注意してください。だから私がやったことは、 loop() でネットワークのステータスを監視し、ダウンした場合は再度接続することです。

ここでの問題は、 Wifi.begin() が接続されるかエラーがスローされるまで実行をブロックすることです。その間、システムは応答しなくなるため、これは受け入れられません

私は Arduino でスレッドを使用することを検討しまし

このライブラリの主な潜在的な問題の 1 つは、現在のスレッドが loop() 関数を終了するまで次のスレッドを呼び出すことができないため、ハングした単一のスレッドがシステム全体をロックするという事実です。

それで、誰か指針、アイデア、または経験がありますか?

ありがとう、

ファン

4

1 に答える 1

0

失効したブロッキング関数でスレッドを強制終了するタイマー割り込みを作成できます。

実際には、 Timer1 ライブラリなどの割り込みを使用して重要な更新を実行したい場合があります。そうすれば、コードのブロックについて心配する必要はありません。

于 2013-03-08T15:56:16.530 に答える