スクリプトを用いての単純折り返し動作について説明します。
Describes a simple folding operation for the script.
次はいよいよスクリプトでの自動運転ですが、私はよく上記のような画面で動作させています。
Python用のIDLEというソフトウェアも合わせて使っていますが、起動してしまうだけなので特に不要です。
スクリプトを組むときにはテキストエディットで十分です。
よく開いておく「スレッドモニター」という画面です。
起動中のスクリプトと何サイクル目というのがわかります。
またこの画面からスクリプトを停止させます。
もう一つ「LocoNet監視」という画面です。
コマンドステーションから車両やDS52へ送信した内容と
BDL168からコマンドステーションへ送信された内容が次々と表示されていきます。これで内部に踏み込んだ動作の監視ができます。
import jarray
import jmri
class A_tanjun_orikaeshi(jmri.jmrit.automat.AbstractAutomaton) :
def init(self):
self.throttle = self.getThrottle(5, True)
if (self.throttle == None) :
print "Couldn't assign throttle!"
return
def handle(self):
# <forward>
self.throttle.setIsForward(True)
self.throttle.speedSetting = 0.30
self.waitMsec(5000)
self.throttle.speedSetting = 0
self.waitMsec(5000)
# <reverse>
self.throttle.setIsForward(False)
self.throttle.speedSetting = 0.30
self.waitMsec(5000)
self.throttle.speedSetting = 0
self.waitMsec(5000)
return 1# to continue
# end of class definition
# create one of these
a = A_tanjun_orikaeshi()
# set the name
a.setName(" A_tanjun_orikaeshi script")
# and start it running
a.start()
さて実際のスクリプトですが、以下がその例です。
これで実行すると、「5秒前進→5秒停止→5秒後進→5秒停止」を繰り返す動作をします。
※:スクリプトファイル(****.py)は、JMRI→jython フォルダ内へ置いておく必要があります。
上記の赤文字部分が、自分で動かすときによく変更する部分になります。
例をとって説明します。
self.throttle = self.getThrottle(5, True)
ここで動かす対象の車両番号を設定します。
あらかじめ車両側に設定しておいた05番にしています。
self.throttle.setIsForward(True)
車両の進行方向を設定します。
True と入れることで、進行方向を前進にします。
逆方法にするには、False と記述します。
self.throttle.speedSetting = 0.30
車両のスピードを設定します。
0.00〜1.00で設定ができて数字が大きいほうがスピードが速いです。
0.30は、私の持っているEF65ではそこそこリアリティのある速度といった感じです。
これはモーターの特性によっても変わってくるようで、他の車両(ED79)だと0.30は超ノロノロになります。
0 にすると、当然停止になります。
self.waitMsec(5000)
次の命令までの待ち時間を設定します。
5000は5秒の意味で、最小は1msから指定できるようです。
5秒待ってから次の動作に移るようにしたいので、この待ち時間を設定しています。
この 「5秒前進→5秒停止→5秒後進→5秒停止」 を実際に動かすと以下のようになります。