【ステップ2】スクリプト言語Luaで制御スクリプトを記述
をクリックして編集画面に切り替えます。
をクリックすると制御のためのコードを追加していない最小限の内容になります。
をクリックするとテキストを編集できるアプリケーションが起動され制御スクリプトの内容が表示されます。
function connectClicked() connect('192.168.4.1', 2001) end function reset() print('Reset state...') end function detected(rail, isYellow, train) print(string.format('DETECTED! %d, %s, %d', rail.id, tostring(isYellow), train.id)) end print('Script started...')
function connectClicked()
ハードウェアと接続するとき実行されます。
【ステップ5】で説明します。
function reset()
をクリックして1台目の電車が走行する直前に実行されます。
グローバル変数のテーブルrails経由で、すべてのレールに対して後述のプロパティ、メソッドを使うことができます。
rails[<レール番号>]
例)rails[4].turnLeft()
レール番号4のレールのポイントを左方向に切り替えます。
function detected(rail, isYellow, train)
駅、ポイントに設置したセンサーが電車を検出したとき実行されます。
rail
Railクラスのインスタンスが渡されます。後述のプロパティ、メソッドを使うことができます。
isYellow
黄色のセンサーのときはtrue、緑色のセンサーのときはfalseが渡されます。
train
Trainクラスのインスタンスが渡されます。後述のプロパティを使うことができます。
をクリックしてシミュレータ上の電車を走行させます。停止するときは
をクリックします。
まずfunction reset()に記述された”Reset state…”が画面に表示されます。
次にレールの状態が初期化されます。function reset()にレールの状態を初期化するコードを記述するとそちらが優先されます。
センサーの横を電車が通過するとセンサーは黄色に変わり、function detected()に記述された”DETECTED! …”が画面に表示されます。
function detected()に駅、ポイントを制御するコードが記述されていないため、電車は外周を単調に走行します。
をクリックするとインストール時の制御スクリプトの状態に戻ります。
【ステップ3】以降はこの制御スクリプトを使います。
function detected(rail, isYellow, train)に、駅、ポイントを制御するコードが追加されています。
【注意】ソフトウェアのバージョンによって、閉塞区間用のコードが追加されている場合があります。
function detected(rail, isYellow, train) print(string.format('DETECTED! %d, %s, %d', rail.id, tostring(isYellow), train.id)) if isYellow and rail.isStation then rail.stop() coroutine.yield(0.5 / train.speedFactor) rail.addPassengers() coroutine.yield(1) rail.removePassengers() coroutine.yield(1) rail.go() end if isYellow and rail.isPoint then coroutine.yield(1.5 / train.speedFactor) rail.nextDirection() end end
をクリックしてシミュレータ上の電車を走行させます。停止するときは
をクリックします。
駅のセンサーの横を電車が通過すると、function detected()に記述されたコードによって次のように動作します。
停止
0.5秒待機(電車の速度により調整)
ホームに新しい乗客を追加
1秒待機
ホームから古い乗客を移動
1秒待機
走行
ポイントのセンサーの横を電車が通過すると、次のように動作します。
1.5秒待機(電車の速度により調整)
ポイント切り替え
function detected(rail, isYellow, train)で渡されたRailクラスのインスタンス、Trainクラスのインスタンスに対して下記のプロパティ、メソッドを使えます。