2006/10/30
この連載の最終回です。
ここまでで“【何か】センサー”から受け取るパラメーターに応じて、
・0〜300であれば速度(Km/h)と解釈し、編成の加減速性能に準じてその速度まで加速または減速する。
・301以上であれば停車位置までの距離(Nゲージmm)と解釈して減速→停車し、一定時間後に再発車する。
・-1以下であればその絶対値を停車位置までの距離と解釈して減速→停車し、一定時間後に方向転換してから再発車する。
(1) あるキーを押すと、編成がアクティブになる。
(2) キーを押したときに編成が停車していた場合、発車する。

2006/10/29
今回は、前回示したメソッドsubStopから(SetEventZeroSpeed命令で設定される)停車イベントによってcallされるメソッドsubStopped以降、編成を再出発させるまでの流れを解説します。この一連の流れでは、以下のことをおこないます。
(1) 停車してから一定時間待つ。
(2) グローバル変数VarFlagの値が1であれば方向転換する。
(3) さらに一定時間待つ。
(4) 再出発する。
param
{
name WizStopTime
type int
default 2500
range 1000 30000
guide "停車時間の半分(単位ミリ秒)。停車後、この時間が経過すると方向転換がおこなわれ、さらに同じだけ時間が経過すると出発する。"
}
ここで受け取ったWizStopTimeを使って、(1)〜(4)の処理をおこなうメソッドを以下に示します。

2006/10/28
今回は変数VarParameterの距離だけ走って期待の停車位置にピタリと止めるメソッドsubStopの中身について解説します。ここには、停車した後の動作(必要に応じて方向転換し、再発車する)のための準備も含まれます。
//↓独自の初期化処理(グローバル変数宣言等)はここで
Var VarParameter //パラメータ保存用
Var VarFlag //折り返し運転フラグ
Var IDEvent //イベントID
Var VarStartVoltage //減速開始時の電圧
Var VarStartTime //停車・再出発所要時間
//↑ここまで
では、肝心のメソッドsubStopの中身です。これを既に組み込み済みのメソッドsubSpeedの後に書き加えます。
BeginFunc subStop
//
//VarParameterの距離だけ走行して停車するメソッド
//
//既に停車イベントが設定されていれば、一旦これを解除する
KillEvent IDEvent
//停車イベント設定
SetEventZeroSpeed subStopped IDEvent
//停車所要時間算出
Var TmpSpeed
Var TmpTime
GetCurrentSpeed TmpSpeed
div TmpSpeed 3.6
mov TmpTime VarParameter
mul TmpTime 300.0
div TmpTime TmpSpeed
cnvint TmpTime
//再出発用電圧・加速所要時間記録
GetCurrentVoltage VarStartVoltage
mov VarStartTime TmpTime
//減速開始
SetTimerVoltage 0.0 TmpTime
EndFunc

2006/10/27
少し間が空いたので、もう誰も何も覚えていないかも知れませんが。
与太はさておき。前回までで【何か】センサーから受け取ったパラメータが0〜300の場合、それを到達すべき速度と解釈して、編成の加減速性能に応じて然るべく速度を変化させる部分が完成しました。
今回からは、パラメーターが0以下、または301以上の場合、これを停車位置までの距離と解釈して然るべく停車させ、その後、再発車させる部分について解説していきます。具体的には、こちらで示したメソッドmainからcallされる、メソッドsubStopの中身について、になります。
具体的なスクロールの中身に入るまでに、メソッドsubStop(と、そこからさらにcallされるメソッド)では何を実現すべきなのか、についてまとめておくことにしましょう。
