Test script

[code language=”Java”]
# Title: Test 2
# Purpose: learning about scripting, sensors and turnouts
# Author: Chris Morgan
# Date: 22nd October 2014

import jarray
import jmri

class Test2(jmri.jmrit.automat.AbstractAutomaton) :

def init(self):

# define sensors
print ">>> Defining sensors"
self.mainlineSensor = sensors.provideSensor("mainline")
self.approachpointsSensor = sensors.provideSensor("approachpoints")
self.baypointsSensor = sensors.provideSensor("baypoints")
self.quaypointsSensor = sensors.provideSensor("quaypoints")
self.quaysidingSensor = sensors.provideSensor("quaysiding")
self.quaysideSensor = sensors.provideSensor("quayside")

# set loco throttle
print ">>> Setting up loco throttle"
self.throttle = self.getThrottle(101, True)

# set loco sound on
self.throttle.setF1(True)

print ">>> Setup complete"

return

def handle(self):

print ">>> Running loop…"
# engine is on the bay points and is to be reversed onto the main line
# and then run forward down the quay side before returning to the start

print ">>> Setting points…"
turnouts.provideTurnout("approachpointsop").setState(CLOSED)

print ">>> Setting loco to reverse"
self.throttle.setIsForward(False)
self.waitMsec(1000)

print ">>> Sound whistle"
self.throttle.setF3(True)
self.waitMsec(1000)
self.throttle.setF3(False)

print ">>> move loco"
self.throttle.setSpeedSetting(0.2)
# drain cocks
self.throttle.setF7(True)
self.waitMsec(6000)
self.throttle.setF7(False)

print ">>> waiting for the loco to to get to the main line"
self.waitSensorActive(self.mainlineSensor)

print ">>> at the main line, let the loco run on for a while"
self.waitMsec(6000)

print ">>> stopping the loco"
self.throttle.setSpeedSetting(0)

print ">>> allow the loco to come to a halt"
self.waitMsec(5000)

print ">>> throw approach points"
turnouts.provideTurnout("approachpointsop").setState(THROWN)
print ">>> ensure quay points are thrown correctly"
turnouts.provideTurnout("quaypointsop").setState(THROWN)
self.waitMsec(4000)

print ">>> Guard sounds whistle"
self.throttle.setF9(True)
self.waitMsec(500)
self.throttle.setF9(False)

print ">>> loco prepares to move off"
self.throttle.setIsForward(True) self.waitMsec(2000)
# whistle
self.throttle.setF3(True)
self.waitMsec(500)
self.throttle.setF3(False)

print ">>> moving off"
self.throttle.setSpeedSetting(0.8)
# drain cocks
self.throttle.setF7(True)
self.waitMsec(6000)
self.throttle.setF7(False)

print ">>> wait until the loco gets to the quay side"
self.waitSensorActive(self.quaysideSensor)

print ">>> at the quay side, let it run on a for a while"
self.waitMsec(1000)

print ">>> bring the loco to a halt"
self.throttle.setSpeedSetting(0)

print ">>> wait 15 seonds for the loco to come to a halt"
self.waitMsec(15000)

print ">>> go back again"

print ">>> set the loco to reverse"
self.throttle.setIsForward(False)
print ">>> Sound whistle twice"
self.throttle.setF3(True)
self.waitMsec(1000)
self.throttle.setF3(False)
self.waitMsec(500)
self.throttle.setF3(True)
self.waitMsec(1000)
self.throttle.setF3(False)

print ">>> move of in reverse"
self.throttle.setSpeedSetting(0.8)
# drain cocks
self.throttle.setF7(True)
self.waitMsec(6000)
self.throttle.setF7(False)

print ">>> waiting for the loco to to get to the quay points"
self.waitSensorActive(self.quaypointsSensor)

print ">>> at the quay points so begin slowing the loco now"
self.throttle.setSpeedSetting(0.4)

print ">>> waiting for the loco to to get to the approach points"
self.waitSensorActive(self.approachpointsSensor)

print ">>> at the approach points so let it run on a 4 seconds"
self.waitMsec(4000)

print ">>> begin stopping the loco now"
self.throttle.setSpeedSetting(0)

print ">>> allow 15 seconds for the loco to come to a halt"
self.waitMsec(15000)

print ">>> now put the loco back on the bay points"
turnouts.provideTurnout("approachpointsop").setState(CLOSED)
turnouts.provideTurnout("baypointsop").setState(THROWN)
self.waitMsec(4000)

print ">>> Guard sounds whistle"
self.throttle.setF9(True)
self.waitMsec(500)
self.throttle.setF9(False)

print ">>> loco prepares to move off"
self.throttle.setIsForward(True)
self.waitMsec(2000)
# whistle
self.throttle.setF3(True)
self.waitMsec(500)
self.throttle.setF3(False)

print ">>> moving off"
self.throttle.setSpeedSetting(0.2)
# drain cocks
self.throttle.setF7(True)
self.waitMsec(6000)
self.throttle.setF7(False)

print ">>> wait for the loco to get to the bay points"
self.waitSensorActive(self.baypointsSensor)

print ">>> at the bay points, let the loco run on for 3 seconds"
self.waitMsec(3000)

print ">>> brining the loco to a halt"
self.throttle.setSpeedSetting(0)

# wait 20 seconds before going found again
self.waitMsec(10000)

return 1

# end of class definition

# start up
Test2().start()
[/code]