私は親として子どものシステムとしてRaspberry Pi 3を親として、一連のArduinosを子として作成しています。継続的に実行するコードを作成する
親の主な活動は、I2C、Webサーバーのホスト、Mongo DBクライアントからのデータの保存/呼び出し、GPIOへの読み書きにデータを読み書きすることです。
私が探しているのは、Arduinoのloop()関数のコードがどのように動作するのかと同様に、私の「メイン」コードを永遠に保持する方法です。
私はwhileループがno-noであることを知っていますが、setTimeoutを使用してこの繰り返し実行をトリガーするのは慎重です。なぜなら、コードはI2Cとデータベースの内容によってかなり異なる実行時間を持つからです。
永遠のライブラリーやPM2が私にここで役立つでしょうか?
あなたのコードが純粋に同期しているなら、なぜあなたは 'while(true)'を使わないべきなのかイメージすることはできません。インポートするものについて考える必要があります。次のコードが開始される前に反復が終了するか、特定の間隔でコードが実行されることを確認しますか? –
残念ながら、それは物事が粘着性になるところです。コード内のほとんどすべてが非同期です(たとえば、I2C読み取り/書き込みとMongoDBの更新)。すべての非同期のものはif文の後ろにあり、ブール論理を持ち、それが必要なときだけ呼び出されるようにします。 私はこれについて誤って考えていますか?すべてのことをイベントベースにしようと試みるより良い方法ですか? 私はPLCプログラミングの分野から来ています。そこでは、同期的に動作する環境に非同期コードを記述する必要があります。これはおそらく私の混乱の原因です。 –