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

45 lines
1.4 KiB
Python

# Sample of sending and receiving data via a LocoNet PeerXfr message.
#
# This is in two parts:
# * Add a listener to handle the message
# * Send a sample message
# You should copy the two parts into the relevant parts of your own script.
#
# Author: Bob Jacobsen, copyright 2017
# Part of the JMRI distribution
import jmri
import java
# get the LocoNet connection (the first of potentially several LocoNet connections)
myLocoNetConnection = jmri.InstanceManager.getList(jmri.jmrix.loconet.LocoNetSystemConnectionMemo).get(0);
# create the listener class
class PeerListener (jmri.jmrix.loconet.LocoNetListener) :
def message(self, msg) :
if (msg.getOpCode() != jmri.jmrix.loconet.LnConstants.OPC_PEER_XFER ) : return
if (msg.getElement(1) != 0x10 ) : return
if (msg.getNumDataElements() != 16 ) : return
# here is valid Peer Xfr message
data = msg.getPeerXfrData();
# data is an 8-element array, just print
print "Data: ", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]
return
# add one of those to the LocoNet connection
myLocoNetConnection.getLnTrafficController().addLocoNetListener(0xFF,PeerListener())
# now create a message and send it
source = 10
destination = 20
data = [1,2,3,4,5,6,7,8]
code = 5
message = jmri.jmrix.loconet.LocoNetMessage.makePeerXfr(source, destination, data, code)
myLocoNetConnection.getLnTrafficController().sendLocoNetMessage(message)