スクリプトを用いての単純折り返し動作について説明します。

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秒停止」 を実際に動かすと以下のようになります。