だいぶ間が空いてしまいましたが(NETMF のクラスライブラリ ネタは 2ヶ月ぶり!)、GR ファミリー用クラスライブラリに機能を追加しました。
NTP サーバーから日時を取得してマイコンボードのシステム時計に設定する機能です。
.NET Micro Framework は TimeService というクラスを元々持っています。これが NTP サーバーから日時を取得をする機能を持っています。
持っているはずなのですが、なぜか動作しないマイコンボードがあるようなんです。
・・・ほしいですよね、日時の取得。
IoT を考えると、正確な日時は必須と言っていいはず。
ということで、クラスライブラリに実装しました。
実装しましたとは行ったものの、元ネタはネットにちゃんとあって、例えば Stackoverflow あたりで見つかります。
これを GR ファミリー用のクラスライブラリにも入れました。
Static なメソッドで実装しているので、
SystemTimeInitializer.InitSystemTime();
とすれば、マイコンボードのシステム時計に現在日時を設定してくれます。
利用の際は、GrFamily.Utility.NetworkUtility.dll を参照設定してください。
あとは日時が必要になるたびに、みんな大好き DateTime.Now を呼びだしてください。
クラスライブラリは、
https://github.com/netmf-lib-grfamily/GrFamilyLibrary
で公開しています。「ソースは不要」という方はビルド済みの DLL をあわせて公開しているので、これを使ってください。
ただしドキュメント整備が全くできていないので(すみません)、サンプルアプリのソースコードはチラッと眺めてみることをお勧めします。
PS. もしかしたら、いずれ GR-PEACH 用のファームの中に組み込まれるかも。その時が来たらこの実装を公式のファームに昇格させて、クラスライブラリからは卒業させるかも、です。