私はクロックを構築しています。私は時計にイーサネットケーブルを差し込んで時計を設定したい。ほとんどの場合、時計はインターネットに接続されません。イーサネットケーブルがない場合、イーサネットは60秒間ブロックを開始します
私はArduinoボードとイーサネットshieldを使用して、タイムサーバーに接続して時刻を読み取ることができます(例>イーサネットのUdpNtpClientサンプルファイルを参照してください)。
シールドがインターネットに接続されていない場合、イーサネットシールドを設定するには、Ethernet.begin()
コールブロックが6 秒になるという問題があります。時計に時間を伝え、イーサネットケーブルが接続されているかどうかを定期的にチェックし、そうであれば時間を修正します。しかし、ほとんどの場合、このチェックは負の結果になります。そのため、毎回60 秒間はフリーズすることができません。
ケーブルがEthernet.begin()
機能よりも速く接続されているかどうかを検出することはできますか? Ethernet.begin()
が非ブロックである「マルチスレッド」ソリューションを作成することは可能ですか?
ありがとうございます!私はこれがうまくいくと思います。誰かも、私はGPSユニットから時間を得ることができると言ったので、私もそれを試みるかもしれません。 – rob
GPSは私にとって偉大なアイデアのように聞こえる、私たちはハードウェアを使って時計を最初に同期させる。ちょうどGPS時間が通常のUTC時間のうち数秒です...また、イーサネットケーブルを差し込む必要はありません。時計プロジェクトで幸運を祈る= D –
「この正確な問題をカバーするGoogleで利用可能なブログ投稿」はどこにありますか? – powtac