早起きして2時間考えたものが以下です。スロットルに必要な情報を16bitで全部なんとか押し込みました。
ファンクション状態、速度指令(進行方向考慮)、ポイント操作、機関車アドレス渡しまでサポートしてます。レビューをお願いします。
コマンドステーションが定期的(200msおきとか)にデータを取得するので、FIFOみたいなものを作っておいて、順次送りする形になろうかと思います。何を送るかは、スロットル側が判断する形です。コマンドステーション側には、予めスロットルがどこにいるのかは設定しているとします。まだ、自動判別の仕組みは考えてませんが、起動時に特定の信号を2回とかを出す形かなあと思います。
ビット操作だけなので、結構かんたんに実装はできると思います。仕様が確定すれば、コマンドステーション側はライブラリを当社で作成します。スロットル側は各自に任せます。
フジガヤさんの電車でGO!用と、オリジナルのスロットル基板の完成が楽しみです。あやのすけさんもLoconetからS88-Nに乗り換えてくれるだろうと勝手に期待しております。
さて、S88-Nは機器からコマンドステーションへの片方向の通信なので、今取り組んでいるスロットルは
アドレス変更時に現状の車両速度を取り込んでいますので、その仕組みが欲しいですねー。
仕様の提案ありがとうございます。
よいと思いますので、コマンドステーション側のライブラリを進めていただけますでしょうか。
>アドレス変更時に現状の車両速度を取り込んでいますので、その仕組みが欲しいですねー。
二つやり方がありそうです。
(1)RailDataにDCCのパケットを垂れ流す予定なので、S88スロットルが車両アドレスを変更したら、コマンドステーションに速度命令を送る前にパケット取ってくるという感じですかね。
DCCのパケットを見続けると、S88としての動きが滞りそうですので、S88スロットルがアドレス変更をしようとしたら、DCCパケットを調べに行って、速度データが取れたらそのスピードから開始かなあと思います。(取れなかったら0スタート)。
(2)S88スロットルからは速度の相対情報しか送らない。+10するとか−10するとか。そうすると、車両速度を把握する必要がないけれど、スロットルとしていまいちか?ファンクションもプッシュスイッチ的な情報としてしか送らない。