Files
JIMRI/jython/DCC-EX/SendDCCppMessages.py
T
2026-06-17 14:00:51 +02:00

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