43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
# Sample script to show how to send a C/MRI frame
|
|
#
|
|
#
|
|
# Author: Bob Jacobsen, copyright 2022
|
|
#
|
|
# Part of the JMRI distribution
|
|
|
|
import jmri
|
|
import java
|
|
|
|
# First, example of receiving. Put a listener in place.
|
|
class MyListener (jmri.jmrix.cmri.serial.SerialListener) :
|
|
def message(self, msg) :
|
|
# this handles messages being sent by ignoring them
|
|
return
|
|
def reply(self, msg) :
|
|
print "received incoming Frame"
|
|
print "content: ", msg.toString()
|
|
return
|
|
|
|
listener = MyListener()
|
|
|
|
# Get the traffic controller
|
|
tc = None
|
|
try:
|
|
tc = jmri.InstanceManager.getDefault(jmri.jmrix.cmri.CMRISystemConnectionMemo).getTrafficController()
|
|
tc.addSerialListener(listener)
|
|
except:
|
|
print "No Traffic Controller"
|
|
|
|
# Send an outgoing message frame
|
|
frame = jmri.jmrix.cmri.serial.SerialMessage(3) # 3 byte length for example
|
|
frame.setElement(0, 0x41) # node number
|
|
frame.setElement(1, 0x49) # I
|
|
frame.setElement(2, 0) # type byte
|
|
|
|
if tc != None:
|
|
tc.sendSerialMessage(frame, None)
|
|
print "CMRI frame sent!"
|
|
else:
|
|
print "Sorry, no Traffic Controller!"
|
|
|