楽墨堂ソフトウェア研究室:Digi Connect ME:sntpを使った時刻同期
 
正確な時刻を保持するためにバックグラウンドでsntpサーバに対して定期的に時刻を問い合わせる方法を示す。
開発キットに標準で付属するsntp系サンプルではBSP_INCLUDE_SNTPをTRUEにしてbsp自体の再コンパイルが必要となるが、何故だかうまく動作しない。
ここでは標準のままのbspを利用する方法を示すこととする。
以下のソースコードを/netos63_gnu/src/apps/に展開し32bディレクトリに移動、そしてmake PLATFORM=connectme clean allでビルトする。
sntp_test.zip

説明:
NAinstallTimeZone(NASNTP_GMT_PLUS_9, NASNTP_GMT_PLUS_9, 0, 0);
これは最初に日本のタイムゾーンに指定している。
int	result = NAinstallSntpTime("133.100.9.2", 300, sntp_callback);
次にsntpサーバのIP(例は福岡大学のsntpサーバ)を指定して300秒毎に時刻同期をするように設定している。また時刻同期が行われる毎に呼ばれるコールバック関数sntp_callbackも設定している。
後は正常に設定できた場合は1回目のコールバック関数が呼ばれた後からは1秒毎に時刻を表示する。
ここで気をつけることは、1回目のコールバック関数が呼ばれる前はまだ時刻同期が出来ていないのでtime関数で得られる時刻はめちゃくちゃであるということだ。
 
Copyright© 2006 Laksmi-Do Corp. All rights reserved.
連絡先(@を半角に) develop@laksmido.com