45 lines
1.4 KiB
Python
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)
|
|
|
|
|
|
|