現在、Education Platformにスレッド機能を実装しています。
スレッド機能というのは、いわば「並列実行」機能です。複数のタスク・コマンドを、並列に実行していくものです。自動運転では、様々なセンサや制御がバラバラのタイミングで動くケースがある(特に複数列車や信号制御)ので、この機能を待ち望んでいた方が多いのではないでしょうか。
ということで、スレッド機能によって、これらの要求に応えようという試みです。
デバッグ版: DOWNLOAD(2021/3/18)
インストール方法: DSair2に差し込むFlashAirの中の隠しフォルダ「SD_WLAN」をZIP内のSD_WLANのファイル一式で上書きしてください。DSwebappでも使用できます。デバッグ版のため、上級者限定となります。バグのリスクがあるため、初心者の方向けではありません。
ブロックには、「スレッド始まり」「スレッド終わり」を用意してます。
「プログラム始まり」「プログラム終わり」には、メインとなるルートのプログラムを書いて、サブ的なスレッド(何かを監視するとか、たまに動くとか)は、「スレッド始まり」「スレッド終わり」を使ってください。ようは、”スレッド”は何個でも立てて良いですが、”プログラム”は1個だけです。
スレッドで監視する処理を実装する場合は、結構悩ますことになるかもです。普通に書くと、以下のようなイメージ(動くかどうかは不明)になります。繰り返しの処理を使って、センサが反応するのをひたすら待つというものになります。DesktopStationSoftwareでは、この部分をあまり意識せずに使えるように、私がソフトを提供していましたが、EducationPlatformでは、自分で組むことになってしまいます。この辺は、簡略化できる関数を用意するのか、プログラミング教育の一環なのだから、そのままで良いのか、識者とディスカッションしながら方向性を考えていこうと思います。
なお、今回のデバッグ版Webアプリには、分離済DSbasicも入ってます。ただ、デバッグはあんまりしてないので、まともに動かないかもしれません。