50 lines
2.4 KiB
Python
50 lines
2.4 KiB
Python
# Example of sending various messages to a DCCpp/DCC-EX connection.
|
|
#
|
|
# Useful for intializing turnout definitions, power state, etc.
|
|
# adapted from SendReceiveLocoNetPeerXfrMessage.py
|
|
#
|
|
# To use, first copy to your User Files location. Then change as desired for your setup.
|
|
# To run every time JMRI starts, add it as a Startup Action, Run Script, in JMRI Preferences
|
|
|
|
import jmri
|
|
import java
|
|
|
|
whichDCCppConnection = 0; #which DCCpp connection to use if multiples (0 is 1st connection, 1 is 2nd, etc.)
|
|
|
|
# create a minimal listener class needed to call sendDCCppMessage()
|
|
class PeerListener (jmri.jmrix.dccpp.DCCppListener) :
|
|
def message(self, msg) :
|
|
return
|
|
|
|
# function to send a string message to the DCCpp connection
|
|
def send(strMessage) :
|
|
m = jmri.jmrix.dccpp.DCCppMessage.makeMessage(strMessage)
|
|
tc.sendDCCppMessage(m, dl)
|
|
|
|
# get the DCCpp connection stuff once
|
|
dc = jmri.InstanceManager.getList(jmri.jmrix.dccpp.DCCppSystemConnectionMemo).get(whichDCCppConnection);
|
|
tc = dc.getDCCppTrafficController()
|
|
dl = tc.addDCCppListener(0xFF,PeerListener())
|
|
|
|
|
|
#-----------------------------------------------------------
|
|
# list of messages to send, these examples are from DCC-EX 3.1.7+
|
|
send("T 27 DCC 27 1") # Add Turnout DCC: ID:27, Address:27, Subaddr:1
|
|
send("T 28 DCC 28 0") # Add Turnout DCC: ID:28, Address:28, Subaddr:0
|
|
send("T 29 DCC 29 1") # Add Turnout DCC: ID:29, Address:29, Subaddr:1
|
|
send("T 100 SERVO 100 410 205 1") # Add Turnout Servo: ID:100, Pin:100, ThrownPos:410, ClosedPos:205, Profile:1
|
|
send("T 115 SERVO 115 205 410 2") # Add Turnout Servo: ID:115, Pin:115, ThrownPos:205, ClosedPos:410, Profile:1
|
|
send("T 25 VPIN 50") # Add Turnout Vpin: ID:25, Pin:50
|
|
send("T 26 VPIN 164") # Add Turnout Vpin: ID:26, Pin:164
|
|
send("Z 181 181 1") # Add Output: ID: 181, Pin: 181, IFlag: 1
|
|
send("Z 180 180 0") # Add Output: ID: 180, Pin: 180, IFlag: 0
|
|
send("S 111 111 0") # Add Sensor: ID: 111, Pin: 111, Pullup: NO PULLUP
|
|
send("S 112 112 0") # Add Sensor: ID: 112, Pin: 112, Pullup: NO PULLUP
|
|
send("T") # request list of Turnout definitions
|
|
send("S") # request list of Sensor definitions
|
|
send("Z") # request list of Output definitions
|
|
send("s") # request update of all state lists
|
|
# example TrackManager messages, these are from DCC-EX 5.0+
|
|
send("= B PROG") # Set track B to PROG
|
|
send("= B MAIN") # Set track B back to MAIN
|
|
send("=") # request updated trackmanager status |