SSブログ

スロットル操作を検知する [JMRI]

現在スロットルの状態変化を記録する方法を探っています。手始めに今回はスロットルの操作を検知してみました。

import jmri
class ThrottleListener(java.beans.PropertyChangeListener):
    def propertyChange(self, event): ......(1)
        print "propertyname:", event.propertyName
        print "oldvalue:", event.oldValue
        print "newvalue:", event.newValue

class LoadThrottle(jmri.jmrit.automat.AbstractAutomaton) : ......(2)
    def init(self):
        global throttle......(3)
        throttle = self.getThrottle(301, True)
        if throttle == None :
            print "Couldn't assign throttle!"
        throttleListener = ThrottleListener()
        throttle.addPropertyChangeListener(throttleListener)
        return
    def handle(self):......(4)
        return False

LoadThrottle().start()......(5)


スロットルの状態が変化するとpropertyname(スピード、方向、ファンクションなど値の種類)、oldvalue(変化前の値)、newvalue(変化後の値)をscript outputに出力するサンプルです。

検知にはセンサーの反応検知に使ったリスナーを利用しました。propertyChangeメソッド
(1)に反応時の処理を記述しています。
throttleオブジェクトの生成にはAbstractAutomatonクラス(2)を利用します。jmriサンプルスクリプトのthrottles.pyを参考にしたので以前の方法(Pythonで電車を動かす)とは少し定義の仕方が異なります。
今回はthottleをグローバル変数として定義(3)しました。そのためLoadThrottleクラスのインスタンスは不要になるので直接実行(5)しています。また今回はthrottleオブジェクトの生成だけが目的なのでhandleメソッド(4)にはreturn Falseのみ記述します。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。